Exemple #1
0
def main():
    PRINT_TITLE = False

    nowdate = datetime.datetime.now()

    if not os.path.exists("plots"):
        os.makedirs("plots")

    if not os.path.exists("tables"):
        os.makedirs("tables")

    lines = ["-k", "--k", "-.k"]
    linecycler = cycle(lines)

    test_data_Poisson_initial = poisson.Bmmap5PoissonPhPh()
    test_data_Poisson = poisson.Bmmap5PoissonPhPh()

    test_data_02_initial = cor02.Bmmap502PhPh()
    test_data_02 = cor02.Bmmap502PhPh()

    test_data_04_initial = cor04.Bmmap504PhPh()
    test_data_04 = cor04.Bmmap504PhPh()

    qs1 = qs.TwoPrioritiesQueueingSystem(test_data_Poisson_initial)
    qs2 = qs.TwoPrioritiesQueueingSystem(test_data_02_initial)
    qs3 = qs.TwoPrioritiesQueueingSystem(test_data_04_initial)

    lambdas = {"poisson": [], "cor02": [], "cor04": [], "poisson_PH_poisson_NoRemoval": [], "poisson_NoRemoval": []}
    Ls = {"poisson": [], "cor02": [], "cor04": [], "poisson_PH_poisson_NoRemoval": [], "poisson_NoRemoval": []}
    LsPrior = {"poisson": [], "cor02": [], "cor04": []}
    sigmas = {"poisson": [], "cor02": [], "cor04": []}
    sigmas_prior = {"poisson": [], "cor02": [], "cor04": []}
    Ps = {"poisson": [], "cor02": [], "cor04": [], "poisson_PH_poisson_NoRemoval": [], "poisson_NoRemoval": []}
    Ps_alg = {"poisson": [], "cor02": [], "cor04": [], "poisson_PH_poisson_NoRemoval": [], "poisson_NoRemoval": []}
    P1s = {"poisson": [], "cor02": [], "cor04": [], "poisson_PH_poisson_NoRemoval": [], "poisson_NoRemoval": []}
    P2s = {"poisson": [], "cor02": [], "cor04": [], "poisson_PH_poisson_NoRemoval": [], "poisson_NoRemoval": []}
    Ps_imp = {"poisson": [], "cor02": [], "cor04": [], "poisson_PH_poisson_NoRemoval": [], "poisson_NoRemoval": []}
    w1s = {"poisson": [], "cor02": [], "cor04": []}
    w2s = {"poisson": [], "cor02": [], "cor04": []}

    table_poisson = []
    table_cor_02 = []
    table_cor_04 = []

    for coef in tqdm(np.linspace(1, 150, 150)):
        test_data_Poisson.test_matrD = test_data_Poisson_initial.test_matrD * coef
        test_data_Poisson.test_matrD_0 = test_data_Poisson_initial.test_matrD_0 * coef

        test_data_02.test_matrD = test_data_02_initial.test_matrD * coef
        test_data_02.test_matrD_0 = test_data_02_initial.test_matrD_0 * coef

        test_data_04.test_matrD = test_data_04_initial.test_matrD * coef
        test_data_04.test_matrD_0 = test_data_04_initial.test_matrD_0 * coef

        qs1 = qs.TwoPrioritiesQueueingSystem(test_data_Poisson)
        stationary_probas1 = qs1.calc_stationary_probas(False)

        qs2 = qs.TwoPrioritiesQueueingSystem(test_data_02)
        stationary_probas2 = qs2.calc_stationary_probas(False)

        qs3 = qs.TwoPrioritiesQueueingSystem(test_data_04)
        stationary_probas3 = qs3.calc_stationary_probas(False)

        lambdas["poisson"].append(qs1.queries_stream.avg_intensity)
        Ls["poisson"].append(qs1.calc_avg_buffer_queries_num(stationary_probas1))
        LsPrior["poisson"].append(qs1.calc_avg_buffer_prior_queries_num(stationary_probas1))
        sigmas["poisson"].append(qs1.calc_sd_buffer_queries_num(stationary_probas1))
        sigmas_prior["poisson"].append(qs1.calc_sd_buffer_prior_queries_num(stationary_probas1))
        Ps["poisson"].append(qs1.calc_query_lost_p(stationary_probas1))
        Ps_alg["poisson"].append(qs1.calc_query_lost_ps_buffer_full(stationary_probas1)[1])
        P1s["poisson"].append(qs1.calc_query_lost_ps_buffer_full(stationary_probas1)[0][0])
        P2s["poisson"].append(qs1.calc_query_lost_ps_buffer_full(stationary_probas1)[0][1])
        Ps_imp["poisson"].append(qs1.calc_nonprior_query_lost_timer(stationary_probas1))
        w1s["poisson"].append(qs1.avg_wait_time_1(stationary_probas1))
        w2s["poisson"].append(qs1.avg_wait_time_2(stationary_probas1))

        lambdas["cor02"].append(qs2.queries_stream.avg_intensity)
        Ls["cor02"].append(qs2.calc_avg_buffer_queries_num(stationary_probas2))
        LsPrior["cor02"].append(qs2.calc_avg_buffer_prior_queries_num(stationary_probas2))
        sigmas["cor02"].append(qs2.calc_sd_buffer_queries_num(stationary_probas2))
        sigmas_prior["cor02"].append(qs2.calc_sd_buffer_prior_queries_num(stationary_probas2))
        Ps["cor02"].append(qs2.calc_query_lost_p(stationary_probas2))
        Ps_alg["cor02"].append(qs2.calc_query_lost_ps_buffer_full(stationary_probas2)[1])
        P1s["cor02"].append(qs2.calc_query_lost_ps_buffer_full(stationary_probas2)[0][0])
        P2s["cor02"].append(qs2.calc_query_lost_ps_buffer_full(stationary_probas2)[0][1])
        Ps_imp["cor02"].append(qs2.calc_nonprior_query_lost_timer(stationary_probas2))
        w1s["cor02"].append(qs2.avg_wait_time_1(stationary_probas2))
        w2s["cor02"].append(qs2.avg_wait_time_2(stationary_probas2))

        lambdas["cor04"].append(qs3.queries_stream.avg_intensity)
        Ls["cor04"].append(qs3.calc_avg_buffer_queries_num(stationary_probas3))
        LsPrior["cor04"].append(qs3.calc_avg_buffer_prior_queries_num(stationary_probas3))
        sigmas["cor04"].append(qs3.calc_sd_buffer_queries_num(stationary_probas3))
        sigmas_prior["cor04"].append(qs3.calc_sd_buffer_prior_queries_num(stationary_probas3))
        Ps["cor04"].append(qs3.calc_query_lost_p(stationary_probas3))
        Ps_alg["cor04"].append(qs3.calc_query_lost_ps_buffer_full(stationary_probas3)[1])
        P1s["cor04"].append(qs3.calc_query_lost_ps_buffer_full(stationary_probas3)[0][0])
        P2s["cor04"].append(qs3.calc_query_lost_ps_buffer_full(stationary_probas3)[0][1])
        Ps_imp["cor04"].append(qs3.calc_nonprior_query_lost_timer(stationary_probas3))
        w1s["cor04"].append(qs3.avg_wait_time_1(stationary_probas3))
        w2s["cor04"].append(qs3.avg_wait_time_2(stationary_probas3))

        table_poisson.append(
            [lambdas["poisson"][-1], P1s["poisson"][-1], P2s["poisson"][-1], Ps_alg["poisson"][-1],
             Ps_imp["poisson"][-1], w1s["poisson"][-1], w2s["poisson"][-1]])
        table_cor_02.append(
            [lambdas["cor02"][-1], P1s["cor02"][-1], P2s["cor02"][-1], Ps_alg["cor02"][-1], Ps_imp["cor02"][-1],
             w1s["cor02"][-1], w2s["cor02"][-1]])
        table_cor_04.append(
            [lambdas["cor04"][-1], P1s["cor04"][-1], P2s["cor04"][-1], Ps_alg["cor04"][-1], Ps_imp["cor04"][-1],
             w1s["cor04"][-1], w2s["cor04"][-1]])

    plt.plot(lambdas["poisson"], Ls["poisson"], next(linecycler))
    plt.plot(lambdas["cor02"], Ls["cor02"], next(linecycler))
    plt.plot(lambdas["cor04"], Ls["cor04"], next(linecycler))
    plt.ylabel(r'$L$')
    plt.xlabel(r'$\lambda$')
    plt.legend((r'$c_{cor}^{(1)}$ =' + str(abs(round(qs1.queries_stream.c_cor[0], 3))) + r', $c_{cor}^{(2)}$=' + str(
        abs(round(qs1.queries_stream.c_cor[1], 3))),
                r'$c_{cor}^{(1)}$ =' + str(round(qs2.queries_stream.c_cor[0], 3)) + r', $c_{cor}^{(2)}$=' + str(
                    round(qs2.queries_stream.c_cor[1], 3)),
                r'$c_{cor}^{(1)}$ =' + str(round(qs3.queries_stream.c_cor[0], 3)) + r', $c_{cor}^{(2)}$=' + str(
                    round(qs3.queries_stream.c_cor[1], 3))
                ),
               loc=0)
    if PRINT_TITLE:
        plt.title('Зависимость L от λ при различных\n коэффициентах корреляции длин двух соседних интервалов')

    plt.savefig(str.format("plots/BMMAP5_L_lambda_cor_0_02_04_{}.png", nowdate),
                dpi=400,
                bbox_inches='tight')
    plt.close()

    plt.plot(lambdas["poisson"], LsPrior["poisson"], next(linecycler))
    plt.plot(lambdas["cor02"], LsPrior["cor02"], next(linecycler))
    plt.plot(lambdas["cor04"], LsPrior["cor04"], next(linecycler))
    plt.ylabel(r'$L^{(prior)}$')
    plt.xlabel(r'$\lambda$')
    plt.legend((r'$c_{cor}^{(1)}$ =' + str(abs(round(qs1.queries_stream.c_cor[0], 3))) + r', $c_{cor}^{(2)}$=' + str(
        abs(round(qs1.queries_stream.c_cor[1], 3))),
                r'$c_{cor}^{(1)}$ =' + str(round(qs2.queries_stream.c_cor[0], 3)) + r', $c_{cor}^{(2)}$=' + str(
                    round(qs2.queries_stream.c_cor[1], 3)),
                r'$c_{cor}^{(1)}$ =' + str(round(qs3.queries_stream.c_cor[0], 3)) + r', $c_{cor}^{(2)}$=' + str(
                    round(qs3.queries_stream.c_cor[1], 3))
                ),
               loc=0)
    if PRINT_TITLE:
        plt.title('Зависимость L_prior от λ при различных\n коэффициентах корреляции длин двух соседних интервалов')

    plt.savefig(str.format("plots/BMMAP5_L_prior_lambda_cor_0_02_04_{}.png", nowdate),
                dpi=400,
                bbox_inches='tight')
    plt.close()

    plt.plot(lambdas["poisson"], sigmas["poisson"], next(linecycler))
    plt.plot(lambdas["cor02"], sigmas["cor02"], next(linecycler))
    plt.plot(lambdas["cor04"], sigmas["cor04"], next(linecycler))
    plt.ylabel(r'$\sigma$')
    plt.xlabel(r'$\lambda$')
    plt.legend((r'$c_{cor}^{(1)}$ =' + str(abs(round(qs1.queries_stream.c_cor[0], 3))) + r', $c_{cor}^{(2)}$=' + str(
        abs(round(qs1.queries_stream.c_cor[1], 3))),
                r'$c_{cor}^{(1)}$ =' + str(round(qs2.queries_stream.c_cor[0], 3)) + r', $c_{cor}^{(2)}$=' + str(
                    round(qs2.queries_stream.c_cor[1], 3)),
                r'$c_{cor}^{(1)}$ =' + str(round(qs3.queries_stream.c_cor[0], 3)) + r', $c_{cor}^{(2)}$=' + str(
                    round(qs3.queries_stream.c_cor[1], 3))
                ),
               loc=0)
    if PRINT_TITLE:
        plt.title('Зависимость sigma от λ при различных\n коэффициентах корреляции длин двух соседних интервалов')

    plt.savefig(str.format("plots/BMMAP5_sigma_lambda_cor_0_02_04_{}.png", nowdate),
                dpi=400,
                bbox_inches='tight')
    plt.close()

    plt.plot(lambdas["poisson"], sigmas_prior["poisson"], next(linecycler))
    plt.plot(lambdas["cor02"], sigmas_prior["cor02"], next(linecycler))
    plt.plot(lambdas["cor04"], sigmas_prior["cor04"], next(linecycler))
    plt.ylabel(r'$\sigma^{(prior})$')
    plt.xlabel(r'$\lambda$')
    plt.legend((r'$c_{cor}^{(1)}$ =' + str(abs(round(qs1.queries_stream.c_cor[0], 3))) + r', $c_{cor}^{(2)}$=' + str(
        abs(round(qs1.queries_stream.c_cor[1], 3))),
                r'$c_{cor}^{(1)}$ =' + str(round(qs2.queries_stream.c_cor[0], 3)) + r', $c_{cor}^{(2)}$=' + str(
                    round(qs2.queries_stream.c_cor[1], 3)),
                r'$c_{cor}^{(1)}$ =' + str(round(qs3.queries_stream.c_cor[0], 3)) + r', $c_{cor}^{(2)}$=' + str(
                    round(qs3.queries_stream.c_cor[1], 3))
                ),
               loc=0)
    if PRINT_TITLE:
        plt.title('Зависимость sigma^{(prior}) от λ при различных\n коэффициентах корреляции длин двух соседних интервалов')

    plt.savefig(str.format("plots/BMMAP5_sigma_prior_lambda_cor_0_02_04_{}.png", nowdate),
                dpi=400,
                bbox_inches='tight')
    plt.close()

    # DEPRECATED
    # plt.plot(lambdas["poisson"], Ps["poisson"])
    # plt.plot(lambdas["cor02"], Ps["cor02"])
    # plt.plot(lambdas["cor04"], Ps["cor04"])
    # plt.ylabel(r'$P_{loss}$')
    # plt.xlabel(r'$\lambda$')
    # plt.legend((r'$c_{cor}^{(1)}$ =' + str(abs(round(qs1.queries_stream.c_cor[0], 3))) + r', $c_{cor}^{(2)}$=' + str(
    #     abs(round(qs1.queries_stream.c_cor[1], 3))),
    #             r'$c_{cor}^{(1)}$ =' + str(round(qs2.queries_stream.c_cor[0], 3)) + r', $c_{cor}^{(2)}$=' + str(
    #                 round(qs2.queries_stream.c_cor[1], 3)),
    #             r'$c_{cor}^{(1)}$ =' + str(round(qs3.queries_stream.c_cor[0], 3)) + r', $c_{cor}^{(2)}$=' + str(
    #                 round(qs3.queries_stream.c_cor[1], 3))
    #             ),
    #            loc=0)
    # plt.title('Зависимость P_loss от λ при различных\n коэффициентах корреляции длин двух соседних интервалов')
    #
    # plt.savefig(str.format("plots/BMMAP5_P_loss_lambda_cor_0_02_04_{}.png", nowdate),
    #             bbox_inches='tight')
    # plt.close()

    plt.plot(lambdas["poisson"], Ps_alg["poisson"], next(linecycler))
    plt.plot(lambdas["cor02"], Ps_alg["cor02"], next(linecycler))
    plt.plot(lambdas["cor04"], Ps_alg["cor04"], next(linecycler))
    plt.ylabel(r'$P_{loss}$')
    plt.xlabel(r'$\lambda$')
    plt.legend((r'$c_{cor}^{(1)}$ =' + str(abs(round(qs1.queries_stream.c_cor[0], 3))) + r', $c_{cor}^{(2)}$=' + str(
        abs(round(qs1.queries_stream.c_cor[1], 3))),
                r'$c_{cor}^{(1)}$ =' + str(round(qs2.queries_stream.c_cor[0], 3)) + r', $c_{cor}^{(2)}$=' + str(
                    round(qs2.queries_stream.c_cor[1], 3)),
                r'$c_{cor}^{(1)}$ =' + str(round(qs3.queries_stream.c_cor[0], 3)) + r', $c_{cor}^{(2)}$=' + str(
                    round(qs3.queries_stream.c_cor[1], 3))
                ),
               loc=0)
    if PRINT_TITLE:
        plt.title('Зависимость P_loss_alg от λ при различных\n коэффициентах корреляции длин двух соседних интервалов')

    plt.savefig(str.format("plots/BMMAP5_P_loss_alg_lambda_cor_0_02_04_{}.png", nowdate),
                dpi=400,
                bbox_inches='tight')
    plt.close()

    plt.plot(lambdas["poisson"], P1s["poisson"], next(linecycler))
    plt.plot(lambdas["cor02"], P1s["cor02"], next(linecycler))
    plt.plot(lambdas["cor04"], P1s["cor04"], next(linecycler))
    plt.ylabel(r'$P_{loss}^{(1)}$')
    plt.xlabel(r'$\lambda$')
    plt.legend((r'$c_{cor}^{(1)}$ =' + str(abs(round(qs1.queries_stream.c_cor[0], 3))) + r', $c_{cor}^{(2)}$=' + str(
        abs(round(qs1.queries_stream.c_cor[1], 3))),
                r'$c_{cor}^{(1)}$ =' + str(round(qs2.queries_stream.c_cor[0], 3)) + r', $c_{cor}^{(2)}$=' + str(
                    round(qs2.queries_stream.c_cor[1], 3)),
                r'$c_{cor}^{(1)}$ =' + str(round(qs3.queries_stream.c_cor[0], 3)) + r', $c_{cor}^{(2)}$=' + str(
                    round(qs3.queries_stream.c_cor[1], 3))
                ),
               loc=0)
    if PRINT_TITLE:
        plt.title('Зависимость P1_loss от λ при различных\n коэффициентах корреляции длин двух соседних интервалов')

    plt.savefig(str.format("plots/BMMAP5_P1_loss_lambda_cor_0_02_04_{}.png", nowdate),
                dpi=400,
                bbox_inches='tight')
    plt.close()

    plt.plot(lambdas["poisson"], P2s["poisson"], next(linecycler))
    plt.plot(lambdas["cor02"], P2s["cor02"], next(linecycler))
    plt.plot(lambdas["cor04"], P2s["cor04"], next(linecycler))
    plt.ylabel(r'$P_{loss}^{(2)}$')
    plt.xlabel(r'$\lambda$')
    plt.legend((r'$c_{cor}^{(1)}$ =' + str(abs(round(qs1.queries_stream.c_cor[0], 3))) + r', $c_{cor}^{(2)}$=' + str(
        abs(round(qs1.queries_stream.c_cor[1], 3))),
                r'$c_{cor}^{(1)}$ =' + str(round(qs2.queries_stream.c_cor[0], 3)) + r', $c_{cor}^{(2)}$=' + str(
                    round(qs2.queries_stream.c_cor[1], 3)),
                r'$c_{cor}^{(1)}$ =' + str(round(qs3.queries_stream.c_cor[0], 3)) + r', $c_{cor}^{(2)}$=' + str(
                    round(qs3.queries_stream.c_cor[1], 3))
                ),
               loc=0)
    if PRINT_TITLE:
        plt.title('Зависимость P2_loss от λ при различных\n коэффициентах корреляции длин двух соседних интервалов')

    plt.savefig(str.format("plots/BMMAP5_P2_loss_lambda_cor_0_02_04_{}.png", nowdate),
                dpi=400,
                bbox_inches='tight')
    plt.close()

    plt.plot(lambdas["poisson"], Ps_imp["poisson"], next(linecycler))
    plt.plot(lambdas["cor02"], Ps_imp["cor02"], next(linecycler))
    plt.plot(lambdas["cor04"], Ps_imp["cor04"], next(linecycler))
    plt.ylabel(r'$P_{loss}^{(imp)}$')
    plt.xlabel(r'$\lambda$')
    plt.legend((r'$c_{cor}^{(1)}$ =' + str(abs(round(qs1.queries_stream.c_cor[0], 3))) + r', $c_{cor}^{(2)}$=' + str(
        abs(round(qs1.queries_stream.c_cor[1], 3))),
                r'$c_{cor}^{(1)}$ =' + str(round(qs2.queries_stream.c_cor[0], 3)) + r', $c_{cor}^{(2)}$=' + str(
                    round(qs2.queries_stream.c_cor[1], 3)),
                r'$c_{cor}^{(1)}$ =' + str(round(qs3.queries_stream.c_cor[0], 3)) + r', $c_{cor}^{(2)}$=' + str(
                    round(qs3.queries_stream.c_cor[1], 3))
                ),
               loc=0)
    if PRINT_TITLE:
        plt.title('Зависимость P_loss_imp от λ при различных\n коэффициентах корреляции длин двух соседних интервалов')

    plt.savefig(str.format("plots/BMMAP5_P_loss_imp_lambda_cor_0_02_04_{}.png", nowdate),
                dpi=400,
                bbox_inches='tight')
    plt.close()

    plt.plot(lambdas["poisson"], w1s["poisson"], next(linecycler))
    plt.plot(lambdas["cor02"], w1s["cor02"], next(linecycler))
    plt.plot(lambdas["cor04"], w1s["cor04"], next(linecycler))
    plt.ylabel(r'$\bar{w}_1$')
    plt.xlabel(r'$\lambda$')
    plt.legend((r'$c_{cor}^{(1)}$ =' + str(abs(round(qs1.queries_stream.c_cor[0], 3))) + r', $c_{cor}^{(2)}$=' + str(
        abs(round(qs1.queries_stream.c_cor[1], 3))),
                r'$c_{cor}^{(1)}$ =' + str(round(qs2.queries_stream.c_cor[0], 3)) + r', $c_{cor}^{(2)}$=' + str(
                    round(qs2.queries_stream.c_cor[1], 3)),
                r'$c_{cor}^{(1)}$ =' + str(round(qs3.queries_stream.c_cor[0], 3)) + r', $c_{cor}^{(2)}$=' + str(
                    round(qs3.queries_stream.c_cor[1], 3))
                ),
               loc=0)
    if PRINT_TITLE:
        plt.title(
            'Зависимость $bar{w}_1$ от $lambda$ при различных \n коэффициентах корреляции длин двух соседних интервалов')

    plt.savefig(str.format("plots/BMMAP5_w1_lambda_cor_{}.png", nowdate),
                dpi=400,
                bbox_inches='tight')
    plt.close()

    plt.plot(lambdas["poisson"], w2s["poisson"], next(linecycler))
    plt.plot(lambdas["cor02"], w2s["cor02"], next(linecycler))
    plt.plot(lambdas["cor04"], w2s["cor04"], next(linecycler))
    plt.ylabel(r'$\bar{w}_2$')
    plt.xlabel(r'$\lambda$')
    plt.legend((r'$c_{cor}^{(1)}$ =' + str(abs(round(qs1.queries_stream.c_cor[0], 3))) + r', $c_{cor}^{(2)}$=' + str(
        abs(round(qs1.queries_stream.c_cor[1], 3))),
                r'$c_{cor}^{(1)}$ =' + str(round(qs2.queries_stream.c_cor[0], 3)) + r', $c_{cor}^{(2)}$=' + str(
                    round(qs2.queries_stream.c_cor[1], 3)),
                r'$c_{cor}^{(1)}$ =' + str(round(qs3.queries_stream.c_cor[0], 3)) + r', $c_{cor}^{(2)}$=' + str(
                    round(qs3.queries_stream.c_cor[1], 3))
                ),
               loc=0)
    if PRINT_TITLE:
        plt.title(
            'Зависимость $bar{w}_2$ от $lambda$ при различных \n коэффициентах корреляции длин двух соседних интервалов')

    plt.savefig(str.format("plots/BMMAP5_w2_lambda_cor_{}.png", nowdate),
                dpi=400,
                bbox_inches='tight')
    plt.close()

    table_poisson = np.asarray(table_poisson)
    table_cor_02 = np.asarray(table_cor_02)
    table_cor_04 = np.asarray(table_cor_04)

    np.savetxt(str.format("tables/BMMAP5_P_losses_lambda_cor_poisson_{}.csv", nowdate), table_poisson,
               header=r'$\lambda$, $P_{loss}^{(1)}$, $P_{loss}^{(2)}$, $P_{loss}, P_{loss}^{(imp)}$, $\bar{w}_1$, $\bar{w}_2$',
               delimiter=',',
               fmt='%.5f', comments='')
    np.savetxt(str.format("tables/BMMAP5_P_losses_lambda_cor_02_{}.csv", nowdate), table_cor_02,
               header=r'$\lambda$, $P_{loss}^{(1)}$, $P_{loss}^{(2)}$, $P_{loss}, P_{loss}^{(imp)}$, $\bar{w}_1$, $\bar{w}_2$',
               delimiter=',',
               fmt='%.5f', comments='')
    np.savetxt(str.format("tables/BMMAP5_P_losses_lambda_cor_04_{}.csv", nowdate), table_cor_04,
               header=r'$\lambda$, $P_{loss}^{(1)}$, $P_{loss}^{(2)}$, $P_{loss}, P_{loss}^{(imp)}$, $\bar{w}_1$, $\bar{w}_2$',
               delimiter=',',
               fmt='%.5f', comments='')
Exemple #2
0
def main():
    test_data_Poisson_initial = poisson.MmapPoissonPhPh()
    test_data_Poisson = poisson.MmapPoissonPhPh()

    test_data_02_initial = cor02.Mmap02PhPh()
    test_data_02 = cor02.Mmap02PhPh()

    test_data_04_initial = cor04.Mmap04PhPh()
    test_data_04 = cor04.Mmap04PhPh()

    qs1 = qs.TwoPrioritiesQueueingSystem(test_data_Poisson_initial)
    qs2 = qs.TwoPrioritiesQueueingSystem(test_data_02_initial)
    qs3 = qs.TwoPrioritiesQueueingSystem(test_data_04_initial)

    lambdas = {
        "poisson": [],
        "cor02": [],
        "cor04": [],
        "poisson_PH_poisson_NoRemoval": [],
        "poisson_NoRemoval": []
    }
    Ls = {
        "poisson": [],
        "cor02": [],
        "cor04": [],
        "poisson_PH_poisson_NoRemoval": [],
        "poisson_NoRemoval": []
    }
    Ps = {
        "poisson": [],
        "cor02": [],
        "cor04": [],
        "poisson_PH_poisson_NoRemoval": [],
        "poisson_NoRemoval": []
    }
    Ps_alg = {
        "poisson": [],
        "cor02": [],
        "cor04": [],
        "poisson_PH_poisson_NoRemoval": [],
        "poisson_NoRemoval": []
    }
    P1s = {
        "poisson": [],
        "cor02": [],
        "cor04": [],
        "poisson_PH_poisson_NoRemoval": [],
        "poisson_NoRemoval": []
    }
    P2s = {
        "poisson": [],
        "cor02": [],
        "cor04": [],
        "poisson_PH_poisson_NoRemoval": [],
        "poisson_NoRemoval": []
    }
    Ps_imp = {
        "poisson": [],
        "cor02": [],
        "cor04": [],
        "poisson_PH_poisson_NoRemoval": [],
        "poisson_NoRemoval": []
    }

    for coef in np.linspace(0.01, 3, 100):
        test_data_Poisson.test_matrD = test_data_Poisson_initial.test_matrD * coef
        test_data_Poisson.test_matrD_0 = test_data_Poisson_initial.test_matrD_0 * coef

        test_data_02.test_matrD = test_data_02_initial.test_matrD * coef
        test_data_02.test_matrD_0 = test_data_02_initial.test_matrD_0 * coef

        test_data_04.test_matrD = test_data_04_initial.test_matrD * coef
        test_data_04.test_matrD_0 = test_data_04_initial.test_matrD_0 * coef

        qs1 = qs.TwoPrioritiesQueueingSystem(test_data_Poisson)
        stationary_probas1 = qs1.calc_stationary_probas(False)

        qs2 = qs.TwoPrioritiesQueueingSystem(test_data_02)
        stationary_probas2 = qs2.calc_stationary_probas(False)

        qs3 = qs.TwoPrioritiesQueueingSystem(test_data_04)
        stationary_probas3 = qs3.calc_stationary_probas(False)

        lambdas["poisson"].append(qs1.queries_stream.avg_intensity)
        Ls["poisson"].append(
            qs1.calc_avg_buffer_queries_num(stationary_probas1))
        Ps["poisson"].append(qs1.calc_query_lost_p(stationary_probas1))
        Ps_alg["poisson"].append(
            qs1.calc_query_lost_ps_buffer_full(stationary_probas1)[1])
        P1s["poisson"].append(
            qs1.calc_query_lost_ps_buffer_full(stationary_probas1)[0][0])
        P2s["poisson"].append(
            qs1.calc_query_lost_ps_buffer_full(stationary_probas1)[0][1])
        Ps_imp["poisson"].append(
            qs1.calc_nonprior_query_lost_timer(stationary_probas1))

        lambdas["cor02"].append(qs2.queries_stream.avg_intensity)
        Ls["cor02"].append(qs2.calc_avg_buffer_queries_num(stationary_probas2))
        Ps["cor02"].append(qs2.calc_query_lost_p(stationary_probas2))
        Ps_alg["cor02"].append(
            qs2.calc_query_lost_ps_buffer_full(stationary_probas2)[1])
        P1s["cor02"].append(
            qs2.calc_query_lost_ps_buffer_full(stationary_probas2)[0][0])
        P2s["cor02"].append(
            qs2.calc_query_lost_ps_buffer_full(stationary_probas2)[0][1])
        Ps_imp["cor02"].append(
            qs2.calc_nonprior_query_lost_timer(stationary_probas2))

        lambdas["cor04"].append(qs3.queries_stream.avg_intensity)
        Ls["cor04"].append(qs3.calc_avg_buffer_queries_num(stationary_probas3))
        Ps["cor04"].append(qs3.calc_query_lost_p(stationary_probas3))
        Ps_alg["cor04"].append(
            qs3.calc_query_lost_ps_buffer_full(stationary_probas3)[1])
        P1s["cor04"].append(
            qs3.calc_query_lost_ps_buffer_full(stationary_probas3)[0][0])
        P2s["cor04"].append(
            qs3.calc_query_lost_ps_buffer_full(stationary_probas3)[0][1])
        Ps_imp["cor04"].append(
            qs3.calc_nonprior_query_lost_timer(stationary_probas3))

    plt.plot(lambdas["poisson"], Ls["poisson"])
    plt.plot(lambdas["cor02"], Ls["cor02"])
    plt.plot(lambdas["cor04"], Ls["cor04"])
    plt.ylabel('L')
    plt.xlabel('λ')
    plt.legend((
        str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                   round(qs1.queries_stream.c_cor[0], 3),
                   round(qs1.queries_stream.c_cor[1], 3)),
        str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                   round(qs2.queries_stream.c_cor[0], 3),
                   round(qs2.queries_stream.c_cor[1], 3)),
        str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                   round(qs3.queries_stream.c_cor[0], 3),
                   round(qs3.queries_stream.c_cor[1], 3)),
    ),
               loc=0)
    plt.title(
        'Зависимость L от λ при различных\n коэффициентах корреляции длин двух соседних интервалов'
    )

    plt.savefig(str.format("plots/MMAP_L_lambda_cor_0_02_04_{}.png",
                           datetime.datetime.now()),
                bbox_inches='tight')
    plt.close()

    plt.plot(lambdas["poisson"], Ps["poisson"])
    plt.plot(lambdas["cor02"], Ps["cor02"])
    plt.plot(lambdas["cor04"], Ps["cor04"])
    plt.ylabel('P_loss')
    plt.xlabel('λ')
    plt.legend((
        str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                   round(qs1.queries_stream.c_cor[0], 3),
                   round(qs1.queries_stream.c_cor[1], 3)),
        str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                   round(qs2.queries_stream.c_cor[0], 3),
                   round(qs2.queries_stream.c_cor[1], 3)),
        str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                   round(qs3.queries_stream.c_cor[0], 3),
                   round(qs3.queries_stream.c_cor[1], 3)),
    ),
               loc=0)
    plt.title(
        'Зависимость P_loss от λ при различных\n коэффициентах корреляции длин двух соседних интервалов'
    )

    plt.savefig(str.format("plots/MMAP_P_loss_lambda_cor_0_02_04_{}.png",
                           datetime.datetime.now()),
                bbox_inches='tight')
    plt.close()

    plt.plot(lambdas["poisson"], Ps_alg["poisson"])
    plt.plot(lambdas["cor02"], Ps_alg["cor02"])
    plt.plot(lambdas["cor04"], Ps_alg["cor04"])
    plt.ylabel('P_loss_alg')
    plt.xlabel('λ')
    plt.legend((
        str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                   round(qs1.queries_stream.c_cor[0], 3),
                   round(qs1.queries_stream.c_cor[1], 3)),
        str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                   round(qs2.queries_stream.c_cor[0], 3),
                   round(qs2.queries_stream.c_cor[1], 3)),
        str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                   round(qs3.queries_stream.c_cor[0], 3),
                   round(qs3.queries_stream.c_cor[1], 3)),
    ),
               loc=0)
    plt.title(
        'Зависимость P_loss_alg от λ при различных\n коэффициентах корреляции длин двух соседних интервалов'
    )

    plt.savefig(str.format("plots/MMAP_P_loss_alg_lambda_cor_0_02_04_{}.png",
                           datetime.datetime.now()),
                bbox_inches='tight')
    plt.close()

    plt.plot(lambdas["poisson"], P1s["poisson"])
    plt.plot(lambdas["cor02"], P1s["cor02"])
    plt.plot(lambdas["cor04"], P1s["cor04"])
    plt.ylabel('P1_loss')
    plt.xlabel('λ')
    plt.legend((
        str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                   round(qs1.queries_stream.c_cor[0], 3),
                   round(qs1.queries_stream.c_cor[1], 3)),
        str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                   round(qs2.queries_stream.c_cor[0], 3),
                   round(qs2.queries_stream.c_cor[1], 3)),
        str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                   round(qs3.queries_stream.c_cor[0], 3),
                   round(qs3.queries_stream.c_cor[1], 3)),
    ),
               loc=0)
    plt.title(
        'Зависимость P1_loss от λ при различных\n коэффициентах корреляции длин двух соседних интервалов'
    )

    plt.savefig(str.format("plots/MMAP_P1_loss_lambda_cor_0_02_04_{}.png",
                           datetime.datetime.now()),
                bbox_inches='tight')
    plt.close()

    plt.plot(lambdas["poisson"], P2s["poisson"])
    plt.plot(lambdas["cor02"], P2s["cor02"])
    plt.plot(lambdas["cor04"], P2s["cor04"])
    plt.ylabel('P2_loss')
    plt.xlabel('λ')
    plt.legend((
        str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                   round(qs1.queries_stream.c_cor[0], 3),
                   round(qs1.queries_stream.c_cor[1], 3)),
        str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                   round(qs2.queries_stream.c_cor[0], 3),
                   round(qs2.queries_stream.c_cor[1], 3)),
        str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                   round(qs3.queries_stream.c_cor[0], 3),
                   round(qs3.queries_stream.c_cor[1], 3)),
    ),
               loc=0)
    plt.title(
        'Зависимость P2_loss от λ при различных\n коэффициентах корреляции длин двух соседних интервалов'
    )

    plt.savefig(str.format("plots/MMAP_P2_loss_lambda_cor_0_02_04_{}.png",
                           datetime.datetime.now()),
                bbox_inches='tight')
    plt.close()

    plt.plot(lambdas["poisson"], Ps_imp["poisson"])
    plt.plot(lambdas["cor02"], Ps_imp["cor02"])
    plt.plot(lambdas["cor04"], Ps_imp["cor04"])
    plt.ylabel('P_loss_imp')
    plt.xlabel('λ')
    plt.legend((
        str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                   round(qs1.queries_stream.c_cor[0], 3),
                   round(qs1.queries_stream.c_cor[1], 3)),
        str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                   round(qs2.queries_stream.c_cor[0], 3),
                   round(qs2.queries_stream.c_cor[1], 3)),
        str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                   round(qs3.queries_stream.c_cor[0], 3),
                   round(qs3.queries_stream.c_cor[1], 3)),
    ),
               loc=0)
    plt.title(
        'Зависимость P_loss_imp от λ при различных\n коэффициентах корреляции длин двух соседних интервалов'
    )

    plt.savefig(str.format("plots/MMAP_P_loss_imp_lambda_cor_0_02_04_{}.png",
                           datetime.datetime.now()),
                bbox_inches='tight')
    plt.close()
def main():
    nowdate = datetime.datetime.now()

    if not os.path.exists("plots"):
        os.makedirs("plots")

    if not os.path.exists("tables"):
        os.makedirs("tables")

    lines = ["-k", "--k", "-.k"]
    linecycler = cycle(lines)

    PRINT_TITLE = False

    test_data_less_mu_initial = cor02.Bmmap502PhPh(matrS_elem=8.)
    test_data_less_mu = cor02.Bmmap502PhPh(matrS_elem=8.)

    test_data_equal_mu_initial = cor02.Bmmap502PhPh(matrS_elem=16.)
    test_data_equal_mu = cor02.Bmmap502PhPh(matrS_elem=16.)

    test_data_larger_mu_initial = cor02.Bmmap502PhPh(matrS_elem=32.)
    test_data_larger_mu = cor02.Bmmap502PhPh(matrS_elem=32.)

    qs1 = qs.TwoPrioritiesQueueingSystem(test_data_less_mu_initial)
    qs2 = qs.TwoPrioritiesQueueingSystem(test_data_equal_mu_initial)
    qs3 = qs.TwoPrioritiesQueueingSystem(test_data_larger_mu_initial)

    W1s = {"less_mu": [], "equal_mu": [], "larger_mu": []}
    W2s = {"less_mu": [], "equal_mu": [], "larger_mu": []}

    table_less_mu = []
    table_equal_mu = []
    table_larger_mu = []

    ts = []

    for t in tqdm(np.linspace(0.01, 4., 40)):
        test_data_less_mu.test_matrD = test_data_less_mu_initial.test_matrD
        test_data_less_mu.test_matrD_0 = test_data_less_mu_initial.test_matrD_0

        test_data_equal_mu.test_matrD = test_data_equal_mu_initial.test_matrD
        test_data_equal_mu.test_matrD_0 = test_data_equal_mu_initial.test_matrD_0

        test_data_larger_mu.test_matrD = test_data_larger_mu_initial.test_matrD
        test_data_larger_mu.test_matrD_0 = test_data_larger_mu_initial.test_matrD_0

        qs1 = qs.TwoPrioritiesQueueingSystem(test_data_less_mu)
        stationary_probas1 = qs1.calc_stationary_probas(False)

        qs2 = qs.TwoPrioritiesQueueingSystem(test_data_equal_mu)
        stationary_probas2 = qs2.calc_stationary_probas(False)

        qs3 = qs.TwoPrioritiesQueueingSystem(test_data_larger_mu)
        stationary_probas3 = qs3.calc_stationary_probas(False)

        ts.append(t)
        W1s["less_mu"].append(qs1.func_W_1(stationary_probas1, t))
        W2s["less_mu"].append(qs1.func_W_2(stationary_probas1, t))

        table_less_mu.append([t, W1s["less_mu"][-1], W2s["less_mu"][-1]])

        W1s["equal_mu"].append(qs2.func_W_1(stationary_probas2, t))
        W2s["equal_mu"].append(qs2.func_W_2(stationary_probas2, t))

        table_equal_mu.append([t, W1s["equal_mu"][-1], W2s["equal_mu"][-1]])

        W1s["larger_mu"].append(qs3.func_W_1(stationary_probas3, t))
        W2s["larger_mu"].append(qs3.func_W_2(stationary_probas3, t))

        table_larger_mu.append([t, W1s["larger_mu"][-1], W2s["larger_mu"][-1]])

    plt.plot(ts, W1s["less_mu"], next(linecycler))
    plt.plot(ts, W1s["equal_mu"], next(linecycler))
    plt.plot(ts, W1s["larger_mu"], next(linecycler))
    plt.ylabel(r'$W_1(t)$')
    plt.xlabel(r'$t$')
    plt.legend((
        str.format("µ={0}", round(qs1.serv_stream.avg_intensity, 3)),
        str.format("µ={0}", round(qs2.serv_stream.avg_intensity, 3)),
        str.format("µ={0}", round(qs3.serv_stream.avg_intensity, 3)),
    ),
               loc=0)
    if PRINT_TITLE:
        plt.title(
            'Зависимость W_1 от t при различных\n средних интенсивностях обслуживания'
        )

    plt.savefig(str.format("plots/BMMAP5_W_1_t_mu_{}.png", nowdate),
                dpi=400,
                bbox_inches='tight')
    plt.close()

    plt.plot(ts, W2s["less_mu"], next(linecycler))
    plt.plot(ts, W2s["equal_mu"], next(linecycler))
    plt.plot(ts, W2s["larger_mu"], next(linecycler))
    plt.ylabel(r'$W_2(t)$')
    plt.xlabel(r'$t$')
    plt.legend((
        str.format("µ={0}", round(qs1.serv_stream.avg_intensity, 3)),
        str.format("µ={0}", round(qs2.serv_stream.avg_intensity, 3)),
        str.format("µ={0}", round(qs3.serv_stream.avg_intensity, 3)),
    ),
               loc=0)
    if PRINT_TITLE:
        plt.title(
            'Зависимость W_2 от t при различных\n средних интенсивностях обслуживания'
        )

    plt.savefig(str.format("plots/BMMAP5_W_2_t_mu_{}.png", nowdate),
                dpi=400,
                bbox_inches='tight')
    plt.close()

    f = open(str.format("tables/tables_{}.txt", nowdate), "w+")

    print(str.format("µ={0}", round(qs1.serv_stream.avg_intensity, 3)), file=f)
    print(table_less_mu, file=f)

    print(str.format("µ={0}", round(qs2.serv_stream.avg_intensity, 3)), file=f)
    print(table_equal_mu, file=f)

    print(str.format("µ={0}", round(qs3.serv_stream.avg_intensity, 3)), file=f)
    print(table_larger_mu, file=f)

    f.close()

    table_less_mu = np.asarray(table_less_mu)
    table_equal_mu = np.asarray(table_equal_mu)
    table_larger_mu = np.asarray(table_larger_mu)

    np.savetxt(str.format("tables/BMMAP5_W_t_mu_4_{}.csv", nowdate),
               table_less_mu,
               header='t, $W_1(t)$, $W_2(t)$',
               delimiter=',',
               fmt='%.5f',
               comments='')
    np.savetxt(str.format("tables/BMMAP5_W_t_mu_8_{}.csv", nowdate),
               table_equal_mu,
               header='t, $W_1(t)$, $W_2(t)$',
               delimiter=',',
               fmt='%.5f',
               comments='')
    np.savetxt(str.format("tables/BMMAP5_W_t_mu_16_{}.csv", nowdate),
               table_larger_mu,
               header='t, $W_1(t)$, $W_2(t)$',
               delimiter=',',
               fmt='%.5f',
               comments='')
import debugging.MMAP_cor04 as cor04
import two_priorities_qs as qs4

if __name__ == '__main__':
    test_data = cor04.Mmap04PhPh()
    # test_data = cor02.Mmap02PhPh()
    # test_data = cor0.MmapPoissonPh()

    qs1 = qs4.TwoPrioritiesQueueingSystem(test_data, verbose=True)

    qs1.calc_characteristics(True)
Exemple #5
0
import debugging.MMAP_Poisson_PH_Poisson_NoRemoval as poisson_PH_noremoval
import two_priorities_qs as qs

if __name__ == '__main__':
    test_data_Poisson_PH_noRemoval = poisson_PH_noremoval.MmapPoissonPhPoissonNoRemoval(
    )

    qs1 = qs.TwoPrioritiesQueueingSystem(test_data_Poisson_PH_noRemoval,
                                         verbose=True)

    qs1.calc_characteristics(True)

    # test_data_Poisson_noRemoval = poisson_noremoval.MmapPoissonNoRemoval()
    #
    # print("\nPoisson system:\n")
    #
    # qs2 = qs.TwoPrioritiesQueueingSystem(test_data_Poisson_noRemoval, verbose=True)
    #
    # qs2.calc_characteristics(True)
def main():
    test_data_Poisson_initial = poisson.Bmmap3PoissonPhPh()
    test_data_Poisson = poisson.Bmmap3PoissonPhPh()

    test_data_02_initial = cor02.Bmmap302PhPh()
    test_data_02 = cor02.Bmmap302PhPh()

    test_data_04_initial = cor04.Bmmap304PhPh()
    test_data_04 = cor04.Bmmap304PhPh()

    qs1 = qs.TwoPrioritiesQueueingSystem(test_data_Poisson_initial)
    qs2 = qs.TwoPrioritiesQueueingSystem(test_data_02_initial)
    qs3 = qs.TwoPrioritiesQueueingSystem(test_data_04_initial)

    W1s = {"poisson": [], "cor02": [], "cor04": []}
    W2s = {"poisson": [], "cor02": [], "cor04": []}

    coef = 0.25  # as we have \lambda = 32 and want it to be 8
    ts = []

    for t in np.linspace(0.0001, 1., 200):
        test_data_Poisson.test_matrD = test_data_Poisson_initial.test_matrD * coef
        test_data_Poisson.test_matrD_0 = test_data_Poisson_initial.test_matrD_0 * coef

        test_data_02.test_matrD = test_data_02_initial.test_matrD * coef
        test_data_02.test_matrD_0 = test_data_02_initial.test_matrD_0 * coef

        test_data_04.test_matrD = test_data_04_initial.test_matrD * coef
        test_data_04.test_matrD_0 = test_data_04_initial.test_matrD_0 * coef

        qs1 = qs.TwoPrioritiesQueueingSystem(test_data_Poisson)
        stationary_probas1 = qs1.calc_stationary_probas(False)

        qs2 = qs.TwoPrioritiesQueueingSystem(test_data_02)
        stationary_probas2 = qs2.calc_stationary_probas(False)

        qs3 = qs.TwoPrioritiesQueueingSystem(test_data_04)
        stationary_probas3 = qs3.calc_stationary_probas(False)

        ts.append(t)
        W1s["poisson"].append(qs1.func_W_1(stationary_probas1, t))
        W2s["poisson"].append(qs1.func_W_2(stationary_probas1, t))

        W1s["cor02"].append(qs2.func_W_1(stationary_probas2, t))
        W2s["cor02"].append(qs2.func_W_2(stationary_probas2, t))

        W1s["cor04"].append(qs3.func_W_1(stationary_probas3, t))
        W2s["cor04"].append(qs3.func_W_2(stationary_probas3, t))

    plt.plot(ts, W1s["poisson"])
    plt.plot(ts, W1s["cor02"])
    plt.plot(ts, W1s["cor04"])
    plt.ylabel('W_1')
    plt.xlabel('t')
    plt.legend((
        str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                   round(qs1.queries_stream.c_cor[0], 3),
                   round(qs1.queries_stream.c_cor[1], 3)),
        str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                   round(qs2.queries_stream.c_cor[0], 3),
                   round(qs2.queries_stream.c_cor[1], 3)),
        str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                   round(qs3.queries_stream.c_cor[0], 3),
                   round(qs3.queries_stream.c_cor[1], 3)),
    ),
               loc=0)
    plt.title(
        'Зависимость W_1 от t при различных\n коэффициентах корреляции длин двух соседних интервалов'
    )

    plt.savefig(str.format("plots/BMMAP3_W_1_t_cor_0_02_04_{}.png",
                           datetime.datetime.now()),
                bbox_inches='tight')
    plt.close()

    plt.plot(ts, W2s["poisson"])
    plt.plot(ts, W2s["cor02"])
    plt.plot(ts, W2s["cor04"])
    plt.ylabel('W_2')
    plt.xlabel('t')
    plt.legend((
        str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                   round(qs1.queries_stream.c_cor[0], 3),
                   round(qs1.queries_stream.c_cor[1], 3)),
        str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                   round(qs2.queries_stream.c_cor[0], 3),
                   round(qs2.queries_stream.c_cor[1], 3)),
        str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                   round(qs3.queries_stream.c_cor[0], 3),
                   round(qs3.queries_stream.c_cor[1], 3)),
    ),
               loc=0)
    plt.title(
        'Зависимость W_2 от t при различных\n коэффициентах корреляции длин двух соседних интервалов'
    )

    plt.savefig(str.format("plots/BMMAP3_W_2_t_cor_0_02_04_{}.png",
                           datetime.datetime.now()),
                bbox_inches='tight')
    plt.close()
def main():
    test_data_Poisson_initial = poisson.MmapPoissonPhPh()
    test_data_Poisson = poisson.MmapPoissonPhPh()

    test_data_02_initial = cor02.Mmap02PhPh()
    test_data_02 = cor02.Mmap02PhPh()

    test_data_04_initial = cor04.Mmap04PhPh()
    test_data_04 = cor04.Mmap04PhPh()

    qs1 = qs.TwoPrioritiesQueueingSystem(test_data_Poisson_initial)
    qs2 = qs.TwoPrioritiesQueueingSystem(test_data_02_initial)
    qs3 = qs.TwoPrioritiesQueueingSystem(test_data_04_initial)

    Ns = {"poisson": [], "cor02": [], "cor04": [], "poisson_PH_poisson_NoRemoval": [], "poisson_NoRemoval": []}
    Ls = {"poisson": [], "cor02": [], "cor04": [], "poisson_PH_poisson_NoRemoval": [], "poisson_NoRemoval": []}
    Ps = {"poisson": [], "cor02": [], "cor04": [], "poisson_PH_poisson_NoRemoval": [], "poisson_NoRemoval": []}
    p_0s = {"poisson": [], "cor02": [], "cor04": [], "poisson_PH_poisson_NoRemoval": [], "poisson_NoRemoval": []}
    p_1s = {"poisson": [], "cor02": [], "cor04": [], "poisson_PH_poisson_NoRemoval": [], "poisson_NoRemoval": []}

    for newN in range(1, 25):
        test_data_Poisson.test_N = newN

        test_data_02.test_N = newN

        test_data_04.test_N = newN

        qs1 = qs.TwoPrioritiesQueueingSystem(test_data_Poisson)
        stationary_probas1 = qs1.calc_stationary_probas(False)

        qs2 = qs.TwoPrioritiesQueueingSystem(test_data_02)
        stationary_probas2 = qs2.calc_stationary_probas(False)

        qs3 = qs.TwoPrioritiesQueueingSystem(test_data_04)
        stationary_probas3 = qs3.calc_stationary_probas(False)

        Ns["poisson"].append(newN)
        Ls["poisson"].append(qs1.calc_avg_buffer_queries_num(stationary_probas1))
        Ps["poisson"].append(qs1.calc_query_lost_p(stationary_probas1))
        p_0s["poisson"].append(qs1.calc_system_empty_proba(stationary_probas1))
        p_1s["poisson"].append(qs1.calc_system_single_query_proba(stationary_probas1))

        Ns["cor02"].append(newN)
        Ls["cor02"].append(qs2.calc_avg_buffer_queries_num(stationary_probas2))
        Ps["cor02"].append(qs2.calc_query_lost_p(stationary_probas2))
        p_0s["cor02"].append(qs2.calc_system_empty_proba(stationary_probas2))
        p_1s["cor02"].append(qs2.calc_system_single_query_proba(stationary_probas2))


        Ns["cor04"].append(newN)
        Ls["cor04"].append(qs3.calc_avg_buffer_queries_num(stationary_probas3))
        Ps["cor04"].append(qs3.calc_query_lost_p(stationary_probas3))
        p_0s["cor04"].append(qs3.calc_system_empty_proba(stationary_probas3))
        p_1s["cor04"].append(qs3.calc_system_single_query_proba(stationary_probas3))


    plt.plot(Ns["poisson"], Ls["poisson"])
    plt.plot(Ns["cor02"], Ls["cor02"])
    plt.plot(Ns["cor04"], Ls["cor04"])

    plt.ylabel('L')
    plt.xlabel('N')
    plt.legend((str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                           round(qs1.queries_stream.c_cor[0], 3),
                           round(qs1.queries_stream.c_cor[1], 3)),
                str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                           round(qs2.queries_stream.c_cor[0], 3),
                           round(qs2.queries_stream.c_cor[1], 3)),
                str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                           round(qs3.queries_stream.c_cor[0], 3),
                           round(qs3.queries_stream.c_cor[1], 3)),
                ),
               loc=0)
    plt.title('Зависимость L от N при различных\n коэффициентах корреляции длин двух соседних интервалов')

    plt.savefig(str.format("plots/MMAP_L_N_cor_0_02_04_NoRemoval_{}.png", datetime.datetime.now()),
                bbox_inches='tight')
    plt.close()

    plt.plot(Ns["poisson"], Ps["poisson"])
    plt.plot(Ns["cor02"], Ps["cor02"])
    plt.plot(Ns["cor04"], Ps["cor04"])

    plt.ylabel('P_loss')
    plt.xlabel('N')
    plt.legend((str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                           round(qs1.queries_stream.c_cor[0], 3),
                           round(qs1.queries_stream.c_cor[1], 3)),
                str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                           round(qs2.queries_stream.c_cor[0], 3),
                           round(qs2.queries_stream.c_cor[1], 3)),
                str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                           round(qs3.queries_stream.c_cor[0], 3),
                           round(qs3.queries_stream.c_cor[1], 3)),
                ),
               loc=0)
    plt.title('Зависимость P_loss от N при различных\n коэффициентах корреляции длин двух соседних интервалов')

    plt.savefig(str.format("plots/MMAP_P_loss_N_cor_0_02_04_NoRemoval_{}.png", datetime.datetime.now()),
                bbox_inches='tight')
    plt.close()

    plt.plot(Ns["poisson"], p_0s["poisson"])
    plt.plot(Ns["cor02"], p_0s["cor02"])
    plt.plot(Ns["cor04"], p_0s["cor04"])

    plt.ylabel('p_0')
    plt.xlabel('N')
    plt.legend((str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                           round(qs1.queries_stream.c_cor[0], 3),
                           round(qs1.queries_stream.c_cor[1], 3)),
                str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                           round(qs2.queries_stream.c_cor[0], 3),
                           round(qs2.queries_stream.c_cor[1], 3)),
                str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                           round(qs3.queries_stream.c_cor[0], 3),
                           round(qs3.queries_stream.c_cor[1], 3)),
                ),
               loc=0)
    plt.title('Зависимость p_0 от N при различных\n коэффициентах корреляции длин двух соседних интервалов')

    plt.savefig(str.format("plots/MMAP_p_0_N_cor_0_02_04_NoRemoval_{}.png", datetime.datetime.now()),
                bbox_inches='tight')
    plt.close()

    plt.plot(Ns["poisson"], p_1s["poisson"])
    plt.plot(Ns["cor02"], p_1s["cor02"])
    plt.plot(Ns["cor04"], p_1s["cor04"])

    plt.ylabel('p_1')
    plt.xlabel('N')
    plt.legend((str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                           round(qs1.queries_stream.c_cor[0], 3),
                           round(qs1.queries_stream.c_cor[1], 3)),
                str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                           round(qs2.queries_stream.c_cor[0], 3),
                           round(qs2.queries_stream.c_cor[1], 3)),
                str.format("c_cor^(1)={0}, c_cor^(2)={1}",
                           round(qs3.queries_stream.c_cor[0], 3),
                           round(qs3.queries_stream.c_cor[1], 3)),
                ),
               loc=0)
    plt.title('Зависимость p_1 от N при различных\n коэффициентах корреляции длин двух соседних интервалов')

    plt.savefig(str.format("plots/MMAP_p_1_N_cor_0_02_04_NoRemoval_{}.png", datetime.datetime.now()),
                bbox_inches='tight')
    plt.close()