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.
Files changed (723) hide show
  1. {most_queue-2.8 → most_queue-2.9}/.gitignore +3 -1
  2. {most_queue-2.8 → most_queue-2.9}/PKG-INFO +27 -12
  3. {most_queue-2.8 → most_queue-2.9}/README.md +26 -11
  4. {most_queue-2.8 → most_queue-2.9}/docs/epics/README.md +11 -0
  5. {most_queue-2.8 → most_queue-2.9}/most_queue/__init__.py +7 -1
  6. most_queue-2.9/most_queue/random/map_fit.py +137 -0
  7. {most_queue-2.8 → most_queue-2.9}/most_queue/random/map_ph.py +48 -0
  8. most_queue-2.9/most_queue/sim/aoi.py +133 -0
  9. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/base.py +3 -2
  10. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/base_core.py +7 -3
  11. most_queue-2.9/most_queue/sim/bmap.py +130 -0
  12. most_queue-2.9/most_queue/sim/bulk_service.py +95 -0
  13. most_queue-2.9/most_queue/sim/msj.py +117 -0
  14. {most_queue-2.8 → most_queue-2.9}/most_queue/structs.py +9 -0
  15. most_queue-2.9/most_queue/theory/aoi/__init__.py +5 -0
  16. most_queue-2.9/most_queue/theory/aoi/calc.py +114 -0
  17. most_queue-2.9/most_queue/theory/batch/__init__.py +7 -0
  18. most_queue-2.9/most_queue/theory/batch/bulk_service.py +138 -0
  19. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/batch/mm1.py +3 -2
  20. most_queue-2.9/most_queue/theory/closed/__init__.py +7 -0
  21. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/__init__.py +12 -0
  22. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/gi_m_1.py +10 -13
  23. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/mgn_takahasi.py +33 -0
  24. most_queue-2.9/most_queue/theory/fork_join/__init__.py +11 -0
  25. most_queue-2.9/most_queue/theory/impatience/__init__.py +11 -0
  26. most_queue-2.9/most_queue/theory/matrix/__init__.py +22 -0
  27. most_queue-2.9/most_queue/theory/matrix/bmap_m1.py +163 -0
  28. most_queue-2.9/most_queue/theory/matrix/bmap_ph1.py +180 -0
  29. most_queue-2.9/most_queue/theory/matrix/map_mmc.py +190 -0
  30. most_queue-2.9/most_queue/theory/matrix/map_phc.py +278 -0
  31. most_queue-2.9/most_queue/theory/msj/__init__.py +7 -0
  32. most_queue-2.9/most_queue/theory/msj/exact.py +123 -0
  33. most_queue-2.9/most_queue/theory/msj/saturated.py +138 -0
  34. most_queue-2.9/most_queue/theory/negative/__init__.py +15 -0
  35. most_queue-2.9/most_queue/theory/networks/__init__.py +13 -0
  36. most_queue-2.9/most_queue/theory/priority/__init__.py +19 -0
  37. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/priority/preemptive/mm2_3cls_busy_approx.py +9 -12
  38. most_queue-2.9/most_queue/theory/priority/preemptive/mmk_prty_exact.py +315 -0
  39. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/priority/preemptive/mmn_2cls_pr_busy_approx.py +9 -12
  40. most_queue-2.9/most_queue/theory/priority/preemptive/mph_ph_k_2class.py +227 -0
  41. most_queue-2.9/most_queue/theory/priority/preemptive/rdr_a.py +185 -0
  42. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/srpt/__init__.py +3 -0
  43. most_queue-2.9/most_queue/theory/srpt/degradation.py +71 -0
  44. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/passage_time.py +48 -37
  45. most_queue-2.9/most_queue/theory/vacations/__init__.py +20 -0
  46. {most_queue-2.8 → most_queue-2.9}/pyproject.toml +14 -1
  47. most_queue-2.8/.claude/skills/lit-search/SKILL.md +0 -39
  48. most_queue-2.8/.claude/skills/lit-search/lit_search.py +0 -144
  49. most_queue-2.8/.cursor/rules/pytest-quality.mdc +0 -45
  50. most_queue-2.8/.cursor/rules/python-quality.mdc +0 -98
  51. most_queue-2.8/.cursor/skills/add-theory-calculator/SKILL.md +0 -130
  52. most_queue-2.8/.cursor/skills/theory-vs-sim-test/SKILL.md +0 -122
  53. most_queue-2.8/.cursorrules +0 -3
  54. most_queue-2.8/.gitattributes +0 -6
  55. most_queue-2.8/.github/workflows/tests.yml +0 -34
  56. most_queue-2.8/.pre-commit-config.yaml +0 -48
  57. most_queue-2.8/CITATION.cff +0 -37
  58. most_queue-2.8/README.ru.md +0 -153
  59. most_queue-2.8/assets/3.gif +0 -0
  60. most_queue-2.8/assets/most-queue-logo.png +0 -0
  61. most_queue-2.8/assets/most-queue-nano.png +0 -0
  62. most_queue-2.8/assets/most-queue-nano1.jpeg +0 -0
  63. most_queue-2.8/assets/most-queue-nano2.jpeg +0 -0
  64. most_queue-2.8/deploy.txt +0 -3
  65. most_queue-2.8/docs/DOD.md +0 -50
  66. most_queue-2.8/docs/INFRASTRUCTURE.md +0 -56
  67. most_queue-2.8/docs/PROJECT.md +0 -92
  68. most_queue-2.8/docs/README.ru.md +0 -119
  69. most_queue-2.8/docs/calculation.md +0 -541
  70. most_queue-2.8/docs/calculation.ru.md +0 -542
  71. most_queue-2.8/docs/concepts.md +0 -335
  72. most_queue-2.8/docs/concepts.ru.md +0 -335
  73. most_queue-2.8/docs/custom_simulators.md +0 -431
  74. most_queue-2.8/docs/custom_simulators.ru.md +0 -432
  75. most_queue-2.8/docs/distributions.md +0 -430
  76. most_queue-2.8/docs/distributions.ru.md +0 -431
  77. most_queue-2.8/docs/epics/EPIC-001-queueing-models-gap-analysis.md +0 -142
  78. most_queue-2.8/docs/epics/EPIC-002-wave1-exact-models.md +0 -86
  79. most_queue-2.8/docs/epics/EPIC-003-qbd-map-ph.md +0 -57
  80. most_queue-2.8/docs/epics/EPIC-004-retrial-erlang-a.md +0 -48
  81. most_queue-2.8/docs/epics/EPIC-005-illustrated-catalog.md +0 -45
  82. most_queue-2.8/docs/epics/EPIC-006-english-docs.md +0 -41
  83. most_queue-2.8/docs/examples.md +0 -406
  84. most_queue-2.8/docs/examples.ru.md +0 -407
  85. most_queue-2.8/docs/figures/batch.png +0 -0
  86. most_queue-2.8/docs/figures/disciplines_timeline.png +0 -0
  87. most_queue-2.8/docs/figures/engset.png +0 -0
  88. most_queue-2.8/docs/figures/fifo_mmn.png +0 -0
  89. most_queue-2.8/docs/figures/fork_join.png +0 -0
  90. most_queue-2.8/docs/figures/generate_figures.py +0 -814
  91. most_queue-2.8/docs/figures/impatience.png +0 -0
  92. most_queue-2.8/docs/figures/lcfs_pr.png +0 -0
  93. most_queue-2.8/docs/figures/loss.png +0 -0
  94. most_queue-2.8/docs/figures/m_g_inf.png +0 -0
  95. most_queue-2.8/docs/figures/map_arrivals.png +0 -0
  96. most_queue-2.8/docs/figures/n_policy.png +0 -0
  97. most_queue-2.8/docs/figures/negative.png +0 -0
  98. most_queue-2.8/docs/figures/priority.png +0 -0
  99. most_queue-2.8/docs/figures/ps.png +0 -0
  100. most_queue-2.8/docs/figures/retrial.png +0 -0
  101. most_queue-2.8/docs/figures/slowdown.png +0 -0
  102. most_queue-2.8/docs/figures/slowdown_en.png +0 -0
  103. most_queue-2.8/docs/figures/unreliable.png +0 -0
  104. most_queue-2.8/docs/figures/vacations.png +0 -0
  105. most_queue-2.8/docs/getting_started.md +0 -183
  106. most_queue-2.8/docs/getting_started.ru.md +0 -183
  107. most_queue-2.8/docs/models.md +0 -1046
  108. most_queue-2.8/docs/models.ru.md +0 -996
  109. most_queue-2.8/docs/models_gap_analysis.md +0 -151
  110. most_queue-2.8/docs/negative_disasters_time_characteristics.md +0 -146
  111. most_queue-2.8/docs/negative_disasters_time_characteristics.ru.md +0 -147
  112. most_queue-2.8/docs/negative_networks_calculation.md +0 -301
  113. most_queue-2.8/docs/negative_networks_calculation.ru.md +0 -302
  114. most_queue-2.8/docs/negative_rcs_time_characteristics.md +0 -102
  115. most_queue-2.8/docs/negative_rcs_time_characteristics.ru.md +0 -103
  116. most_queue-2.8/docs/networks.md +0 -648
  117. most_queue-2.8/docs/networks.ru.md +0 -649
  118. most_queue-2.8/docs/priorities.md +0 -331
  119. most_queue-2.8/docs/priorities.ru.md +0 -332
  120. most_queue-2.8/docs/roadmaps/qbd_map_ph_roadmap.md +0 -67
  121. most_queue-2.8/docs/roadmaps/retrial_erlang_a_roadmap.md +0 -62
  122. most_queue-2.8/docs/roadmaps/srpt_spjf_roadmap.md +0 -269
  123. most_queue-2.8/docs/roadmaps/wave1_exact_models_roadmap.md +0 -92
  124. most_queue-2.8/docs/simulation.md +0 -428
  125. most_queue-2.8/docs/simulation.ru.md +0 -429
  126. most_queue-2.8/docs/srpt_spjf_methods.md +0 -165
  127. most_queue-2.8/docs/srpt_spjf_methods.ru.md +0 -165
  128. most_queue-2.8/docs/tesaurus.md +0 -287
  129. most_queue-2.8/docs/tesaurus.ru.md +0 -285
  130. most_queue-2.8/examples/custom_network_example.py +0 -161
  131. most_queue-2.8/examples/custom_simulator_example.py +0 -143
  132. most_queue-2.8/examples/srpt_table.py +0 -153
  133. most_queue-2.8/googleb31d3dccb40f969f.html +0 -1
  134. most_queue-2.8/most_queue/theory/impatience/__init__.py +0 -0
  135. most_queue-2.8/most_queue/theory/matrix/__init__.py +0 -7
  136. most_queue-2.8/most_queue/theory/networks/__init__.py +0 -8
  137. most_queue-2.8/most_queue/theory/networks/opt/__init__.py +0 -0
  138. most_queue-2.8/most_queue/theory/priority/__init__.py +0 -13
  139. most_queue-2.8/most_queue/theory/priority/non_preemptive/__init__.py +0 -0
  140. most_queue-2.8/most_queue/theory/priority/preemptive/__init__.py +0 -0
  141. most_queue-2.8/most_queue/theory/vacations/__init__.py +0 -0
  142. most_queue-2.8/requirements.txt +0 -168
  143. most_queue-2.8/tests/Dockerfile +0 -13
  144. most_queue-2.8/tests/__init__.py +0 -0
  145. most_queue-2.8/tests/default_params.yaml +0 -44
  146. most_queue-2.8/tests/mgn_disaster_w_v_vs_l_neg.png +0 -0
  147. most_queue-2.8/tests/run.sh +0 -5
  148. most_queue-2.8/tests/test_base_qs_sim.py +0 -97
  149. most_queue-2.8/tests/test_batch.py +0 -83
  150. most_queue-2.8/tests/test_ek_d_n.py +0 -102
  151. most_queue-2.8/tests/test_engset.py +0 -78
  152. most_queue-2.8/tests/test_erlang.py +0 -136
  153. most_queue-2.8/tests/test_fj_sim.py +0 -186
  154. most_queue-2.8/tests/test_gi_g_approx.py +0 -145
  155. most_queue-2.8/tests/test_gi_m_1_calc.py +0 -90
  156. most_queue-2.8/tests/test_gi_m_n_calc.py +0 -99
  157. most_queue-2.8/tests/test_h2_h2_n_calc.py +0 -159
  158. most_queue-2.8/tests/test_h2_m_n_calc.py +0 -140
  159. most_queue-2.8/tests/test_impatience.py +0 -69
  160. most_queue-2.8/tests/test_m_d_n_calc.py +0 -81
  161. most_queue-2.8/tests/test_m_g_inf.py +0 -73
  162. most_queue-2.8/tests/test_m_h2_h2warm.py +0 -93
  163. most_queue-2.8/tests/test_m_ph_n_prty.py +0 -136
  164. most_queue-2.8/tests/test_map_ph1.py +0 -161
  165. most_queue-2.8/tests/test_mg1_calc.py +0 -86
  166. most_queue-2.8/tests/test_mg1_disaster.py +0 -90
  167. most_queue-2.8/tests/test_mg1_fb.py +0 -98
  168. most_queue-2.8/tests/test_mg1_predictions_table.py +0 -180
  169. most_queue-2.8/tests/test_mg1_ps_lcfs.py +0 -100
  170. most_queue-2.8/tests/test_mg1_psjf.py +0 -80
  171. most_queue-2.8/tests/test_mg1_rcs.py +0 -73
  172. most_queue-2.8/tests/test_mg1_sjf.py +0 -79
  173. most_queue-2.8/tests/test_mg1_spjf.py +0 -99
  174. most_queue-2.8/tests/test_mg1_srpt.py +0 -80
  175. most_queue-2.8/tests/test_mg1_unreliable.py +0 -109
  176. most_queue-2.8/tests/test_mg1_vacations.py +0 -152
  177. most_queue-2.8/tests/test_mg1_warmup.py +0 -86
  178. most_queue-2.8/tests/test_mgn_disaster.py +0 -309
  179. most_queue-2.8/tests/test_mgn_rcs.py +0 -255
  180. most_queue-2.8/tests/test_mgn_tt.py +0 -106
  181. most_queue-2.8/tests/test_mgn_with_h2_delay_cold_warm.py +0 -220
  182. most_queue-2.8/tests/test_mm2_3cls_prty_busy.py +0 -110
  183. most_queue-2.8/tests/test_mmn_h2cold_h2warm.py +0 -125
  184. most_queue-2.8/tests/test_mmn_prty_busy_approx.py +0 -109
  185. most_queue-2.8/tests/test_negative_network.py +0 -504
  186. most_queue-2.8/tests/test_network_im_prty.py +0 -158
  187. most_queue-2.8/tests/test_network_negative_calc.py +0 -183
  188. most_queue-2.8/tests/test_network_no_prty.py +0 -97
  189. most_queue-2.8/tests/test_network_opt.py +0 -62
  190. most_queue-2.8/tests/test_qs_sim.py +0 -88
  191. most_queue-2.8/tests/test_qs_sim_prty.py +0 -144
  192. most_queue-2.8/tests/test_retrial_erlang_a.py +0 -199
  193. most_queue-2.8/tests/test_size_based_disciplines.py +0 -89
  194. most_queue-2.8/tests/test_size_based_fcfs_regression.py +0 -56
  195. most_queue-2.8/tests/test_srpt_vs_fcfs.py +0 -104
  196. most_queue-2.8/tests/test_tt_vs_sim_cv105.py +0 -132
  197. most_queue-2.8/tests/test_tt_vs_sim_gamma_cvl1.py +0 -126
  198. most_queue-2.8/tests/units/test_busy_moments_calc.py +0 -47
  199. most_queue-2.8/tests/units/test_central_moments.py +0 -43
  200. most_queue-2.8/tests/units/test_conditionals.py +0 -146
  201. most_queue-2.8/tests/units/test_h2_params_cv.py +0 -95
  202. most_queue-2.8/tests/units/test_map_ph.py +0 -101
  203. most_queue-2.8/tests/units/test_queue_priority_size.py +0 -89
  204. most_queue-2.8/tests/units/test_queue_types.py +0 -61
  205. most_queue-2.8/tests/units/test_size_based_rankers.py +0 -86
  206. most_queue-2.8/tests/units/test_tt_up_probs.py +0 -46
  207. most_queue-2.8/tests/units/test_v1_on_channels.py +0 -72
  208. most_queue-2.8/tests/units/test_v1_utlization_approx.py +0 -12
  209. most_queue-2.8/tests/units/test_weibull.py +0 -29
  210. most_queue-2.8/tutorials/disciplines_comparison.ipynb +0 -471
  211. most_queue-2.8/tutorials/m_h2_h2warm.ipynb +0 -272
  212. most_queue-2.8/tutorials/map_ph_correlation.ipynb +0 -2437
  213. most_queue-2.8/tutorials/mgn_takahasi_takami.ipynb +0 -252
  214. most_queue-2.8/tutorials/network_with_priorities.ipynb +0 -381
  215. most_queue-2.8/tutorials/priority_queue.ipynb +0 -378
  216. most_queue-2.8/tutorials/queue_sim.ipynb +0 -456
  217. most_queue-2.8/tutorials/srpt_basics.ipynb +0 -407
  218. most_queue-2.8/works/__init__.py +0 -0
  219. most_queue-2.8/works/articles/habr_article_1.md +0 -258
  220. most_queue-2.8/works/articles/habr_article_1_tables.html +0 -111
  221. most_queue-2.8/works/articles/pics/1.png +0 -0
  222. most_queue-2.8/works/articles/pics/2.png +0 -0
  223. most_queue-2.8/works/articles/pics/3.png +0 -0
  224. most_queue-2.8/works/articles/pics/4.png +0 -0
  225. most_queue-2.8/works/articles/pics/5.png +0 -0
  226. most_queue-2.8/works/negative_queues/README_latex.md +0 -45
  227. most_queue-2.8/works/negative_queues/README_package.txt +0 -32
  228. most_queue-2.8/works/negative_queues/__init__.py +0 -0
  229. most_queue-2.8/works/negative_queues/base_parameters.yaml +0 -31
  230. most_queue-2.8/works/negative_queues/citations.bib +0 -175
  231. most_queue-2.8/works/negative_queues/export_fixed_service_tables.py +0 -181
  232. most_queue-2.8/works/negative_queues/export_tables_from_results.py +0 -248
  233. most_queue-2.8/works/negative_queues/generate_transition_diagrams.py +0 -1015
  234. most_queue-2.8/works/negative_queues/generated_tables_fixed.tex +0 -24
  235. most_queue-2.8/works/negative_queues/most-queue.code-workspace +0 -11
  236. most_queue-2.8/works/negative_queues/negative_queues_figures/channels/results.json +0 -1
  237. most_queue-2.8/works/negative_queues/negative_queues_figures/channels/v_ave.png +0 -0
  238. most_queue-2.8/works/negative_queues/negative_queues_figures/channels/v_ave_err.png +0 -0
  239. most_queue-2.8/works/negative_queues/negative_queues_figures/channels/v_broken_ave.png +0 -0
  240. most_queue-2.8/works/negative_queues/negative_queues_figures/channels/v_broken_ave_err.png +0 -0
  241. most_queue-2.8/works/negative_queues/negative_queues_figures/channels/v_served_ave.png +0 -0
  242. most_queue-2.8/works/negative_queues/negative_queues_figures/channels/v_served_ave_err.png +0 -0
  243. most_queue-2.8/works/negative_queues/negative_queues_figures/channels/w_ave.png +0 -0
  244. most_queue-2.8/works/negative_queues/negative_queues_figures/channels/w_ave_err.png +0 -0
  245. most_queue-2.8/works/negative_queues/negative_queues_figures/coefs/results.json +0 -1
  246. most_queue-2.8/works/negative_queues/negative_queues_figures/coefs/v_ave.png +0 -0
  247. most_queue-2.8/works/negative_queues/negative_queues_figures/coefs/v_ave_err.png +0 -0
  248. most_queue-2.8/works/negative_queues/negative_queues_figures/coefs/v_broken_ave.png +0 -0
  249. most_queue-2.8/works/negative_queues/negative_queues_figures/coefs/v_broken_ave_err.png +0 -0
  250. most_queue-2.8/works/negative_queues/negative_queues_figures/coefs/v_served_ave.png +0 -0
  251. most_queue-2.8/works/negative_queues/negative_queues_figures/coefs/v_served_ave_err.png +0 -0
  252. most_queue-2.8/works/negative_queues/negative_queues_figures/coefs/w_ave.png +0 -0
  253. most_queue-2.8/works/negative_queues/negative_queues_figures/coefs/w_ave_err.png +0 -0
  254. most_queue-2.8/works/negative_queues/negative_queues_figures/combined/v1_n_cv1_2_oldstyle.png +0 -0
  255. most_queue-2.8/works/negative_queues/negative_queues_figures/combined/v1_n_fixed_cv1_2.png +0 -0
  256. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/channels/results.json +0 -1
  257. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/channels/v_ave.png +0 -0
  258. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/channels/v_ave_err.png +0 -0
  259. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/channels/v_broken_ave.png +0 -0
  260. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/channels/v_broken_ave_err.png +0 -0
  261. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/channels/v_served_ave.png +0 -0
  262. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/channels/v_served_ave_err.png +0 -0
  263. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/channels/w_ave.png +0 -0
  264. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/channels/w_ave_err.png +0 -0
  265. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/channels/results.json +0 -1
  266. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/channels/v_ave.png +0 -0
  267. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/channels/v_ave_err.png +0 -0
  268. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/channels_cv0_8/results.json +0 -1
  269. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/channels_cv0_8/v_ave.png +0 -0
  270. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/channels_cv0_8/v_ave_err.png +0 -0
  271. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/channels_cv1_2/results.json +0 -1
  272. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/channels_cv1_2/v_ave.png +0 -0
  273. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/channels_cv1_2/v_ave_err.png +0 -0
  274. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/channels_cv_compare/v_ave.png +0 -0
  275. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/coefs/results.json +0 -1
  276. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/coefs/v_ave.png +0 -0
  277. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/coefs/v_ave_err.png +0 -0
  278. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate/q.png +0 -0
  279. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate/results.json +0 -1
  280. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate/sigma_v.png +0 -0
  281. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate/sigma_w.png +0 -0
  282. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate/v_ave.png +0 -0
  283. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate/v_ave_err.png +0 -0
  284. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate/w_ave.png +0 -0
  285. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate/w_ave_err.png +0 -0
  286. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv0_8/q.png +0 -0
  287. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv0_8/results.json +0 -1
  288. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv0_8/sigma_v.png +0 -0
  289. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv0_8/sigma_w.png +0 -0
  290. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv0_8/v_ave.png +0 -0
  291. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv0_8/v_ave_err.png +0 -0
  292. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv0_8/w_ave.png +0 -0
  293. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv0_8/w_ave_err.png +0 -0
  294. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv1_2/q.png +0 -0
  295. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv1_2/results.json +0 -1
  296. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv1_2/sigma_v.png +0 -0
  297. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv1_2/sigma_w.png +0 -0
  298. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv1_2/v_ave.png +0 -0
  299. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv1_2/v_ave_err.png +0 -0
  300. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv1_2/w_ave.png +0 -0
  301. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv1_2/w_ave_err.png +0 -0
  302. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv_compare/q.png +0 -0
  303. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/negative_rate_cv_compare/v_ave.png +0 -0
  304. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/utilization/results.json +0 -1
  305. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/utilization/v_ave.png +0 -0
  306. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/clear/utilization/v_ave_err.png +0 -0
  307. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/coefs/results.json +0 -1
  308. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/coefs/v_ave.png +0 -0
  309. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/coefs/v_ave_err.png +0 -0
  310. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/coefs/v_broken_ave.png +0 -0
  311. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/coefs/v_broken_ave_err.png +0 -0
  312. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/coefs/v_served_ave.png +0 -0
  313. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/coefs/v_served_ave_err.png +0 -0
  314. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/coefs/w_ave.png +0 -0
  315. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/coefs/w_ave_err.png +0 -0
  316. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/diagrams/disaster_arrivals.png +0 -0
  317. 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
  318. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/diagrams/disaster_negative_arrivals_pretty.png +0 -0
  319. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/diagrams/disaster_negative_arrivals_pretty.svg +0 -1137
  320. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/diagrams/disaster_service.png +0 -0
  321. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/diagrams/disaster_transitions.png +0 -0
  322. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/channels/results.json +0 -1
  323. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/channels/v_ave.png +0 -0
  324. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/channels/v_ave_err.png +0 -0
  325. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/channels_cv0_8/results.json +0 -1
  326. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/channels_cv0_8/v_ave.png +0 -0
  327. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/channels_cv0_8/v_ave_err.png +0 -0
  328. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/channels_cv1_2/results.json +0 -1
  329. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/channels_cv1_2/v_ave.png +0 -0
  330. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/channels_cv1_2/v_ave_err.png +0 -0
  331. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/channels_cv_compare/v_ave.png +0 -0
  332. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/coefs/results.json +0 -1
  333. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/coefs/v_ave.png +0 -0
  334. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/coefs/v_ave_err.png +0 -0
  335. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate/q.png +0 -0
  336. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate/results.json +0 -1
  337. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate/sigma_v.png +0 -0
  338. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate/sigma_w.png +0 -0
  339. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate/v_ave.png +0 -0
  340. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate/v_ave_err.png +0 -0
  341. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate/w_ave.png +0 -0
  342. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate/w_ave_err.png +0 -0
  343. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv0_8/q.png +0 -0
  344. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv0_8/results.json +0 -1
  345. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv0_8/sigma_v.png +0 -0
  346. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv0_8/sigma_w.png +0 -0
  347. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv0_8/v_ave.png +0 -0
  348. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv0_8/v_ave_err.png +0 -0
  349. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv0_8/w_ave.png +0 -0
  350. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv0_8/w_ave_err.png +0 -0
  351. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv1_2/q.png +0 -0
  352. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv1_2/results.json +0 -1
  353. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv1_2/sigma_v.png +0 -0
  354. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv1_2/sigma_w.png +0 -0
  355. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv1_2/v_ave.png +0 -0
  356. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv1_2/v_ave_err.png +0 -0
  357. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv1_2/w_ave.png +0 -0
  358. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv1_2/w_ave_err.png +0 -0
  359. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv_compare/q.png +0 -0
  360. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/negative_rate_cv_compare/v_ave.png +0 -0
  361. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/utilization/results.json +0 -1
  362. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/utilization/v_ave.png +0 -0
  363. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue/utilization/v_ave_err.png +0 -0
  364. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/channels_cv0_8/results.json +0 -1
  365. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/channels_cv0_8/v_ave.png +0 -0
  366. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/channels_cv0_8/v_ave_err.png +0 -0
  367. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/channels_cv1_2/results.json +0 -1
  368. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/channels_cv1_2/v_ave.png +0 -0
  369. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/channels_cv1_2/v_ave_err.png +0 -0
  370. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/channels_cv_compare/v_ave.png +0 -0
  371. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv0_8/q.png +0 -0
  372. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv0_8/results.json +0 -1
  373. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv0_8/sigma_v.png +0 -0
  374. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv0_8/sigma_w.png +0 -0
  375. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv0_8/v_ave.png +0 -0
  376. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv0_8/v_ave_err.png +0 -0
  377. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv0_8/w_ave.png +0 -0
  378. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv0_8/w_ave_err.png +0 -0
  379. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv1_2/q.png +0 -0
  380. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv1_2/results.json +0 -1
  381. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv1_2/sigma_v.png +0 -0
  382. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv1_2/sigma_w.png +0 -0
  383. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv1_2/v_ave.png +0 -0
  384. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv1_2/v_ave_err.png +0 -0
  385. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv1_2/w_ave.png +0 -0
  386. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv1_2/w_ave_err.png +0 -0
  387. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv_compare/q.png +0 -0
  388. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/requeue_fixed/negative_rate_cv_compare/v_ave.png +0 -0
  389. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/utilization/results.json +0 -1
  390. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/utilization/v_ave.png +0 -0
  391. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/utilization/v_ave_err.png +0 -0
  392. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/utilization/v_broken_ave.png +0 -0
  393. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/utilization/v_broken_ave_err.png +0 -0
  394. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/utilization/v_served_ave.png +0 -0
  395. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/utilization/v_served_ave_err.png +0 -0
  396. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/utilization/w_ave.png +0 -0
  397. most_queue-2.8/works/negative_queues/negative_queues_figures/disaster/utilization/w_ave_err.png +0 -0
  398. most_queue-2.8/works/negative_queues/negative_queues_figures/paper_fig2_delta_0_300/combined/v1_n_cv1_2_oldstyle.png +0 -0
  399. most_queue-2.8/works/negative_queues/negative_queues_figures/paper_fig2_delta_0_300/dis_clear/results.json +0 -1
  400. most_queue-2.8/works/negative_queues/negative_queues_figures/paper_fig2_delta_0_300/dis_requeue/results.json +0 -1
  401. most_queue-2.8/works/negative_queues/negative_queues_figures/paper_fig2_delta_0_300/rcs_remove/results.json +0 -1
  402. most_queue-2.8/works/negative_queues/negative_queues_figures/paper_fig2_delta_0_300/rcs_requeue/results.json +0 -1
  403. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/channels/results.json +0 -1
  404. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/channels/v_ave.png +0 -0
  405. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/channels/v_ave_err.png +0 -0
  406. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/channels/v_broken_ave.png +0 -0
  407. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/channels/v_broken_ave_err.png +0 -0
  408. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/channels/v_served_ave.png +0 -0
  409. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/channels/v_served_ave_err.png +0 -0
  410. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/channels/w_ave.png +0 -0
  411. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/channels/w_ave_err.png +0 -0
  412. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/coefs/results.json +0 -1
  413. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/coefs/v_ave.png +0 -0
  414. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/coefs/v_ave_err.png +0 -0
  415. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/coefs/v_broken_ave.png +0 -0
  416. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/coefs/v_broken_ave_err.png +0 -0
  417. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/coefs/v_served_ave.png +0 -0
  418. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/coefs/v_served_ave_err.png +0 -0
  419. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/coefs/w_ave.png +0 -0
  420. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/coefs/w_ave_err.png +0 -0
  421. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/diagrams/Untitled Diagram.drawio +0 -97
  422. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/diagrams/neg_arrival.jpeg +0 -0
  423. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/diagrams/neg_arrival2.jpeg +0 -0
  424. 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
  425. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/diagrams/neg_arrival_/320/272/320/260/321/202.jpeg +0 -0
  426. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/diagrams/neg_arrivals.drawio +0 -141
  427. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/diagrams/neg_arrivals.png +0 -0
  428. 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
  429. 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
  430. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/diagrams/neg_arrivals_/321/207/320/261.png +0 -0
  431. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/diagrams/rcs_arrivals.png +0 -0
  432. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/diagrams/rcs_negative_arrivals_pretty.png +0 -0
  433. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/diagrams/rcs_negative_arrivals_pretty.svg +0 -1562
  434. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/diagrams/rcs_service.png +0 -0
  435. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/diagrams/rcs_transitions.png +0 -0
  436. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/channels/results.json +0 -1
  437. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/channels/v_ave.png +0 -0
  438. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/channels/v_ave_err.png +0 -0
  439. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/channels_cv0_8/results.json +0 -1
  440. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/channels_cv0_8/v_ave.png +0 -0
  441. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/channels_cv0_8/v_ave_err.png +0 -0
  442. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/channels_cv1_2/results.json +0 -1
  443. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/channels_cv1_2/v_ave.png +0 -0
  444. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/channels_cv1_2/v_ave_err.png +0 -0
  445. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/channels_cv_compare/v_ave.png +0 -0
  446. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/coefs/results.json +0 -1
  447. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/coefs/v_ave.png +0 -0
  448. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/coefs/v_ave_err.png +0 -0
  449. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate/q.png +0 -0
  450. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate/results.json +0 -1
  451. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate/sigma_v.png +0 -0
  452. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate/sigma_w.png +0 -0
  453. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate/v_ave.png +0 -0
  454. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate/v_ave_err.png +0 -0
  455. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate/w_ave.png +0 -0
  456. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate/w_ave_err.png +0 -0
  457. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv0_8/q.png +0 -0
  458. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv0_8/results.json +0 -1
  459. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv0_8/sigma_v.png +0 -0
  460. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv0_8/sigma_w.png +0 -0
  461. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv0_8/v_ave.png +0 -0
  462. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv0_8/v_ave_err.png +0 -0
  463. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv0_8/w_ave.png +0 -0
  464. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv0_8/w_ave_err.png +0 -0
  465. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv1_2/q.png +0 -0
  466. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv1_2/results.json +0 -1
  467. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv1_2/sigma_v.png +0 -0
  468. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv1_2/sigma_w.png +0 -0
  469. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv1_2/v_ave.png +0 -0
  470. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv1_2/v_ave_err.png +0 -0
  471. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv1_2/w_ave.png +0 -0
  472. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv1_2/w_ave_err.png +0 -0
  473. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv_compare/q.png +0 -0
  474. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/negative_rate_cv_compare/v_ave.png +0 -0
  475. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/utilization/results.json +0 -1
  476. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/utilization/v_ave.png +0 -0
  477. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/remove/utilization/v_ave_err.png +0 -0
  478. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/channels/results.json +0 -1
  479. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/channels/v_ave.png +0 -0
  480. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/channels/v_ave_err.png +0 -0
  481. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/channels_cv0_8/results.json +0 -1
  482. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/channels_cv0_8/v_ave.png +0 -0
  483. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/channels_cv0_8/v_ave_err.png +0 -0
  484. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/channels_cv1_2/results.json +0 -1
  485. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/channels_cv1_2/v_ave.png +0 -0
  486. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/channels_cv1_2/v_ave_err.png +0 -0
  487. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/channels_cv_compare/v_ave.png +0 -0
  488. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/coefs/results.json +0 -1
  489. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/coefs/v_ave.png +0 -0
  490. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/coefs/v_ave_err.png +0 -0
  491. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate/q.png +0 -0
  492. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate/results.json +0 -1
  493. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate/sigma_v.png +0 -0
  494. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate/sigma_w.png +0 -0
  495. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate/v_ave.png +0 -0
  496. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate/v_ave_err.png +0 -0
  497. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate/w_ave.png +0 -0
  498. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate/w_ave_err.png +0 -0
  499. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv0_8/q.png +0 -0
  500. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv0_8/results.json +0 -1
  501. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv0_8/sigma_v.png +0 -0
  502. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv0_8/sigma_w.png +0 -0
  503. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv0_8/v_ave.png +0 -0
  504. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv0_8/v_ave_err.png +0 -0
  505. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv0_8/w_ave.png +0 -0
  506. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv0_8/w_ave_err.png +0 -0
  507. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv1_2/q.png +0 -0
  508. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv1_2/results.json +0 -1
  509. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv1_2/sigma_v.png +0 -0
  510. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv1_2/sigma_w.png +0 -0
  511. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv1_2/v_ave.png +0 -0
  512. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv1_2/v_ave_err.png +0 -0
  513. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv1_2/w_ave.png +0 -0
  514. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv1_2/w_ave_err.png +0 -0
  515. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv_compare/q.png +0 -0
  516. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/negative_rate_cv_compare/v_ave.png +0 -0
  517. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/utilization/results.json +0 -1
  518. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/utilization/v_ave.png +0 -0
  519. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue/utilization/v_ave_err.png +0 -0
  520. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/channels_cv0_8/results.json +0 -1
  521. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/channels_cv0_8/v_ave.png +0 -0
  522. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/channels_cv0_8/v_ave_err.png +0 -0
  523. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/channels_cv1_2/results.json +0 -1
  524. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/channels_cv1_2/v_ave.png +0 -0
  525. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/channels_cv1_2/v_ave_err.png +0 -0
  526. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/channels_cv_compare/v_ave.png +0 -0
  527. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv0_8/q.png +0 -0
  528. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv0_8/results.json +0 -1
  529. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv0_8/sigma_v.png +0 -0
  530. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv0_8/sigma_w.png +0 -0
  531. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv0_8/v_ave.png +0 -0
  532. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv0_8/v_ave_err.png +0 -0
  533. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv0_8/w_ave.png +0 -0
  534. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv0_8/w_ave_err.png +0 -0
  535. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv1_2/q.png +0 -0
  536. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv1_2/results.json +0 -1
  537. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv1_2/sigma_v.png +0 -0
  538. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv1_2/sigma_w.png +0 -0
  539. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv1_2/v_ave.png +0 -0
  540. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv1_2/v_ave_err.png +0 -0
  541. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv1_2/w_ave.png +0 -0
  542. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv1_2/w_ave_err.png +0 -0
  543. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv_compare/q.png +0 -0
  544. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/requeue_fixed/negative_rate_cv_compare/v_ave.png +0 -0
  545. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/utilization/results.json +0 -1
  546. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/utilization/v_ave.png +0 -0
  547. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/utilization/v_ave_err.png +0 -0
  548. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/utilization/v_broken_ave.png +0 -0
  549. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/utilization/v_broken_ave_err.png +0 -0
  550. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/utilization/v_served_ave.png +0 -0
  551. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/utilization/v_served_ave_err.png +0 -0
  552. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/utilization/w_ave.png +0 -0
  553. most_queue-2.8/works/negative_queues/negative_queues_figures/rcs/utilization/w_ave_err.png +0 -0
  554. most_queue-2.8/works/negative_queues/negative_queues_figures/utilization/results.json +0 -1
  555. most_queue-2.8/works/negative_queues/negative_queues_figures/utilization/v_ave.png +0 -0
  556. most_queue-2.8/works/negative_queues/negative_queues_figures/utilization/v_ave_err.png +0 -0
  557. most_queue-2.8/works/negative_queues/negative_queues_figures/utilization/v_broken_ave.png +0 -0
  558. most_queue-2.8/works/negative_queues/negative_queues_figures/utilization/v_broken_ave_err.png +0 -0
  559. most_queue-2.8/works/negative_queues/negative_queues_figures/utilization/v_served_ave.png +0 -0
  560. most_queue-2.8/works/negative_queues/negative_queues_figures/utilization/v_served_ave_err.png +0 -0
  561. most_queue-2.8/works/negative_queues/negative_queues_figures/utilization/w_ave.png +0 -0
  562. most_queue-2.8/works/negative_queues/negative_queues_figures/utilization/w_ave_err.png +0 -0
  563. most_queue-2.8/works/negative_queues/negative_queues_takahasi_takami.md +0 -808
  564. most_queue-2.8/works/negative_queues/negative_queues_takahasi_takami.tex +0 -607
  565. most_queue-2.8/works/negative_queues/negative_queues_takahasi_takami_v3.pdf +0 -0
  566. most_queue-2.8/works/negative_queues/plot_channels_4disciplines_oldstyle.py +0 -136
  567. most_queue-2.8/works/negative_queues/plot_channels_cv_compare.py +0 -108
  568. most_queue-2.8/works/negative_queues/plot_channels_fixed_2disciplines_cv1_2.py +0 -106
  569. most_queue-2.8/works/negative_queues/plot_negative_rate_cv_compare.py +0 -131
  570. most_queue-2.8/works/negative_queues/prompt_disaster_negative_arrival_3channels_4levels.md +0 -55
  571. most_queue-2.8/works/negative_queues/prompt_rcs_negative_arrival_up_3channels_4levels.md +0 -98
  572. most_queue-2.8/works/negative_queues/run_channels_for_paper_fig2.py +0 -132
  573. most_queue-2.8/works/negative_queues/run_table_cv_points.py +0 -148
  574. most_queue-2.8/works/negative_queues/work_mgn_negatives.py +0 -688
  575. 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
  576. 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
  577. most_queue-2.8/works/queueing_systems_review/RL.md +0 -328
  578. most_queue-2.8/works/queueing_systems_review/SRPT/SPJF.md +0 -450
  579. most_queue-2.8/works/queueing_systems_review/SRPT/shrage.md +0 -193
  580. 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
  581. most_queue-2.8/works/queueing_systems_review/general.md +0 -238
  582. most_queue-2.8/works/vacations/__init__.py +0 -0
  583. most_queue-2.8/works/vacations/base_parameters.yaml +0 -52
  584. most_queue-2.8/works/vacations/channels.py +0 -80
  585. most_queue-2.8/works/vacations/cooling.py +0 -182
  586. most_queue-2.8/works/vacations/cooling_delay.py +0 -181
  587. most_queue-2.8/works/vacations/main.py +0 -60
  588. most_queue-2.8/works/vacations/run_one_calc_vs_sim.py +0 -173
  589. most_queue-2.8/works/vacations/service.py +0 -86
  590. most_queue-2.8/works/vacations/utilization.py +0 -75
  591. most_queue-2.8/works/vacations/utils.py +0 -125
  592. most_queue-2.8/works/vacations/warmup.py +0 -180
  593. {most_queue-2.8 → most_queue-2.9}/LICENSE +0 -0
  594. {most_queue-2.8 → most_queue-2.9}/docs/README.md +0 -0
  595. {most_queue-2.8 → most_queue-2.9}/most_queue/constants.py +0 -0
  596. {most_queue-2.8 → most_queue-2.9}/most_queue/io/__init__.py +0 -0
  597. {most_queue-2.8 → most_queue-2.9}/most_queue/io/plots.py +0 -0
  598. {most_queue-2.8 → most_queue-2.9}/most_queue/io/tables.py +0 -0
  599. {most_queue-2.8 → most_queue-2.9}/most_queue/misc/approx_cdf_make.py +0 -0
  600. {most_queue-2.8 → most_queue-2.9}/most_queue/misc/calc_v_pls.py +0 -0
  601. {most_queue-2.8 → most_queue-2.9}/most_queue/misc/compare_fj_calc.py +0 -0
  602. {most_queue-2.8 → most_queue-2.9}/most_queue/misc/flow_sum.py +0 -0
  603. {most_queue-2.8 → most_queue-2.9}/most_queue/misc/run_mgn_with_h2_delay_cold_warm.py +0 -0
  604. {most_queue-2.8 → most_queue-2.9}/most_queue/misc/tests/test_fj_delta.py +0 -0
  605. {most_queue-2.8 → most_queue-2.9}/most_queue/misc/tests/test_network_opt_approx.py +0 -0
  606. {most_queue-2.8 → most_queue-2.9}/most_queue/misc/tests/test_network_opt_plus.py +0 -0
  607. {most_queue-2.8 → most_queue-2.9}/most_queue/misc/vacations_paper_utils.py +0 -0
  608. {most_queue-2.8 → most_queue-2.9}/most_queue/random/__init__.py +0 -0
  609. {most_queue-2.8 → most_queue-2.9}/most_queue/random/distributions.py +0 -0
  610. {most_queue-2.8 → most_queue-2.9}/most_queue/random/distributions.yaml +0 -0
  611. {most_queue-2.8 → most_queue-2.9}/most_queue/random/utils/base.py +0 -0
  612. {most_queue-2.8 → most_queue-2.9}/most_queue/random/utils/create.py +0 -0
  613. {most_queue-2.8 → most_queue-2.9}/most_queue/random/utils/fit.py +0 -0
  614. {most_queue-2.8 → most_queue-2.9}/most_queue/random/utils/load.py +0 -0
  615. {most_queue-2.8 → most_queue-2.9}/most_queue/random/utils/params.py +0 -0
  616. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/__init__.py +0 -0
  617. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/batch.py +0 -0
  618. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/finite_source.py +0 -0
  619. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/flow_sum.py +0 -0
  620. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/fork_join.py +0 -0
  621. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/fork_join_delta.py +0 -0
  622. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/impatient.py +0 -0
  623. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/negative.py +0 -0
  624. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/networks/__init__.py +0 -0
  625. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/networks/base_network_sim.py +0 -0
  626. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/networks/negative_network.py +0 -0
  627. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/networks/network.py +0 -0
  628. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/networks/priority_network.py +0 -0
  629. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/priority.py +0 -0
  630. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/retrial.py +0 -0
  631. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/single_server_disciplines.py +0 -0
  632. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/size_based.py +0 -0
  633. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/unreliable.py +0 -0
  634. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/utils/__init__.py +0 -0
  635. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/utils/events.py +0 -0
  636. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/utils/phase.py +0 -0
  637. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/utils/predictor.py +0 -0
  638. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/utils/qs_queue.py +0 -0
  639. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/utils/queue_priority_size.py +0 -0
  640. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/utils/servers.py +0 -0
  641. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/utils/stats_update.py +0 -0
  642. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/utils/tasks.py +0 -0
  643. {most_queue-2.8 → most_queue-2.9}/most_queue/sim/vacations.py +0 -0
  644. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/__init__.py +0 -0
  645. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/base_queue.py +0 -0
  646. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/calc_params.py +0 -0
  647. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/closed/engset.py +0 -0
  648. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/ek_d_n.py +0 -0
  649. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/erlang.py +0 -0
  650. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/gi_g_approx.py +0 -0
  651. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/gi_m_n.py +0 -0
  652. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/gmc_takahasi.py +0 -0
  653. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/hkhk_takahasi.py +0 -0
  654. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/m_d_n.py +0 -0
  655. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/m_g_inf.py +0 -0
  656. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/mg1.py +0 -0
  657. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/mg1_lcfs_pr.py +0 -0
  658. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/mg1_ps.py +0 -0
  659. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/mmnr.py +0 -0
  660. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fifo/takahasi_base.py +0 -0
  661. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fork_join/m_m_n.py +0 -0
  662. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/fork_join/split_join.py +0 -0
  663. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/impatience/mm1.py +0 -0
  664. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/impatience/mmn.py +0 -0
  665. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/matrix/map_ph1.py +0 -0
  666. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/matrix/qbd.py +0 -0
  667. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/negative/mg1_disasters.py +0 -0
  668. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/negative/mg1_rcs.py +0 -0
  669. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/negative/mgn_disaster.py +0 -0
  670. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/negative/mgn_rcs.py +0 -0
  671. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/negative/structs.py +0 -0
  672. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/networks/base_network_calc.py +0 -0
  673. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/networks/negative_network.py +0 -0
  674. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/networks/network_viewer.py +0 -0
  675. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/networks/open_network.py +0 -0
  676. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/networks/open_network_prty.py +0 -0
  677. {most_queue-2.8/most_queue/theory/batch → most_queue-2.9/most_queue/theory/networks/opt}/__init__.py +0 -0
  678. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/networks/opt/transition.py +0 -0
  679. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/networks/opt/transition_approx.py +0 -0
  680. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/networks/opt/transition_plus.py +0 -0
  681. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/priority/mgn_invar_approx.py +0 -0
  682. {most_queue-2.8/most_queue/theory/closed → most_queue-2.9/most_queue/theory/priority/non_preemptive}/__init__.py +0 -0
  683. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/priority/non_preemptive/mg1.py +0 -0
  684. {most_queue-2.8/most_queue/theory/fork_join → most_queue-2.9/most_queue/theory/priority/preemptive}/__init__.py +0 -0
  685. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/priority/preemptive/m_ph_n_busy_approx.py +0 -0
  686. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/priority/preemptive/mg1.py +0 -0
  687. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/r_example.gexf +0 -0
  688. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/retrial/__init__.py +0 -0
  689. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/retrial/mg1.py +0 -0
  690. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/retrial/mm1.py +0 -0
  691. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/srpt/_base.py +0 -0
  692. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/srpt/mg1_fb.py +0 -0
  693. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/srpt/mg1_psjf.py +0 -0
  694. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/srpt/mg1_sjf.py +0 -0
  695. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/srpt/mg1_spjf.py +0 -0
  696. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/srpt/mg1_srpt.py +0 -0
  697. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/srpt/utils/__init__.py +0 -0
  698. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/srpt/utils/load_below.py +0 -0
  699. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/srpt/utils/predictor.py +0 -0
  700. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/__init__.py +0 -0
  701. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/binom_probs.py +0 -0
  702. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/busy_periods.py +0 -0
  703. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/conditional.py +0 -0
  704. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/conv.py +0 -0
  705. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/derivative.py +0 -0
  706. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/diff5dots.py +0 -0
  707. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/flow_sum.py +0 -0
  708. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/max_dist.py +0 -0
  709. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/moments.py +0 -0
  710. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/q_poisson_arrival_calc.py +0 -0
  711. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/residual.py +0 -0
  712. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/restarts.py +0 -0
  713. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/student_stat.py +0 -0
  714. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/timing.py +0 -0
  715. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/transforms.py +0 -0
  716. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/utilization_approx.py +0 -0
  717. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/utils/validation.py +0 -0
  718. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/vacations/m_h2_h2warm.py +0 -0
  719. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/vacations/mg1_unreliable.py +0 -0
  720. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/vacations/mg1_vacations.py +0 -0
  721. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/vacations/mg1_warm_calc.py +0 -0
  722. {most_queue-2.8 → most_queue-2.9}/most_queue/theory/vacations/mgn_with_h2_delay_cold_warm.py +0 -0
  723. {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.8
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 40+ models from M/M/1 to SRPT scheduling, vacations, negative customers and queueing networks.**
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
  [![Python versions](https://img.shields.io/pypi/pyversions/most-queue)](https://pypi.org/project/most-queue/)
53
53
  [![License](https://img.shields.io/pypi/l/most-queue)](https://github.com/xabarov/most-queue/blob/main/LICENSE)
54
54
  [![Downloads](https://static.pepy.tech/badge/most-queue)](https://pepy.tech/project/most-queue)
55
+ [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.21268402.svg)](https://doi.org/10.5281/zenodo.21268402)
55
56
  [![GitHub commit activity](https://img.shields.io/github/commit-activity/m/xabarov/most-queue)](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/slowdown_en.png" alt="Slowdown by job size for FCFS/PS/FB/SRPT" width="720"/>
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, impatience, closed | Mˣ/M/1, M/M/1+M, Engset | exact |
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 (matrix-analytic MAP/PH stack, retrial queues, Erlang-A)
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** — **Matrix-analytic stack**: PH distributions and MAPs (`most_queue.random.map_ph`),
151
- QBD solver with logarithmic reduction, exact MAP/PH/1 / M/PH/1 / PH/PH/1 calculators, MAP and
152
- PH sources in the simulator; plus retrial queues (orbit) and Erlang-A abandonment with a
153
- staffing helper. See [`tutorials/map_ph_correlation.ipynb`](tutorials/map_ph_correlation.ipynb).
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 40+ models from M/M/1 to SRPT scheduling, vacations, negative customers and queueing networks.**
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
  [![Python versions](https://img.shields.io/pypi/pyversions/most-queue)](https://pypi.org/project/most-queue/)
12
12
  [![License](https://img.shields.io/pypi/l/most-queue)](https://github.com/xabarov/most-queue/blob/main/LICENSE)
13
13
  [![Downloads](https://static.pepy.tech/badge/most-queue)](https://pepy.tech/project/most-queue)
14
+ [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.21268402.svg)](https://doi.org/10.5281/zenodo.21268402)
14
15
  [![GitHub commit activity](https://img.shields.io/github/commit-activity/m/xabarov/most-queue)](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/slowdown_en.png" alt="Slowdown by job size for FCFS/PS/FB/SRPT" width="720"/>
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, impatience, closed | Mˣ/M/1, M/M/1+M, Engset | exact |
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 (matrix-analytic MAP/PH stack, retrial queues, Erlang-A)
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** — **Matrix-analytic stack**: PH distributions and MAPs (`most_queue.random.map_ph`),
110
- QBD solver with logarithmic reduction, exact MAP/PH/1 / M/PH/1 / PH/PH/1 calculators, MAP and
111
- PH sources in the simulator; plus retrial queues (orbit) and Erlang-A abandonment with a
112
- staffing helper. See [`tutorials/map_ph_correlation.ipynb`](tutorials/map_ph_correlation.ipynb).
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
- __version__ = "2.7"
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