most-queue 2.8__tar.gz → 2.9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {most_queue-2.8 → most_queue-2.9}/.gitignore +3 -1
- {most_queue-2.8 → most_queue-2.9}/PKG-INFO +27 -12
- {most_queue-2.8 → most_queue-2.9}/README.md +26 -11
- {most_queue-2.8 → most_queue-2.9}/docs/epics/README.md +11 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/__init__.py +7 -1
- most_queue-2.9/most_queue/random/map_fit.py +137 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/random/map_ph.py +48 -0
- most_queue-2.9/most_queue/sim/aoi.py +133 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/base.py +3 -2
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/base_core.py +7 -3
- most_queue-2.9/most_queue/sim/bmap.py +130 -0
- most_queue-2.9/most_queue/sim/bulk_service.py +95 -0
- most_queue-2.9/most_queue/sim/msj.py +117 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/structs.py +9 -0
- most_queue-2.9/most_queue/theory/aoi/__init__.py +5 -0
- most_queue-2.9/most_queue/theory/aoi/calc.py +114 -0
- most_queue-2.9/most_queue/theory/batch/__init__.py +7 -0
- most_queue-2.9/most_queue/theory/batch/bulk_service.py +138 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/batch/mm1.py +3 -2
- most_queue-2.9/most_queue/theory/closed/__init__.py +7 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/__init__.py +12 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/gi_m_1.py +10 -13
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/mgn_takahasi.py +33 -0
- most_queue-2.9/most_queue/theory/fork_join/__init__.py +11 -0
- most_queue-2.9/most_queue/theory/impatience/__init__.py +11 -0
- most_queue-2.9/most_queue/theory/matrix/__init__.py +22 -0
- most_queue-2.9/most_queue/theory/matrix/bmap_m1.py +163 -0
- most_queue-2.9/most_queue/theory/matrix/bmap_ph1.py +180 -0
- most_queue-2.9/most_queue/theory/matrix/map_mmc.py +190 -0
- most_queue-2.9/most_queue/theory/matrix/map_phc.py +278 -0
- most_queue-2.9/most_queue/theory/msj/__init__.py +7 -0
- most_queue-2.9/most_queue/theory/msj/exact.py +123 -0
- most_queue-2.9/most_queue/theory/msj/saturated.py +138 -0
- most_queue-2.9/most_queue/theory/negative/__init__.py +15 -0
- most_queue-2.9/most_queue/theory/networks/__init__.py +13 -0
- most_queue-2.9/most_queue/theory/priority/__init__.py +19 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/priority/preemptive/mm2_3cls_busy_approx.py +9 -12
- most_queue-2.9/most_queue/theory/priority/preemptive/mmk_prty_exact.py +315 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/priority/preemptive/mmn_2cls_pr_busy_approx.py +9 -12
- most_queue-2.9/most_queue/theory/priority/preemptive/mph_ph_k_2class.py +227 -0
- most_queue-2.9/most_queue/theory/priority/preemptive/rdr_a.py +185 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/srpt/__init__.py +3 -0
- most_queue-2.9/most_queue/theory/srpt/degradation.py +71 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/passage_time.py +48 -37
- most_queue-2.9/most_queue/theory/vacations/__init__.py +20 -0
- {most_queue-2.8 → most_queue-2.9}/pyproject.toml +14 -1
- most_queue-2.8/.claude/skills/lit-search/SKILL.md +0 -39
- most_queue-2.8/.claude/skills/lit-search/lit_search.py +0 -144
- most_queue-2.8/.cursor/rules/pytest-quality.mdc +0 -45
- most_queue-2.8/.cursor/rules/python-quality.mdc +0 -98
- most_queue-2.8/.cursor/skills/add-theory-calculator/SKILL.md +0 -130
- most_queue-2.8/.cursor/skills/theory-vs-sim-test/SKILL.md +0 -122
- most_queue-2.8/.cursorrules +0 -3
- most_queue-2.8/.gitattributes +0 -6
- most_queue-2.8/.github/workflows/tests.yml +0 -34
- most_queue-2.8/.pre-commit-config.yaml +0 -48
- most_queue-2.8/CITATION.cff +0 -37
- most_queue-2.8/README.ru.md +0 -153
- most_queue-2.8/assets/3.gif +0 -0
- most_queue-2.8/assets/most-queue-logo.png +0 -0
- most_queue-2.8/assets/most-queue-nano.png +0 -0
- most_queue-2.8/assets/most-queue-nano1.jpeg +0 -0
- most_queue-2.8/assets/most-queue-nano2.jpeg +0 -0
- most_queue-2.8/deploy.txt +0 -3
- most_queue-2.8/docs/DOD.md +0 -50
- most_queue-2.8/docs/INFRASTRUCTURE.md +0 -56
- most_queue-2.8/docs/PROJECT.md +0 -92
- most_queue-2.8/docs/README.ru.md +0 -119
- most_queue-2.8/docs/calculation.md +0 -541
- most_queue-2.8/docs/calculation.ru.md +0 -542
- most_queue-2.8/docs/concepts.md +0 -335
- most_queue-2.8/docs/concepts.ru.md +0 -335
- most_queue-2.8/docs/custom_simulators.md +0 -431
- most_queue-2.8/docs/custom_simulators.ru.md +0 -432
- most_queue-2.8/docs/distributions.md +0 -430
- most_queue-2.8/docs/distributions.ru.md +0 -431
- most_queue-2.8/docs/epics/EPIC-001-queueing-models-gap-analysis.md +0 -142
- most_queue-2.8/docs/epics/EPIC-002-wave1-exact-models.md +0 -86
- most_queue-2.8/docs/epics/EPIC-003-qbd-map-ph.md +0 -57
- most_queue-2.8/docs/epics/EPIC-004-retrial-erlang-a.md +0 -48
- most_queue-2.8/docs/epics/EPIC-005-illustrated-catalog.md +0 -45
- most_queue-2.8/docs/epics/EPIC-006-english-docs.md +0 -41
- most_queue-2.8/docs/examples.md +0 -406
- most_queue-2.8/docs/examples.ru.md +0 -407
- most_queue-2.8/docs/figures/batch.png +0 -0
- most_queue-2.8/docs/figures/disciplines_timeline.png +0 -0
- most_queue-2.8/docs/figures/engset.png +0 -0
- most_queue-2.8/docs/figures/fifo_mmn.png +0 -0
- most_queue-2.8/docs/figures/fork_join.png +0 -0
- most_queue-2.8/docs/figures/generate_figures.py +0 -814
- most_queue-2.8/docs/figures/impatience.png +0 -0
- most_queue-2.8/docs/figures/lcfs_pr.png +0 -0
- most_queue-2.8/docs/figures/loss.png +0 -0
- most_queue-2.8/docs/figures/m_g_inf.png +0 -0
- most_queue-2.8/docs/figures/map_arrivals.png +0 -0
- most_queue-2.8/docs/figures/n_policy.png +0 -0
- most_queue-2.8/docs/figures/negative.png +0 -0
- most_queue-2.8/docs/figures/priority.png +0 -0
- most_queue-2.8/docs/figures/ps.png +0 -0
- most_queue-2.8/docs/figures/retrial.png +0 -0
- most_queue-2.8/docs/figures/slowdown.png +0 -0
- most_queue-2.8/docs/figures/slowdown_en.png +0 -0
- most_queue-2.8/docs/figures/unreliable.png +0 -0
- most_queue-2.8/docs/figures/vacations.png +0 -0
- most_queue-2.8/docs/getting_started.md +0 -183
- most_queue-2.8/docs/getting_started.ru.md +0 -183
- most_queue-2.8/docs/models.md +0 -1046
- most_queue-2.8/docs/models.ru.md +0 -996
- most_queue-2.8/docs/models_gap_analysis.md +0 -151
- most_queue-2.8/docs/negative_disasters_time_characteristics.md +0 -146
- most_queue-2.8/docs/negative_disasters_time_characteristics.ru.md +0 -147
- most_queue-2.8/docs/negative_networks_calculation.md +0 -301
- most_queue-2.8/docs/negative_networks_calculation.ru.md +0 -302
- most_queue-2.8/docs/negative_rcs_time_characteristics.md +0 -102
- most_queue-2.8/docs/negative_rcs_time_characteristics.ru.md +0 -103
- most_queue-2.8/docs/networks.md +0 -648
- most_queue-2.8/docs/networks.ru.md +0 -649
- most_queue-2.8/docs/priorities.md +0 -331
- most_queue-2.8/docs/priorities.ru.md +0 -332
- most_queue-2.8/docs/roadmaps/qbd_map_ph_roadmap.md +0 -67
- most_queue-2.8/docs/roadmaps/retrial_erlang_a_roadmap.md +0 -62
- most_queue-2.8/docs/roadmaps/srpt_spjf_roadmap.md +0 -269
- most_queue-2.8/docs/roadmaps/wave1_exact_models_roadmap.md +0 -92
- most_queue-2.8/docs/simulation.md +0 -428
- most_queue-2.8/docs/simulation.ru.md +0 -429
- most_queue-2.8/docs/srpt_spjf_methods.md +0 -165
- most_queue-2.8/docs/srpt_spjf_methods.ru.md +0 -165
- most_queue-2.8/docs/tesaurus.md +0 -287
- most_queue-2.8/docs/tesaurus.ru.md +0 -285
- most_queue-2.8/examples/custom_network_example.py +0 -161
- most_queue-2.8/examples/custom_simulator_example.py +0 -143
- most_queue-2.8/examples/srpt_table.py +0 -153
- most_queue-2.8/googleb31d3dccb40f969f.html +0 -1
- most_queue-2.8/most_queue/theory/impatience/__init__.py +0 -0
- most_queue-2.8/most_queue/theory/matrix/__init__.py +0 -7
- most_queue-2.8/most_queue/theory/networks/__init__.py +0 -8
- most_queue-2.8/most_queue/theory/networks/opt/__init__.py +0 -0
- most_queue-2.8/most_queue/theory/priority/__init__.py +0 -13
- most_queue-2.8/most_queue/theory/priority/non_preemptive/__init__.py +0 -0
- most_queue-2.8/most_queue/theory/priority/preemptive/__init__.py +0 -0
- most_queue-2.8/most_queue/theory/vacations/__init__.py +0 -0
- most_queue-2.8/requirements.txt +0 -168
- most_queue-2.8/tests/Dockerfile +0 -13
- most_queue-2.8/tests/__init__.py +0 -0
- most_queue-2.8/tests/default_params.yaml +0 -44
- most_queue-2.8/tests/mgn_disaster_w_v_vs_l_neg.png +0 -0
- most_queue-2.8/tests/run.sh +0 -5
- most_queue-2.8/tests/test_base_qs_sim.py +0 -97
- most_queue-2.8/tests/test_batch.py +0 -83
- most_queue-2.8/tests/test_ek_d_n.py +0 -102
- most_queue-2.8/tests/test_engset.py +0 -78
- most_queue-2.8/tests/test_erlang.py +0 -136
- most_queue-2.8/tests/test_fj_sim.py +0 -186
- most_queue-2.8/tests/test_gi_g_approx.py +0 -145
- most_queue-2.8/tests/test_gi_m_1_calc.py +0 -90
- most_queue-2.8/tests/test_gi_m_n_calc.py +0 -99
- most_queue-2.8/tests/test_h2_h2_n_calc.py +0 -159
- most_queue-2.8/tests/test_h2_m_n_calc.py +0 -140
- most_queue-2.8/tests/test_impatience.py +0 -69
- most_queue-2.8/tests/test_m_d_n_calc.py +0 -81
- most_queue-2.8/tests/test_m_g_inf.py +0 -73
- most_queue-2.8/tests/test_m_h2_h2warm.py +0 -93
- most_queue-2.8/tests/test_m_ph_n_prty.py +0 -136
- most_queue-2.8/tests/test_map_ph1.py +0 -161
- most_queue-2.8/tests/test_mg1_calc.py +0 -86
- most_queue-2.8/tests/test_mg1_disaster.py +0 -90
- most_queue-2.8/tests/test_mg1_fb.py +0 -98
- most_queue-2.8/tests/test_mg1_predictions_table.py +0 -180
- most_queue-2.8/tests/test_mg1_ps_lcfs.py +0 -100
- most_queue-2.8/tests/test_mg1_psjf.py +0 -80
- most_queue-2.8/tests/test_mg1_rcs.py +0 -73
- most_queue-2.8/tests/test_mg1_sjf.py +0 -79
- most_queue-2.8/tests/test_mg1_spjf.py +0 -99
- most_queue-2.8/tests/test_mg1_srpt.py +0 -80
- most_queue-2.8/tests/test_mg1_unreliable.py +0 -109
- most_queue-2.8/tests/test_mg1_vacations.py +0 -152
- most_queue-2.8/tests/test_mg1_warmup.py +0 -86
- most_queue-2.8/tests/test_mgn_disaster.py +0 -309
- most_queue-2.8/tests/test_mgn_rcs.py +0 -255
- most_queue-2.8/tests/test_mgn_tt.py +0 -106
- most_queue-2.8/tests/test_mgn_with_h2_delay_cold_warm.py +0 -220
- most_queue-2.8/tests/test_mm2_3cls_prty_busy.py +0 -110
- most_queue-2.8/tests/test_mmn_h2cold_h2warm.py +0 -125
- most_queue-2.8/tests/test_mmn_prty_busy_approx.py +0 -109
- most_queue-2.8/tests/test_negative_network.py +0 -504
- most_queue-2.8/tests/test_network_im_prty.py +0 -158
- most_queue-2.8/tests/test_network_negative_calc.py +0 -183
- most_queue-2.8/tests/test_network_no_prty.py +0 -97
- most_queue-2.8/tests/test_network_opt.py +0 -62
- most_queue-2.8/tests/test_qs_sim.py +0 -88
- most_queue-2.8/tests/test_qs_sim_prty.py +0 -144
- most_queue-2.8/tests/test_retrial_erlang_a.py +0 -199
- most_queue-2.8/tests/test_size_based_disciplines.py +0 -89
- most_queue-2.8/tests/test_size_based_fcfs_regression.py +0 -56
- most_queue-2.8/tests/test_srpt_vs_fcfs.py +0 -104
- most_queue-2.8/tests/test_tt_vs_sim_cv105.py +0 -132
- most_queue-2.8/tests/test_tt_vs_sim_gamma_cvl1.py +0 -126
- most_queue-2.8/tests/units/test_busy_moments_calc.py +0 -47
- most_queue-2.8/tests/units/test_central_moments.py +0 -43
- most_queue-2.8/tests/units/test_conditionals.py +0 -146
- most_queue-2.8/tests/units/test_h2_params_cv.py +0 -95
- most_queue-2.8/tests/units/test_map_ph.py +0 -101
- most_queue-2.8/tests/units/test_queue_priority_size.py +0 -89
- most_queue-2.8/tests/units/test_queue_types.py +0 -61
- most_queue-2.8/tests/units/test_size_based_rankers.py +0 -86
- most_queue-2.8/tests/units/test_tt_up_probs.py +0 -46
- most_queue-2.8/tests/units/test_v1_on_channels.py +0 -72
- most_queue-2.8/tests/units/test_v1_utlization_approx.py +0 -12
- most_queue-2.8/tests/units/test_weibull.py +0 -29
- most_queue-2.8/tutorials/disciplines_comparison.ipynb +0 -471
- most_queue-2.8/tutorials/m_h2_h2warm.ipynb +0 -272
- most_queue-2.8/tutorials/map_ph_correlation.ipynb +0 -2437
- most_queue-2.8/tutorials/mgn_takahasi_takami.ipynb +0 -252
- most_queue-2.8/tutorials/network_with_priorities.ipynb +0 -381
- most_queue-2.8/tutorials/priority_queue.ipynb +0 -378
- most_queue-2.8/tutorials/queue_sim.ipynb +0 -456
- most_queue-2.8/tutorials/srpt_basics.ipynb +0 -407
- most_queue-2.8/works/__init__.py +0 -0
- most_queue-2.8/works/articles/habr_article_1.md +0 -258
- most_queue-2.8/works/articles/habr_article_1_tables.html +0 -111
- most_queue-2.8/works/articles/pics/1.png +0 -0
- most_queue-2.8/works/articles/pics/2.png +0 -0
- most_queue-2.8/works/articles/pics/3.png +0 -0
- most_queue-2.8/works/articles/pics/4.png +0 -0
- most_queue-2.8/works/articles/pics/5.png +0 -0
- most_queue-2.8/works/negative_queues/README_latex.md +0 -45
- most_queue-2.8/works/negative_queues/README_package.txt +0 -32
- most_queue-2.8/works/negative_queues/__init__.py +0 -0
- most_queue-2.8/works/negative_queues/base_parameters.yaml +0 -31
- most_queue-2.8/works/negative_queues/citations.bib +0 -175
- most_queue-2.8/works/negative_queues/export_fixed_service_tables.py +0 -181
- most_queue-2.8/works/negative_queues/export_tables_from_results.py +0 -248
- most_queue-2.8/works/negative_queues/generate_transition_diagrams.py +0 -1015
- most_queue-2.8/works/negative_queues/generated_tables_fixed.tex +0 -24
- most_queue-2.8/works/negative_queues/most-queue.code-workspace +0 -11
- most_queue-2.8/works/negative_queues/negative_queues_figures/channels/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/channels/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/channels/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/channels/v_broken_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/channels/v_broken_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/channels/v_served_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/channels/v_served_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/channels/w_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/channels/w_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/coefs/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/coefs/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/coefs/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/coefs/v_broken_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/coefs/v_broken_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/coefs/v_served_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/coefs/v_served_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/coefs/w_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/coefs/w_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/combined/v1_n_cv1_2_oldstyle.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/combined/v1_n_fixed_cv1_2.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/channels/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/channels/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/channels/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/channels/v_broken_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/channels/v_broken_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/channels/v_served_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/channels/v_served_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/channels/w_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/channels/w_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/channels/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/channels/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/channels/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/channels_cv0_8/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/channels_cv0_8/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/channels_cv0_8/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/channels_cv1_2/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/channels_cv1_2/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/channels_cv1_2/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/channels_cv_compare/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/coefs/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/coefs/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/coefs/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate/q.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate/sigma_v.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate/sigma_w.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate/w_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate/w_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv0_8/q.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv0_8/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv0_8/sigma_v.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv0_8/sigma_w.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv0_8/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv0_8/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv0_8/w_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv0_8/w_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv1_2/q.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv1_2/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv1_2/sigma_v.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv1_2/sigma_w.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv1_2/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv1_2/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv1_2/w_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv1_2/w_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv_compare/q.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv_compare/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/utilization/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/utilization/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/utilization/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/coefs/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/coefs/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/coefs/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/coefs/v_broken_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/coefs/v_broken_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/coefs/v_served_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/coefs/v_served_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/coefs/w_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/coefs/w_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/diagrams/disaster_arrivals.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/diagrams/disaster_arrivals_/321/201/321/203/320/277/320/265/321/200.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/diagrams/disaster_negative_arrivals_pretty.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/diagrams/disaster_negative_arrivals_pretty.svg +0 -1137
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/diagrams/disaster_service.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/diagrams/disaster_transitions.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/channels/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/channels/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/channels/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/channels_cv0_8/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/channels_cv0_8/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/channels_cv0_8/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/channels_cv1_2/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/channels_cv1_2/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/channels_cv1_2/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/channels_cv_compare/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/coefs/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/coefs/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/coefs/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate/q.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate/sigma_v.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate/sigma_w.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate/w_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate/w_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv0_8/q.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv0_8/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv0_8/sigma_v.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv0_8/sigma_w.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv0_8/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv0_8/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv0_8/w_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv0_8/w_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv1_2/q.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv1_2/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv1_2/sigma_v.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv1_2/sigma_w.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv1_2/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv1_2/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv1_2/w_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv1_2/w_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv_compare/q.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv_compare/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/utilization/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/utilization/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/utilization/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/channels_cv0_8/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/channels_cv0_8/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/channels_cv0_8/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/channels_cv1_2/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/channels_cv1_2/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/channels_cv1_2/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/channels_cv_compare/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv0_8/q.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv0_8/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv0_8/sigma_v.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv0_8/sigma_w.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv0_8/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv0_8/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv0_8/w_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv0_8/w_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv1_2/q.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv1_2/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv1_2/sigma_v.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv1_2/sigma_w.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv1_2/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv1_2/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv1_2/w_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv1_2/w_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv_compare/q.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv_compare/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/utilization/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/utilization/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/utilization/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/utilization/v_broken_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/utilization/v_broken_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/utilization/v_served_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/utilization/v_served_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/utilization/w_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/utilization/w_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/paper_fig2_delta_0_300/combined/v1_n_cv1_2_oldstyle.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/paper_fig2_delta_0_300/dis_clear/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/paper_fig2_delta_0_300/dis_requeue/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/paper_fig2_delta_0_300/rcs_remove/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/paper_fig2_delta_0_300/rcs_requeue/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/channels/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/channels/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/channels/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/channels/v_broken_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/channels/v_broken_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/channels/v_served_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/channels/v_served_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/channels/w_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/channels/w_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/coefs/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/coefs/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/coefs/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/coefs/v_broken_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/coefs/v_broken_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/coefs/v_served_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/coefs/v_served_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/coefs/w_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/coefs/w_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/diagrams/Untitled Diagram.drawio +0 -97
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/diagrams/neg_arrival.jpeg +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/diagrams/neg_arrival2.jpeg +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/diagrams/neg_arrival_/320/261/320/265/320/266/320/265/320/262/321/213/320/271.jpeg +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/diagrams/neg_arrival_/320/272/320/260/321/202.jpeg +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/diagrams/neg_arrivals.drawio +0 -141
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/diagrams/neg_arrivals.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/diagrams/neg_arrivals_/320/272/320/260/321/202_/321/207/320/261.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/diagrams/neg_arrivals_/321/201/321/203/320/277/320/265/321/200.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/diagrams/neg_arrivals_/321/207/320/261.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/diagrams/rcs_arrivals.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/diagrams/rcs_negative_arrivals_pretty.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/diagrams/rcs_negative_arrivals_pretty.svg +0 -1562
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/diagrams/rcs_service.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/diagrams/rcs_transitions.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/channels/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/channels/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/channels/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/channels_cv0_8/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/channels_cv0_8/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/channels_cv0_8/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/channels_cv1_2/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/channels_cv1_2/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/channels_cv1_2/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/channels_cv_compare/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/coefs/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/coefs/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/coefs/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate/q.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate/sigma_v.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate/sigma_w.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate/w_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate/w_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv0_8/q.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv0_8/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv0_8/sigma_v.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv0_8/sigma_w.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv0_8/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv0_8/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv0_8/w_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv0_8/w_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv1_2/q.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv1_2/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv1_2/sigma_v.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv1_2/sigma_w.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv1_2/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv1_2/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv1_2/w_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv1_2/w_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv_compare/q.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv_compare/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/utilization/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/utilization/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/utilization/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/channels/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/channels/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/channels/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/channels_cv0_8/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/channels_cv0_8/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/channels_cv0_8/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/channels_cv1_2/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/channels_cv1_2/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/channels_cv1_2/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/channels_cv_compare/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/coefs/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/coefs/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/coefs/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate/q.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate/sigma_v.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate/sigma_w.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate/w_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate/w_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv0_8/q.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv0_8/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv0_8/sigma_v.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv0_8/sigma_w.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv0_8/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv0_8/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv0_8/w_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv0_8/w_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv1_2/q.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv1_2/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv1_2/sigma_v.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv1_2/sigma_w.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv1_2/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv1_2/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv1_2/w_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv1_2/w_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv_compare/q.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv_compare/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/utilization/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/utilization/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/utilization/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/channels_cv0_8/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/channels_cv0_8/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/channels_cv0_8/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/channels_cv1_2/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/channels_cv1_2/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/channels_cv1_2/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/channels_cv_compare/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv0_8/q.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv0_8/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv0_8/sigma_v.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv0_8/sigma_w.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv0_8/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv0_8/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv0_8/w_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv0_8/w_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv1_2/q.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv1_2/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv1_2/sigma_v.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv1_2/sigma_w.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv1_2/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv1_2/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv1_2/w_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv1_2/w_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv_compare/q.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv_compare/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/utilization/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/utilization/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/utilization/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/utilization/v_broken_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/utilization/v_broken_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/utilization/v_served_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/utilization/v_served_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/utilization/w_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/utilization/w_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/utilization/results.json +0 -1
- most_queue-2.8/works/negative_queues/negative_queues_figures/utilization/v_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/utilization/v_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/utilization/v_broken_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/utilization/v_broken_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/utilization/v_served_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/utilization/v_served_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/utilization/w_ave.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_figures/utilization/w_ave_err.png +0 -0
- most_queue-2.8/works/negative_queues/negative_queues_takahasi_takami.md +0 -808
- most_queue-2.8/works/negative_queues/negative_queues_takahasi_takami.tex +0 -607
- most_queue-2.8/works/negative_queues/negative_queues_takahasi_takami_v3.pdf +0 -0
- most_queue-2.8/works/negative_queues/plot_channels_4disciplines_oldstyle.py +0 -136
- most_queue-2.8/works/negative_queues/plot_channels_cv_compare.py +0 -108
- most_queue-2.8/works/negative_queues/plot_channels_fixed_2disciplines_cv1_2.py +0 -106
- most_queue-2.8/works/negative_queues/plot_negative_rate_cv_compare.py +0 -131
- most_queue-2.8/works/negative_queues/prompt_disaster_negative_arrival_3channels_4levels.md +0 -55
- most_queue-2.8/works/negative_queues/prompt_rcs_negative_arrival_up_3channels_4levels.md +0 -98
- most_queue-2.8/works/negative_queues/run_channels_for_paper_fig2.py +0 -132
- most_queue-2.8/works/negative_queues/run_table_cv_points.py +0 -148
- most_queue-2.8/works/negative_queues/work_mgn_negatives.py +0 -688
- most_queue-2.8/works/negative_queues//320/276/320/261/320/267/320/276/321/200_/320/273/320/270/321/202/320/265/321/200/320/260/321/202/321/203/321/200/321/2131.md +0 -118
- most_queue-2.8/works/negative_queues//320/276/320/261/320/267/320/276/321/200_/320/273/320/270/321/202/320/265/321/200/320/260/321/202/321/203/321/200/321/2132.md +0 -120
- most_queue-2.8/works/queueing_systems_review/RL.md +0 -328
- most_queue-2.8/works/queueing_systems_review/SRPT/SPJF.md +0 -450
- most_queue-2.8/works/queueing_systems_review/SRPT/shrage.md +0 -193
- most_queue-2.8/works/queueing_systems_review/Scheduling /321/201 /320/277/321/200/320/265/320/264/321/201/320/272/320/260/320/267/320/260/320/275/320/270/321/217/320/274/320/270 /320/270 LLM-/321/201/320/270/321/201/321/202/320/265/320/274/321/213.md" +0 -401
- most_queue-2.8/works/queueing_systems_review/general.md +0 -238
- most_queue-2.8/works/vacations/__init__.py +0 -0
- most_queue-2.8/works/vacations/base_parameters.yaml +0 -52
- most_queue-2.8/works/vacations/channels.py +0 -80
- most_queue-2.8/works/vacations/cooling.py +0 -182
- most_queue-2.8/works/vacations/cooling_delay.py +0 -181
- most_queue-2.8/works/vacations/main.py +0 -60
- most_queue-2.8/works/vacations/run_one_calc_vs_sim.py +0 -173
- most_queue-2.8/works/vacations/service.py +0 -86
- most_queue-2.8/works/vacations/utilization.py +0 -75
- most_queue-2.8/works/vacations/utils.py +0 -125
- most_queue-2.8/works/vacations/warmup.py +0 -180
- {most_queue-2.8 → most_queue-2.9}/LICENSE +0 -0
- {most_queue-2.8 → most_queue-2.9}/docs/README.md +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/constants.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/io/__init__.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/io/plots.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/io/tables.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/misc/approx_cdf_make.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/misc/calc_v_pls.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/misc/compare_fj_calc.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/misc/flow_sum.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/misc/run_mgn_with_h2_delay_cold_warm.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/misc/tests/test_fj_delta.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/misc/tests/test_network_opt_approx.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/misc/tests/test_network_opt_plus.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/misc/vacations_paper_utils.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/random/__init__.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/random/distributions.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/random/distributions.yaml +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/random/utils/base.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/random/utils/create.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/random/utils/fit.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/random/utils/load.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/random/utils/params.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/__init__.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/batch.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/finite_source.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/flow_sum.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/fork_join.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/fork_join_delta.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/impatient.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/negative.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/networks/__init__.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/networks/base_network_sim.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/networks/negative_network.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/networks/network.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/networks/priority_network.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/priority.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/retrial.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/single_server_disciplines.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/size_based.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/unreliable.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/utils/__init__.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/utils/events.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/utils/phase.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/utils/predictor.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/utils/qs_queue.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/utils/queue_priority_size.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/utils/servers.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/utils/stats_update.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/utils/tasks.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/sim/vacations.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/__init__.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/base_queue.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/calc_params.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/closed/engset.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/ek_d_n.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/erlang.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/gi_g_approx.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/gi_m_n.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/gmc_takahasi.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/hkhk_takahasi.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/m_d_n.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/m_g_inf.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/mg1.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/mg1_lcfs_pr.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/mg1_ps.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/mmnr.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/takahasi_base.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fork_join/m_m_n.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fork_join/split_join.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/impatience/mm1.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/impatience/mmn.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/matrix/map_ph1.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/matrix/qbd.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/negative/mg1_disasters.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/negative/mg1_rcs.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/negative/mgn_disaster.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/negative/mgn_rcs.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/negative/structs.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/networks/base_network_calc.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/networks/negative_network.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/networks/network_viewer.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/networks/open_network.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/networks/open_network_prty.py +0 -0
- {most_queue-2.8/most_queue/theory/batch → most_queue-2.9/most_queue/theory/networks/opt}/__init__.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/networks/opt/transition.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/networks/opt/transition_approx.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/networks/opt/transition_plus.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/priority/mgn_invar_approx.py +0 -0
- {most_queue-2.8/most_queue/theory/closed → most_queue-2.9/most_queue/theory/priority/non_preemptive}/__init__.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/priority/non_preemptive/mg1.py +0 -0
- {most_queue-2.8/most_queue/theory/fork_join → most_queue-2.9/most_queue/theory/priority/preemptive}/__init__.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/priority/preemptive/m_ph_n_busy_approx.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/priority/preemptive/mg1.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/r_example.gexf +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/retrial/__init__.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/retrial/mg1.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/retrial/mm1.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/srpt/_base.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/srpt/mg1_fb.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/srpt/mg1_psjf.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/srpt/mg1_sjf.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/srpt/mg1_spjf.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/srpt/mg1_srpt.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/srpt/utils/__init__.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/srpt/utils/load_below.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/srpt/utils/predictor.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/__init__.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/binom_probs.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/busy_periods.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/conditional.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/conv.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/derivative.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/diff5dots.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/flow_sum.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/max_dist.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/moments.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/q_poisson_arrival_calc.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/residual.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/restarts.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/student_stat.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/timing.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/transforms.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/utilization_approx.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/validation.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/vacations/m_h2_h2warm.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/vacations/mg1_unreliable.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/vacations/mg1_vacations.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/vacations/mg1_warm_calc.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/vacations/mgn_with_h2_delay_cold_warm.py +0 -0
- {most_queue-2.8 → most_queue-2.9}/most_queue/theory/vacations/mmn_with_h2_cold_and_h2_warmup.py +0 -0
|
@@ -198,4 +198,6 @@ docs/books/
|
|
|
198
198
|
docs/статьи/
|
|
199
199
|
works/queueing_systems_review/SRPT/pdf/
|
|
200
200
|
works/experiments/rabbitmq_prefetch/
|
|
201
|
-
works/reviews/
|
|
201
|
+
works/reviews/
|
|
202
|
+
# RDR paper PDF (external, not redistributed) — keep only COVERAGE.md audit
|
|
203
|
+
works/articles/multichannel-pr/*.pdf
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: most_queue
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.9
|
|
4
4
|
Summary: Software package for calculation and simulation of queuing systems
|
|
5
5
|
Project-URL: Homepage, https://github.com/xabarov/most-queue
|
|
6
6
|
Author-email: Xabarov Roman <xabarov1985@gmail.com>
|
|
@@ -43,7 +43,7 @@ Description-Content-Type: text/markdown
|
|
|
43
43
|
|
|
44
44
|
# Most-Queue
|
|
45
45
|
|
|
46
|
-
**Queueing theory in Python: exact analytical solvers paired with discrete-event simulation — for
|
|
46
|
+
**Queueing theory in Python: exact analytical solvers paired with discrete-event simulation — for 50+ models from M/M/1 to multiserver-jobs, RDR priorities, SRPT scheduling, age of information, vacations and queueing networks.**
|
|
47
47
|
|
|
48
48
|
[🇷🇺 Русская версия](README.ru.md)
|
|
49
49
|
|
|
@@ -52,6 +52,7 @@ Description-Content-Type: text/markdown
|
|
|
52
52
|
[](https://pypi.org/project/most-queue/)
|
|
53
53
|
[](https://github.com/xabarov/most-queue/blob/main/LICENSE)
|
|
54
54
|
[](https://pepy.tech/project/most-queue)
|
|
55
|
+
[](https://doi.org/10.5281/zenodo.21268402)
|
|
55
56
|
[](https://github.com/xabarov/most-queue/commits/main)
|
|
56
57
|
|
|
57
58
|
<img src="https://raw.githubusercontent.com/xabarov/most-queue/main/assets/most-queue-nano1.jpeg" alt="Most-Queue banner" width="720"/>
|
|
@@ -106,7 +107,7 @@ print(f"Mean waiting time: theory {theory.w[0]:.3f} vs simulation {experiment.w[
|
|
|
106
107
|
Computed by the library's own calculators — conditional slowdown `E[T(x)]/x` by job size
|
|
107
108
|
for FCFS, PS, FB (blind) and SRPT (size-aware):
|
|
108
109
|
|
|
109
|
-
<img src="https://raw.githubusercontent.com/xabarov/most-queue/main/docs/figures/
|
|
110
|
+
<img src="https://raw.githubusercontent.com/xabarov/most-queue/main/docs/figures/slowdown.png" alt="Slowdown by job size for FCFS/PS/FB/SRPT" width="720"/>
|
|
110
111
|
|
|
111
112
|
See the executable comparison of **9 disciplines** in
|
|
112
113
|
[`tutorials/disciplines_comparison.ipynb`](tutorials/disciplines_comparison.ipynb).
|
|
@@ -117,15 +118,19 @@ See the executable comparison of **9 disciplines** in
|
|
|
117
118
|
|---|---|---|
|
|
118
119
|
| Classic FIFO | M/M/c, M/M/c/r, Erlang B/C, M/G/1, GI/M/c, M/D/c, Eₖ/D/c, M/G/∞ | exact |
|
|
119
120
|
| Multi-server phase-type | M/H₂/c, H₂/M/c, H₂/H₂/c (CV < 1 via complex fit) | Takahashi–Takami |
|
|
120
|
-
| Size-based scheduling | M/G/1 SRPT, SJF, PSJF, SPJF (with size predictors), FB/LAS, PS, LCFS-PR | exact (Schrage–Miller, Mitzenmacher) |
|
|
121
|
-
| Priorities | M/G/1 PR/NP multi-class, M/G/c PR/NP, M/Ph/c PR | exact / invariant approximation |
|
|
121
|
+
| Size-based scheduling | M/G/1 SRPT, SJF, PSJF, SPJF (with size predictors + graceful-degradation curves), FB/LAS, PS, LCFS-PR | exact (Schrage–Miller, Mitzenmacher) |
|
|
122
|
+
| Priorities | M/G/1 PR/NP multi-class, M/G/c PR/NP, M/Ph/c PR; **RDR** M/M/k & M/PH/k multi-class (exact + RDR-A), per-class response variance | exact / RDR / invariant approximation |
|
|
123
|
+
| Multiserver-job (MSJ) | jobs holding several servers at once — FCFS response time, saturated-system stability/throughput | exact CTMC / saturated product-form |
|
|
124
|
+
| Age of Information | M/M/1, M/G/1, preemptive-LCFS — average & peak AoI | closed-form + simulation |
|
|
122
125
|
| Vacations & warm-up | M/G/1 multiple vacations, N-policy, warm-up/cooling/delay (M/Ph/c) | Fuhrmann–Cooper, Takahashi–Takami |
|
|
123
126
|
| Negative customers | M/G/1 and M/G/c with RCS or disasters | exact / Takahashi–Takami |
|
|
124
127
|
| Reliability | M/G/1 with breakdowns & repairs | Avi-Itzhak–Naor |
|
|
125
|
-
| Matrix-analytic | MAP/PH/1, M/PH/1, PH/PH/1 — correlated (bursty) arrivals | QBD, logarithmic reduction |
|
|
128
|
+
| Matrix-analytic (MAP/PH) | MAP/PH/1, M/PH/1, PH/PH/1, MAP/M/c, MAP/PH/c — correlated (bursty) arrivals, single- & multi-server; MMPP fitting | QBD, logarithmic reduction |
|
|
129
|
+
| Batch Markovian arrivals | BMAP/M/1, BMAP/PH/1 — correlated batch traffic | level truncation |
|
|
126
130
|
| Retrial & abandonment | M/M/1 and M/G/1 retrial (orbit), Erlang-A (M/M/n+M) with staffing | exact / Falin–Templeton |
|
|
127
131
|
| GI/G approximations | GI/G/1, GI/G/m mean waiting time | Kingman, Krämer–Langenbach-Belz, Allen–Cunneen |
|
|
128
|
-
| Batch
|
|
132
|
+
| Batch arrivals & bulk service | Mˣ/M/1 batch arrivals; M/M^[a,b]/1 bulk (batch) service — LLM inference batching | exact |
|
|
133
|
+
| Impatience & closed | M/M/1+M, Engset | exact |
|
|
129
134
|
| Parallel service | Fork-Join, Split-Join | Markovian / order statistics |
|
|
130
135
|
| Networks | open networks, priority networks, networks with negative customers, routing optimization | decomposition |
|
|
131
136
|
|
|
@@ -136,7 +141,7 @@ Every model comes with a plain-language explanation and a diagram in the
|
|
|
136
141
|
|
|
137
142
|
- 📖 [Documentation](docs/README.md) — concepts, calculation and simulation guides (English; Russian versions available via in-page switchers)
|
|
138
143
|
- 🎓 [Jupyter tutorials](tutorials/) — from a first M/M/1 to Takahashi–Takami and SRPT
|
|
139
|
-
- 🗺 [Development roadmaps](docs/epics/README.md) — what's next (
|
|
144
|
+
- 🗺 [Development roadmaps](docs/epics/README.md) — what's next (closed networks / MVA, multi-server retrial, polling)
|
|
140
145
|
- 🧪 [Tests](tests/) — every model validated against simulation; run with `pytest -m "not slow"`
|
|
141
146
|
|
|
142
147
|
## Applications
|
|
@@ -147,10 +152,19 @@ scheduling research (SRPT/LAS with ML size predictions).
|
|
|
147
152
|
|
|
148
153
|
## Recent highlights
|
|
149
154
|
|
|
150
|
-
- **2026** — **
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
155
|
+
- **2026 (v2.9)** — **Datacenter & multi-priority wave**: **RDR** for multi-server multi-class
|
|
156
|
+
preemptive priorities (M/M/k and M/PH/k, exact + RDR-A, per-class response-time variance);
|
|
157
|
+
the **multiserver-job** model (jobs holding several servers at once — FCFS response time and
|
|
158
|
+
saturated-system stability, the first open-source implementation); **Age of Information**
|
|
159
|
+
(average & peak AoI); **bulk-service** queues for LLM inference batching; and
|
|
160
|
+
**graceful-degradation curves** for prediction-based scheduling. See the
|
|
161
|
+
[trends survey](docs/research/queueing-trends-2026.md).
|
|
162
|
+
- **2026** — **Matrix-analytic MAP/PH stack**: PH distributions and MAPs
|
|
163
|
+
(`most_queue.random.map_ph`), a QBD solver with logarithmic reduction, and exact calculators
|
|
164
|
+
for MAP/PH/1, M/PH/1, PH/PH/1, **MAP/M/c**, **MAP/PH/c**, plus **BMAP/M/1** and **BMAP/PH/1**
|
|
165
|
+
for batch arrivals and **MMPP fitting** from data; MAP and PH sources in the simulator. Plus
|
|
166
|
+
retrial queues (orbit) and Erlang-A abandonment with a staffing helper.
|
|
167
|
+
See [`tutorials/map_ph_correlation.ipynb`](tutorials/map_ph_correlation.ipynb).
|
|
154
168
|
- **2026** — Wave of exact classics: Erlang B/C, M/G/∞, GI/G approximations, M/G/1 vacation
|
|
155
169
|
models (multiple vacations, N-policy), PS, LCFS-PR, FB/LAS, unreliable server — each with a
|
|
156
170
|
paired simulator and tests. Illustrated model catalog with generated diagrams.
|
|
@@ -176,6 +190,7 @@ If you use Most-Queue in research, please cite it (see [`CITATION.cff`](CITATION
|
|
|
176
190
|
author = {Khabarov, Roman},
|
|
177
191
|
title = {Most-Queue: queueing theory calculations and simulation in Python},
|
|
178
192
|
url = {https://github.com/xabarov/most-queue},
|
|
193
|
+
doi = {10.5281/zenodo.21268402},
|
|
179
194
|
license = {MIT}
|
|
180
195
|
}
|
|
181
196
|
```
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Most-Queue
|
|
4
4
|
|
|
5
|
-
**Queueing theory in Python: exact analytical solvers paired with discrete-event simulation — for
|
|
5
|
+
**Queueing theory in Python: exact analytical solvers paired with discrete-event simulation — for 50+ models from M/M/1 to multiserver-jobs, RDR priorities, SRPT scheduling, age of information, vacations and queueing networks.**
|
|
6
6
|
|
|
7
7
|
[🇷🇺 Русская версия](README.ru.md)
|
|
8
8
|
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
[](https://pypi.org/project/most-queue/)
|
|
12
12
|
[](https://github.com/xabarov/most-queue/blob/main/LICENSE)
|
|
13
13
|
[](https://pepy.tech/project/most-queue)
|
|
14
|
+
[](https://doi.org/10.5281/zenodo.21268402)
|
|
14
15
|
[](https://github.com/xabarov/most-queue/commits/main)
|
|
15
16
|
|
|
16
17
|
<img src="https://raw.githubusercontent.com/xabarov/most-queue/main/assets/most-queue-nano1.jpeg" alt="Most-Queue banner" width="720"/>
|
|
@@ -65,7 +66,7 @@ print(f"Mean waiting time: theory {theory.w[0]:.3f} vs simulation {experiment.w[
|
|
|
65
66
|
Computed by the library's own calculators — conditional slowdown `E[T(x)]/x` by job size
|
|
66
67
|
for FCFS, PS, FB (blind) and SRPT (size-aware):
|
|
67
68
|
|
|
68
|
-
<img src="https://raw.githubusercontent.com/xabarov/most-queue/main/docs/figures/
|
|
69
|
+
<img src="https://raw.githubusercontent.com/xabarov/most-queue/main/docs/figures/slowdown.png" alt="Slowdown by job size for FCFS/PS/FB/SRPT" width="720"/>
|
|
69
70
|
|
|
70
71
|
See the executable comparison of **9 disciplines** in
|
|
71
72
|
[`tutorials/disciplines_comparison.ipynb`](tutorials/disciplines_comparison.ipynb).
|
|
@@ -76,15 +77,19 @@ See the executable comparison of **9 disciplines** in
|
|
|
76
77
|
|---|---|---|
|
|
77
78
|
| Classic FIFO | M/M/c, M/M/c/r, Erlang B/C, M/G/1, GI/M/c, M/D/c, Eₖ/D/c, M/G/∞ | exact |
|
|
78
79
|
| Multi-server phase-type | M/H₂/c, H₂/M/c, H₂/H₂/c (CV < 1 via complex fit) | Takahashi–Takami |
|
|
79
|
-
| Size-based scheduling | M/G/1 SRPT, SJF, PSJF, SPJF (with size predictors), FB/LAS, PS, LCFS-PR | exact (Schrage–Miller, Mitzenmacher) |
|
|
80
|
-
| Priorities | M/G/1 PR/NP multi-class, M/G/c PR/NP, M/Ph/c PR | exact / invariant approximation |
|
|
80
|
+
| Size-based scheduling | M/G/1 SRPT, SJF, PSJF, SPJF (with size predictors + graceful-degradation curves), FB/LAS, PS, LCFS-PR | exact (Schrage–Miller, Mitzenmacher) |
|
|
81
|
+
| Priorities | M/G/1 PR/NP multi-class, M/G/c PR/NP, M/Ph/c PR; **RDR** M/M/k & M/PH/k multi-class (exact + RDR-A), per-class response variance | exact / RDR / invariant approximation |
|
|
82
|
+
| Multiserver-job (MSJ) | jobs holding several servers at once — FCFS response time, saturated-system stability/throughput | exact CTMC / saturated product-form |
|
|
83
|
+
| Age of Information | M/M/1, M/G/1, preemptive-LCFS — average & peak AoI | closed-form + simulation |
|
|
81
84
|
| Vacations & warm-up | M/G/1 multiple vacations, N-policy, warm-up/cooling/delay (M/Ph/c) | Fuhrmann–Cooper, Takahashi–Takami |
|
|
82
85
|
| Negative customers | M/G/1 and M/G/c with RCS or disasters | exact / Takahashi–Takami |
|
|
83
86
|
| Reliability | M/G/1 with breakdowns & repairs | Avi-Itzhak–Naor |
|
|
84
|
-
| Matrix-analytic | MAP/PH/1, M/PH/1, PH/PH/1 — correlated (bursty) arrivals | QBD, logarithmic reduction |
|
|
87
|
+
| Matrix-analytic (MAP/PH) | MAP/PH/1, M/PH/1, PH/PH/1, MAP/M/c, MAP/PH/c — correlated (bursty) arrivals, single- & multi-server; MMPP fitting | QBD, logarithmic reduction |
|
|
88
|
+
| Batch Markovian arrivals | BMAP/M/1, BMAP/PH/1 — correlated batch traffic | level truncation |
|
|
85
89
|
| Retrial & abandonment | M/M/1 and M/G/1 retrial (orbit), Erlang-A (M/M/n+M) with staffing | exact / Falin–Templeton |
|
|
86
90
|
| GI/G approximations | GI/G/1, GI/G/m mean waiting time | Kingman, Krämer–Langenbach-Belz, Allen–Cunneen |
|
|
87
|
-
| Batch
|
|
91
|
+
| Batch arrivals & bulk service | Mˣ/M/1 batch arrivals; M/M^[a,b]/1 bulk (batch) service — LLM inference batching | exact |
|
|
92
|
+
| Impatience & closed | M/M/1+M, Engset | exact |
|
|
88
93
|
| Parallel service | Fork-Join, Split-Join | Markovian / order statistics |
|
|
89
94
|
| Networks | open networks, priority networks, networks with negative customers, routing optimization | decomposition |
|
|
90
95
|
|
|
@@ -95,7 +100,7 @@ Every model comes with a plain-language explanation and a diagram in the
|
|
|
95
100
|
|
|
96
101
|
- 📖 [Documentation](docs/README.md) — concepts, calculation and simulation guides (English; Russian versions available via in-page switchers)
|
|
97
102
|
- 🎓 [Jupyter tutorials](tutorials/) — from a first M/M/1 to Takahashi–Takami and SRPT
|
|
98
|
-
- 🗺 [Development roadmaps](docs/epics/README.md) — what's next (
|
|
103
|
+
- 🗺 [Development roadmaps](docs/epics/README.md) — what's next (closed networks / MVA, multi-server retrial, polling)
|
|
99
104
|
- 🧪 [Tests](tests/) — every model validated against simulation; run with `pytest -m "not slow"`
|
|
100
105
|
|
|
101
106
|
## Applications
|
|
@@ -106,10 +111,19 @@ scheduling research (SRPT/LAS with ML size predictions).
|
|
|
106
111
|
|
|
107
112
|
## Recent highlights
|
|
108
113
|
|
|
109
|
-
- **2026** — **
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
114
|
+
- **2026 (v2.9)** — **Datacenter & multi-priority wave**: **RDR** for multi-server multi-class
|
|
115
|
+
preemptive priorities (M/M/k and M/PH/k, exact + RDR-A, per-class response-time variance);
|
|
116
|
+
the **multiserver-job** model (jobs holding several servers at once — FCFS response time and
|
|
117
|
+
saturated-system stability, the first open-source implementation); **Age of Information**
|
|
118
|
+
(average & peak AoI); **bulk-service** queues for LLM inference batching; and
|
|
119
|
+
**graceful-degradation curves** for prediction-based scheduling. See the
|
|
120
|
+
[trends survey](docs/research/queueing-trends-2026.md).
|
|
121
|
+
- **2026** — **Matrix-analytic MAP/PH stack**: PH distributions and MAPs
|
|
122
|
+
(`most_queue.random.map_ph`), a QBD solver with logarithmic reduction, and exact calculators
|
|
123
|
+
for MAP/PH/1, M/PH/1, PH/PH/1, **MAP/M/c**, **MAP/PH/c**, plus **BMAP/M/1** and **BMAP/PH/1**
|
|
124
|
+
for batch arrivals and **MMPP fitting** from data; MAP and PH sources in the simulator. Plus
|
|
125
|
+
retrial queues (orbit) and Erlang-A abandonment with a staffing helper.
|
|
126
|
+
See [`tutorials/map_ph_correlation.ipynb`](tutorials/map_ph_correlation.ipynb).
|
|
113
127
|
- **2026** — Wave of exact classics: Erlang B/C, M/G/∞, GI/G approximations, M/G/1 vacation
|
|
114
128
|
models (multiple vacations, N-policy), PS, LCFS-PR, FB/LAS, unreliable server — each with a
|
|
115
129
|
paired simulator and tests. Illustrated model catalog with generated diagrams.
|
|
@@ -135,6 +149,7 @@ If you use Most-Queue in research, please cite it (see [`CITATION.cff`](CITATION
|
|
|
135
149
|
author = {Khabarov, Roman},
|
|
136
150
|
title = {Most-Queue: queueing theory calculations and simulation in Python},
|
|
137
151
|
url = {https://github.com/xabarov/most-queue},
|
|
152
|
+
doi = {10.5281/zenodo.21268402},
|
|
138
153
|
license = {MIT}
|
|
139
154
|
}
|
|
140
155
|
```
|
|
@@ -46,3 +46,14 @@
|
|
|
46
46
|
| [EPIC-003](EPIC-003-qbd-map-ph.md) | QBD/MAP/PH-стек (матрично-аналитические методы) | done |
|
|
47
47
|
| [EPIC-004](EPIC-004-retrial-erlang-a.md) | Retrial-очереди и Erlang-A | done |
|
|
48
48
|
| [EPIC-005](EPIC-005-illustrated-catalog.md) | Иллюстрированный каталог моделей (простые описания + схемы) | done |
|
|
49
|
+
| [EPIC-006](EPIC-006-english-docs.md) | EN-центричная документация (перевод + двуязычные схемы) | done |
|
|
50
|
+
| [EPIC-007](EPIC-007-map-phase2.md) | MAP-стек, фаза 2 (MAP/M/c, MAP/PH/c, фиттинг, BMAP/M/1) | done |
|
|
51
|
+
| [EPIC-008](EPIC-008-map-phase3.md) | MAP-стек, фаза 3 (BMAP/PH/1 общего вида) | done |
|
|
52
|
+
| [EPIC-009](EPIC-009-rdr-priority.md) | RDR: многоканальные многоприоритетные СМО (оптимизация G-матрицы + RDR-A + точная CTMC + фикс сходимости + аудит статьи) | done |
|
|
53
|
+
| [EPIC-010](EPIC-010-age-of-information.md) | Age of Information (AoI/PAoI) — свежесть информации | done |
|
|
54
|
+
| [EPIC-011](EPIC-011-multiserver-job.md) | Multiserver-job (MSJ): заявка занимает k серверов одновременно | done |
|
|
55
|
+
| [EPIC-012](EPIC-012-bulk-service.md) | Bulk-service очереди (batching, LLM inference) | done |
|
|
56
|
+
| [EPIC-013](EPIC-013-predictions-scheduling.md) | Планирование с предсказаниями (learning-augmented) | done |
|
|
57
|
+
|
|
58
|
+
Направления EPIC-010…013 выбраны по обзору трендов сообщества:
|
|
59
|
+
[../research/queueing-trends-2026.md](../research/queueing-trends-2026.md).
|
|
@@ -5,12 +5,18 @@ This package provides both simulation and numerical calculation methods
|
|
|
5
5
|
for various types of queueing systems and networks.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
from importlib.metadata import PackageNotFoundError, version
|
|
9
9
|
|
|
10
10
|
# Import main simulation and theory classes for easy access
|
|
11
11
|
from most_queue.sim.base import QsSim
|
|
12
12
|
from most_queue.theory.base_queue import BaseQueue
|
|
13
13
|
|
|
14
|
+
try:
|
|
15
|
+
# single source of truth for the version: the installed package metadata
|
|
16
|
+
__version__ = version("most-queue")
|
|
17
|
+
except PackageNotFoundError: # running from a source checkout that is not installed
|
|
18
|
+
__version__ = "0.0.0.dev0"
|
|
19
|
+
|
|
14
20
|
__all__ = [
|
|
15
21
|
"QsSim",
|
|
16
22
|
"BaseQueue",
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Fitting a Markovian Arrival Process (MAP) to data.
|
|
3
|
+
|
|
4
|
+
The workhorse is the two-state MMPP (MMPP-2): a Poisson process whose rate
|
|
5
|
+
switches between two levels driven by a two-state Markov chain. It is fitted
|
|
6
|
+
by matching three interarrival statistics — the rate, the squared coefficient
|
|
7
|
+
of variation (SCV) and the lag-1 autocorrelation — for which the MAP has
|
|
8
|
+
closed-form expressions (see ``most_queue.random.map_ph``).
|
|
9
|
+
|
|
10
|
+
An MMPP is always overdispersed and positively correlated: SCV >= 1 and
|
|
11
|
+
lag-1 correlation >= 0. Targets outside this region cannot be represented by
|
|
12
|
+
an MMPP-2 and raise a clear error.
|
|
13
|
+
|
|
14
|
+
References:
|
|
15
|
+
Fischer W., Meier-Hellstern K. The Markov-modulated Poisson process (MMPP)
|
|
16
|
+
cookbook. Performance Evaluation, 18(2), 1993.
|
|
17
|
+
doi:10.1016/0166-5316(93)90035-s.
|
|
18
|
+
Heffes H., Lucantoni D. A Markov modulated characterization of packetized
|
|
19
|
+
voice and data traffic. IEEE JSAC, 4(6), 1986. doi:10.1109/JSAC.1986.1146428.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
import numpy as np
|
|
23
|
+
from scipy.optimize import least_squares
|
|
24
|
+
|
|
25
|
+
from most_queue.random.map_ph import MAP, MAPParams
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def map_statistics(params: MAPParams) -> tuple[float, float, float]:
|
|
29
|
+
"""
|
|
30
|
+
Return (rate, scv, lag1) of a MAP: fundamental arrival rate, squared
|
|
31
|
+
coefficient of variation and lag-1 autocorrelation of interarrival times.
|
|
32
|
+
"""
|
|
33
|
+
rate = MAP.arrival_rate(params)
|
|
34
|
+
moments = MAP.calc_theory_moments(params, 2)
|
|
35
|
+
m1, m2 = moments[0], moments[1]
|
|
36
|
+
scv = m2 / (m1 * m1) - 1.0
|
|
37
|
+
lag1 = MAP.lag_correlation(params, 1)
|
|
38
|
+
return rate, scv, lag1
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def _mmpp2_from_vector(x: np.ndarray) -> MAPParams:
|
|
42
|
+
"""Build an MMPP-2 from log-parameters x = log([l1, l2, q12, q21])."""
|
|
43
|
+
l1, l2, q12, q21 = np.exp(x)
|
|
44
|
+
return MAP.mmpp([l1, l2], np.array([[-q12, q12], [q21, -q21]]))
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def fit_mmpp2(
|
|
48
|
+
rate: float,
|
|
49
|
+
scv: float,
|
|
50
|
+
lag1: float,
|
|
51
|
+
n_restarts: int = 6,
|
|
52
|
+
tol: float = 1e-9,
|
|
53
|
+
) -> MAPParams:
|
|
54
|
+
"""
|
|
55
|
+
Fit an MMPP-2 matching the given interarrival rate, SCV and lag-1
|
|
56
|
+
autocorrelation.
|
|
57
|
+
|
|
58
|
+
:param rate: target fundamental arrival rate (> 0)
|
|
59
|
+
:param scv: target squared coefficient of variation (>= 1 for an MMPP)
|
|
60
|
+
:param lag1: target lag-1 autocorrelation (>= 0 for an MMPP)
|
|
61
|
+
:param n_restarts: number of random restarts for the local optimizer
|
|
62
|
+
:param tol: acceptable residual norm to stop early
|
|
63
|
+
:return: MAPParams of the fitted MMPP-2
|
|
64
|
+
:raises ValueError: if the target is outside the MMPP-representable region
|
|
65
|
+
"""
|
|
66
|
+
if rate <= 0:
|
|
67
|
+
raise ValueError(f"rate must be positive, got {rate}")
|
|
68
|
+
if scv < 1.0 - 1e-6:
|
|
69
|
+
raise ValueError(f"an MMPP-2 requires SCV >= 1 (overdispersed), got {scv:.4f}")
|
|
70
|
+
if lag1 < -1e-6:
|
|
71
|
+
raise ValueError(f"an MMPP-2 requires non-negative lag-1 correlation, got {lag1:.4f}")
|
|
72
|
+
|
|
73
|
+
target = np.array([rate, scv, lag1])
|
|
74
|
+
weights = np.array([1.0 / max(rate, 1e-9), 1.0, 1.0])
|
|
75
|
+
|
|
76
|
+
def residuals(x: np.ndarray) -> np.ndarray:
|
|
77
|
+
try:
|
|
78
|
+
stats = np.array(map_statistics(_mmpp2_from_vector(x)))
|
|
79
|
+
except (np.linalg.LinAlgError, ValueError):
|
|
80
|
+
return np.full(3, 1e3)
|
|
81
|
+
return (stats - target) * weights
|
|
82
|
+
|
|
83
|
+
rng = np.random.default_rng(12345)
|
|
84
|
+
best = np.log([rate, rate, 0.1 * rate + 1e-3, 0.1 * rate + 1e-3])
|
|
85
|
+
best_cost = np.inf
|
|
86
|
+
for k in range(max(1, n_restarts)):
|
|
87
|
+
if k == 0:
|
|
88
|
+
# deterministic heuristic start: rates spread by the overdispersion,
|
|
89
|
+
# slow switching to create the correlation
|
|
90
|
+
spread = 1.0 + np.sqrt(max(scv - 1.0, 0.0))
|
|
91
|
+
x0 = np.log([rate * spread, rate / spread, 0.1 * rate + 1e-3, 0.1 * rate + 1e-3])
|
|
92
|
+
else:
|
|
93
|
+
x0 = np.log(rate) + rng.uniform(-2.0, 2.0, size=4)
|
|
94
|
+
# trf (not lm): the 4-parameter MMPP-2 is under-determined by the
|
|
95
|
+
# 3 target statistics, so residuals < variables is expected
|
|
96
|
+
sol = least_squares(residuals, x0, method="trf", max_nfev=2000)
|
|
97
|
+
if sol.cost < best_cost:
|
|
98
|
+
best, best_cost = sol.x, sol.cost
|
|
99
|
+
if np.linalg.norm(sol.fun) < tol:
|
|
100
|
+
break
|
|
101
|
+
|
|
102
|
+
fitted = _mmpp2_from_vector(best)
|
|
103
|
+
achieved = map_statistics(fitted)
|
|
104
|
+
err = np.abs(np.array(achieved) - target) * weights
|
|
105
|
+
if np.max(err) > 1e-2:
|
|
106
|
+
raise ValueError(
|
|
107
|
+
f"failed to fit MMPP-2 to (rate={rate:.4f}, scv={scv:.4f}, lag1={lag1:.4f}); "
|
|
108
|
+
f"achieved (rate={achieved[0]:.4f}, scv={achieved[1]:.4f}, lag1={achieved[2]:.4f}). "
|
|
109
|
+
"The target may be near the boundary of the MMPP-representable region."
|
|
110
|
+
)
|
|
111
|
+
return fitted
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
def trace_statistics(interarrivals) -> tuple[float, float, float]:
|
|
115
|
+
"""
|
|
116
|
+
Empirical (rate, scv, lag1) of a sequence of interarrival times.
|
|
117
|
+
"""
|
|
118
|
+
x = np.asarray(interarrivals, dtype=float)
|
|
119
|
+
if x.size < 3:
|
|
120
|
+
raise ValueError("need at least 3 interarrival samples")
|
|
121
|
+
mean = x.mean()
|
|
122
|
+
scv = x.var() / (mean * mean)
|
|
123
|
+
lag1 = float(np.corrcoef(x[:-1], x[1:])[0, 1])
|
|
124
|
+
return 1.0 / mean, scv, lag1
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
def fit_map_from_trace(interarrivals, **kwargs) -> MAPParams:
|
|
128
|
+
"""
|
|
129
|
+
Fit an MMPP-2 to a trace of interarrival times by matching its empirical
|
|
130
|
+
rate, SCV and lag-1 autocorrelation.
|
|
131
|
+
|
|
132
|
+
:param interarrivals: sequence of interarrival times
|
|
133
|
+
:param kwargs: forwarded to :func:`fit_mmpp2`
|
|
134
|
+
:return: MAPParams of the fitted MMPP-2
|
|
135
|
+
"""
|
|
136
|
+
rate, scv, lag1 = trace_statistics(interarrivals)
|
|
137
|
+
return fit_mmpp2(rate, max(scv, 1.0), max(lag1, 0.0), **kwargs)
|
|
@@ -43,6 +43,54 @@ class MAPParams:
|
|
|
43
43
|
D1: np.ndarray # transitions generating an arrival, shape (m, m)
|
|
44
44
|
|
|
45
45
|
|
|
46
|
+
@dataclass
|
|
47
|
+
class BMAPParams:
|
|
48
|
+
"""
|
|
49
|
+
Batch Markovian Arrival Process parameters: a list of matrices
|
|
50
|
+
D[0], D[1], D[2], ... where D[0] holds phase transitions without arrivals
|
|
51
|
+
and D[k] (k >= 1) holds transitions that generate a batch of k arrivals.
|
|
52
|
+
sum_k D[k] is the generator of the phase process.
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
D: list # [D0, D1, D2, ...], each an (m, m) matrix
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def bmap_poisson_batch(rate: float, batch_probs: list) -> BMAPParams:
|
|
59
|
+
"""
|
|
60
|
+
Single-phase BMAP: batches arrive as a Poisson process of intensity
|
|
61
|
+
``rate`` with batch-size probabilities ``batch_probs`` (batch_probs[k-1] is
|
|
62
|
+
P(batch size = k)). Equivalent to the M^[X]/... batch arrival stream.
|
|
63
|
+
"""
|
|
64
|
+
p = np.asarray(batch_probs, dtype=float)
|
|
65
|
+
if abs(p.sum() - 1.0) > 1e-9 or np.any(p < 0):
|
|
66
|
+
raise ValueError("batch_probs must be a probability vector")
|
|
67
|
+
d = [np.array([[-rate]])]
|
|
68
|
+
for pk in p:
|
|
69
|
+
d.append(np.array([[rate * pk]]))
|
|
70
|
+
return BMAPParams(D=d)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def bmap_from_map(params: MAPParams) -> BMAPParams:
|
|
74
|
+
"""A MAP as a BMAP with only size-1 batches (D[1] = D1)."""
|
|
75
|
+
return BMAPParams(D=[np.asarray(params.D0, dtype=float), np.asarray(params.D1, dtype=float)])
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def bmap_arrival_rate(params: BMAPParams) -> float:
|
|
79
|
+
"""
|
|
80
|
+
Fundamental arrival rate of a BMAP: pi @ (sum_k k * D[k]) @ 1, where pi is
|
|
81
|
+
the stationary distribution of the phase generator sum_k D[k].
|
|
82
|
+
"""
|
|
83
|
+
mats = [np.asarray(x, dtype=float) for x in params.D]
|
|
84
|
+
gen = np.sum(mats, axis=0)
|
|
85
|
+
m = gen.shape[0]
|
|
86
|
+
a = np.vstack([gen.T, np.ones(m)])
|
|
87
|
+
b = np.zeros(m + 1)
|
|
88
|
+
b[-1] = 1.0
|
|
89
|
+
pi, *_ = np.linalg.lstsq(a, b, rcond=None)
|
|
90
|
+
batch_rate = np.sum([k * mats[k] for k in range(1, len(mats))], axis=0)
|
|
91
|
+
return float(pi @ batch_rate @ np.ones(m))
|
|
92
|
+
|
|
93
|
+
|
|
46
94
|
def _validate_ph(alpha: np.ndarray, T: np.ndarray) -> None:
|
|
47
95
|
if T.ndim != 2 or T.shape[0] != T.shape[1]:
|
|
48
96
|
raise ValueError("T must be a square matrix")
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Discrete-event simulator for Age of Information (AoI).
|
|
3
|
+
|
|
4
|
+
Tracks the sawtooth age process Delta(t) = t - u(t), where u(t) is the
|
|
5
|
+
generation time of the freshest *delivered* update, and reports the time-average
|
|
6
|
+
AoI and the average peak AoI (PAoI). Supports FCFS, LCFS (non-preemptive) and
|
|
7
|
+
LCFS-preemptive (a fresh arrival preempts and discards the in-service update)
|
|
8
|
+
disciplines on one or more servers.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from most_queue.random.utils.create import create_distribution
|
|
12
|
+
from most_queue.sim.base_core import BaseSimulationCore
|
|
13
|
+
from most_queue.structs import AoIResults
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class AoISim(BaseSimulationCore):
|
|
17
|
+
"""
|
|
18
|
+
Age-of-Information simulator.
|
|
19
|
+
|
|
20
|
+
:param num_channels: number of servers.
|
|
21
|
+
:param discipline: "FCFS", "LCFS" (non-preemptive) or "LCFS-PR" (preemptive:
|
|
22
|
+
a new update preempts and discards the one in service).
|
|
23
|
+
:param seed: RNG seed for reproducible runs.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
def __init__(self, num_channels: int = 1, discipline: str = "FCFS", seed: int | None = None):
|
|
27
|
+
super().__init__(seed=seed)
|
|
28
|
+
self.n = num_channels
|
|
29
|
+
self.discipline = discipline.upper()
|
|
30
|
+
if self.discipline == "LCFS-PR" and num_channels != 1:
|
|
31
|
+
raise ValueError("LCFS-PR is only supported for a single server")
|
|
32
|
+
self.source = None
|
|
33
|
+
self.server = None
|
|
34
|
+
self.is_sources_set = False
|
|
35
|
+
self.is_servers_set = False
|
|
36
|
+
|
|
37
|
+
def set_sources(self, params, kendall_notation: str = "M"):
|
|
38
|
+
"""Set the arrival (update generation) process."""
|
|
39
|
+
self.source = create_distribution(params, kendall_notation, self.generator)
|
|
40
|
+
self.is_sources_set = True
|
|
41
|
+
|
|
42
|
+
def set_servers(self, params, kendall_notation: str = "M"):
|
|
43
|
+
"""Set the service (update delivery) process."""
|
|
44
|
+
self.server = create_distribution(params, kendall_notation, self.generator)
|
|
45
|
+
self.is_servers_set = True
|
|
46
|
+
|
|
47
|
+
def run(self, num_updates: int, warmup_fraction: float = 0.05) -> AoIResults:
|
|
48
|
+
"""
|
|
49
|
+
Run until `num_updates` fresh deliveries have been counted after warm-up.
|
|
50
|
+
|
|
51
|
+
:param warmup_fraction: initial fraction of deliveries discarded before
|
|
52
|
+
age accounting begins (removes transient bias).
|
|
53
|
+
"""
|
|
54
|
+
if not (self.is_sources_set and self.is_servers_set):
|
|
55
|
+
raise RuntimeError("sources and servers must be set before run()")
|
|
56
|
+
|
|
57
|
+
INF = float("inf")
|
|
58
|
+
t = 0.0
|
|
59
|
+
next_arrival = self.source.generate()
|
|
60
|
+
server_done = [INF] * self.n # completion time per server
|
|
61
|
+
server_gen = [0.0] * self.n # generation time of the update in service
|
|
62
|
+
queue: list[float] = [] # generation times of waiting updates (arrival order)
|
|
63
|
+
|
|
64
|
+
freshest_gen = 0.0 # generation time of the freshest delivered update
|
|
65
|
+
area = 0.0 # integral of the age over the accounting window
|
|
66
|
+
peak_sum = 0.0
|
|
67
|
+
delivered = 0
|
|
68
|
+
counted = 0 # fresh deliveries counted after warm-up
|
|
69
|
+
accounting = False
|
|
70
|
+
acct_start_t = 0.0
|
|
71
|
+
last_t = 0.0
|
|
72
|
+
warmup = int(num_updates * warmup_fraction)
|
|
73
|
+
target = num_updates + warmup
|
|
74
|
+
|
|
75
|
+
def free_server():
|
|
76
|
+
for i in range(self.n):
|
|
77
|
+
if server_done[i] == INF:
|
|
78
|
+
return i
|
|
79
|
+
return -1
|
|
80
|
+
|
|
81
|
+
def start(gen_time):
|
|
82
|
+
i = free_server()
|
|
83
|
+
server_gen[i] = gen_time
|
|
84
|
+
server_done[i] = t + self.server.generate()
|
|
85
|
+
|
|
86
|
+
while delivered < target:
|
|
87
|
+
done_idx = min(range(self.n), key=lambda i: server_done[i])
|
|
88
|
+
next_done = server_done[done_idx]
|
|
89
|
+
|
|
90
|
+
if next_arrival <= next_done:
|
|
91
|
+
# ---- arrival of a new update ----
|
|
92
|
+
t = next_arrival
|
|
93
|
+
next_arrival = t + self.source.generate()
|
|
94
|
+
gen = t
|
|
95
|
+
if self.discipline == "LCFS-PR":
|
|
96
|
+
server_gen[0] = gen
|
|
97
|
+
server_done[0] = t + self.server.generate()
|
|
98
|
+
elif free_server() != -1:
|
|
99
|
+
start(gen)
|
|
100
|
+
else:
|
|
101
|
+
queue.append(gen)
|
|
102
|
+
else:
|
|
103
|
+
# ---- delivery of an update ----
|
|
104
|
+
t = next_done
|
|
105
|
+
gen = server_gen[done_idx]
|
|
106
|
+
server_done[done_idx] = INF
|
|
107
|
+
delivered += 1
|
|
108
|
+
is_fresh = gen > freshest_gen
|
|
109
|
+
|
|
110
|
+
if accounting and is_fresh:
|
|
111
|
+
# age grew as (t - freshest_gen) then resets: accumulate the
|
|
112
|
+
# trapezoid and record the peak (age just before the reset)
|
|
113
|
+
area += ((t - freshest_gen) ** 2 - (last_t - freshest_gen) ** 2) / 2.0
|
|
114
|
+
peak_sum += t - freshest_gen
|
|
115
|
+
last_t = t
|
|
116
|
+
counted += 1
|
|
117
|
+
if is_fresh:
|
|
118
|
+
freshest_gen = gen
|
|
119
|
+
|
|
120
|
+
if not accounting and delivered >= warmup:
|
|
121
|
+
accounting = True
|
|
122
|
+
acct_start_t = t
|
|
123
|
+
last_t = t
|
|
124
|
+
freshest_gen = gen
|
|
125
|
+
|
|
126
|
+
if queue:
|
|
127
|
+
nxt = queue.pop() if self.discipline == "LCFS" else queue.pop(0)
|
|
128
|
+
start(nxt)
|
|
129
|
+
|
|
130
|
+
# area is accumulated up to the last fresh delivery (last_t); the window
|
|
131
|
+
# is [acct_start_t, last_t]
|
|
132
|
+
window = max(last_t - acct_start_t, 1e-12)
|
|
133
|
+
return AoIResults(avg_aoi=area / window, peak_aoi=peak_sum / max(counted, 1))
|
|
@@ -26,15 +26,16 @@ class QsSim(BaseSimulationCore):
|
|
|
26
26
|
Base class for Queueing System Simulator
|
|
27
27
|
"""
|
|
28
28
|
|
|
29
|
-
def __init__(self, num_of_channels, buffer=None, verbose=True, buffer_type="list"):
|
|
29
|
+
def __init__(self, num_of_channels, buffer=None, verbose=True, buffer_type="list", seed=None):
|
|
30
30
|
"""
|
|
31
31
|
Initialize the queueing system with GI/G/n/r or GI/G/n model.
|
|
32
32
|
:param num_of_channels: int : number of channels in the system
|
|
33
33
|
:param buffer: Optional(int, None) : maximum length of the queue, None if infinite
|
|
34
34
|
:param verbose: bool : whether to print detailed information during simulation
|
|
35
35
|
:param buffer_type: str : type of the buffer, "list" or "deque"
|
|
36
|
+
:param seed: Optional(int, None) : RNG seed for reproducible runs (None — non-deterministic)
|
|
36
37
|
"""
|
|
37
|
-
super().__init__()
|
|
38
|
+
super().__init__(seed=seed)
|
|
38
39
|
|
|
39
40
|
self.n = num_of_channels
|
|
40
41
|
self.buffer = buffer
|
|
@@ -13,10 +13,14 @@ class BaseSimulationCore:
|
|
|
13
13
|
Contains common attributes and methods shared across different simulator types.
|
|
14
14
|
"""
|
|
15
15
|
|
|
16
|
-
def __init__(self):
|
|
17
|
-
"""Initialize the base simulation core.
|
|
16
|
+
def __init__(self, seed: int | None = None):
|
|
17
|
+
"""Initialize the base simulation core.
|
|
18
|
+
|
|
19
|
+
:param seed: optional RNG seed for reproducible simulation runs
|
|
20
|
+
(None — non-deterministic, as before).
|
|
21
|
+
"""
|
|
18
22
|
self.ttek = 0 # current simulation time
|
|
19
|
-
self.generator = np.random.default_rng()
|
|
23
|
+
self.generator = np.random.default_rng(seed)
|
|
20
24
|
self.time_spent = 0
|
|
21
25
|
|
|
22
26
|
# Statistics for busy periods
|