most-queue 2.7__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 (276) hide show
  1. {most_queue-2.7 → most_queue-2.9}/.gitignore +28 -1
  2. most_queue-2.9/PKG-INFO +200 -0
  3. most_queue-2.9/README.md +159 -0
  4. most_queue-2.9/docs/README.md +120 -0
  5. most_queue-2.9/docs/epics/README.md +59 -0
  6. {most_queue-2.7 → most_queue-2.9}/most_queue/__init__.py +7 -1
  7. {most_queue-2.7 → most_queue-2.9}/most_queue/io/plots.py +41 -5
  8. {most_queue-2.7 → most_queue-2.9}/most_queue/misc/calc_v_pls.py +1 -1
  9. {most_queue-2.7 → most_queue-2.9}/most_queue/random/distributions.py +62 -0
  10. most_queue-2.9/most_queue/random/map_fit.py +137 -0
  11. most_queue-2.9/most_queue/random/map_ph.py +330 -0
  12. {most_queue-2.7 → most_queue-2.9}/most_queue/random/utils/create.py +9 -0
  13. {most_queue-2.7 → most_queue-2.9}/most_queue/sim/__init__.py +2 -1
  14. most_queue-2.9/most_queue/sim/aoi.py +133 -0
  15. {most_queue-2.7 → most_queue-2.9}/most_queue/sim/base.py +20 -2
  16. {most_queue-2.7 → most_queue-2.9}/most_queue/sim/base_core.py +11 -9
  17. {most_queue-2.7 → most_queue-2.9}/most_queue/sim/batch.py +99 -95
  18. most_queue-2.9/most_queue/sim/bmap.py +130 -0
  19. most_queue-2.9/most_queue/sim/bulk_service.py +95 -0
  20. {most_queue-2.7 → most_queue-2.9}/most_queue/sim/finite_source.py +246 -242
  21. {most_queue-2.7 → most_queue-2.9}/most_queue/sim/flow_sum.py +240 -240
  22. {most_queue-2.7 → most_queue-2.9}/most_queue/sim/fork_join.py +264 -260
  23. {most_queue-2.7 → most_queue-2.9}/most_queue/sim/impatient.py +177 -181
  24. most_queue-2.9/most_queue/sim/msj.py +117 -0
  25. {most_queue-2.7 → most_queue-2.9}/most_queue/sim/negative.py +190 -35
  26. {most_queue-2.7 → most_queue-2.9}/most_queue/sim/networks/negative_network.py +3 -4
  27. {most_queue-2.7 → most_queue-2.9}/most_queue/sim/priority.py +4 -9
  28. most_queue-2.9/most_queue/sim/retrial.py +79 -0
  29. most_queue-2.9/most_queue/sim/single_server_disciplines.py +225 -0
  30. most_queue-2.9/most_queue/sim/size_based.py +248 -0
  31. most_queue-2.9/most_queue/sim/unreliable.py +95 -0
  32. most_queue-2.9/most_queue/sim/utils/predictor.py +44 -0
  33. {most_queue-2.7 → most_queue-2.9}/most_queue/sim/utils/qs_queue.py +12 -0
  34. most_queue-2.9/most_queue/sim/utils/queue_priority_size.py +112 -0
  35. {most_queue-2.7 → most_queue-2.9}/most_queue/sim/utils/servers.py +45 -1
  36. {most_queue-2.7 → most_queue-2.9}/most_queue/sim/utils/stats_update.py +2 -2
  37. {most_queue-2.7 → most_queue-2.9}/most_queue/sim/utils/tasks.py +21 -0
  38. {most_queue-2.7 → most_queue-2.9}/most_queue/sim/vacations.py +364 -316
  39. {most_queue-2.7 → most_queue-2.9}/most_queue/structs.py +41 -1
  40. most_queue-2.9/most_queue/theory/aoi/__init__.py +5 -0
  41. most_queue-2.9/most_queue/theory/aoi/calc.py +114 -0
  42. most_queue-2.9/most_queue/theory/batch/__init__.py +7 -0
  43. most_queue-2.9/most_queue/theory/batch/bulk_service.py +138 -0
  44. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/batch/mm1.py +3 -2
  45. most_queue-2.9/most_queue/theory/closed/__init__.py +7 -0
  46. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/fifo/__init__.py +12 -0
  47. most_queue-2.9/most_queue/theory/fifo/erlang.py +249 -0
  48. most_queue-2.9/most_queue/theory/fifo/gi_g_approx.py +223 -0
  49. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/fifo/gi_m_1.py +10 -13
  50. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/fifo/gi_m_n.py +257 -258
  51. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/fifo/gmc_takahasi.py +0 -1
  52. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/fifo/hkhk_takahasi.py +475 -486
  53. most_queue-2.9/most_queue/theory/fifo/m_g_inf.py +114 -0
  54. most_queue-2.9/most_queue/theory/fifo/mg1_lcfs_pr.py +106 -0
  55. most_queue-2.9/most_queue/theory/fifo/mg1_ps.py +119 -0
  56. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/fifo/mgn_takahasi.py +34 -1
  57. most_queue-2.9/most_queue/theory/fork_join/__init__.py +11 -0
  58. most_queue-2.9/most_queue/theory/impatience/__init__.py +11 -0
  59. most_queue-2.9/most_queue/theory/impatience/mmn.py +147 -0
  60. most_queue-2.9/most_queue/theory/matrix/__init__.py +22 -0
  61. most_queue-2.9/most_queue/theory/matrix/bmap_m1.py +163 -0
  62. most_queue-2.9/most_queue/theory/matrix/bmap_ph1.py +180 -0
  63. most_queue-2.9/most_queue/theory/matrix/map_mmc.py +190 -0
  64. most_queue-2.9/most_queue/theory/matrix/map_ph1.py +190 -0
  65. most_queue-2.9/most_queue/theory/matrix/map_phc.py +278 -0
  66. most_queue-2.9/most_queue/theory/matrix/qbd.py +147 -0
  67. most_queue-2.9/most_queue/theory/msj/__init__.py +7 -0
  68. most_queue-2.9/most_queue/theory/msj/exact.py +123 -0
  69. most_queue-2.9/most_queue/theory/msj/saturated.py +138 -0
  70. most_queue-2.9/most_queue/theory/negative/__init__.py +15 -0
  71. most_queue-2.9/most_queue/theory/negative/mg1_disasters.py +228 -0
  72. most_queue-2.9/most_queue/theory/negative/mgn_disaster.py +690 -0
  73. most_queue-2.9/most_queue/theory/negative/mgn_rcs.py +755 -0
  74. most_queue-2.9/most_queue/theory/networks/__init__.py +13 -0
  75. most_queue-2.9/most_queue/theory/priority/__init__.py +19 -0
  76. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/priority/preemptive/mm2_3cls_busy_approx.py +9 -12
  77. most_queue-2.9/most_queue/theory/priority/preemptive/mmk_prty_exact.py +315 -0
  78. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/priority/preemptive/mmn_2cls_pr_busy_approx.py +9 -12
  79. most_queue-2.9/most_queue/theory/priority/preemptive/mph_ph_k_2class.py +227 -0
  80. most_queue-2.9/most_queue/theory/priority/preemptive/rdr_a.py +185 -0
  81. most_queue-2.9/most_queue/theory/retrial/__init__.py +8 -0
  82. most_queue-2.9/most_queue/theory/retrial/mg1.py +102 -0
  83. most_queue-2.9/most_queue/theory/retrial/mm1.py +160 -0
  84. most_queue-2.9/most_queue/theory/srpt/__init__.py +25 -0
  85. most_queue-2.9/most_queue/theory/srpt/_base.py +136 -0
  86. most_queue-2.9/most_queue/theory/srpt/degradation.py +71 -0
  87. most_queue-2.9/most_queue/theory/srpt/mg1_fb.py +68 -0
  88. most_queue-2.9/most_queue/theory/srpt/mg1_psjf.py +53 -0
  89. most_queue-2.9/most_queue/theory/srpt/mg1_sjf.py +46 -0
  90. most_queue-2.9/most_queue/theory/srpt/mg1_spjf.py +96 -0
  91. most_queue-2.9/most_queue/theory/srpt/mg1_srpt.py +61 -0
  92. most_queue-2.9/most_queue/theory/srpt/utils/__init__.py +12 -0
  93. most_queue-2.9/most_queue/theory/srpt/utils/load_below.py +123 -0
  94. most_queue-2.9/most_queue/theory/srpt/utils/predictor.py +153 -0
  95. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/utils/busy_periods.py +1 -2
  96. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/utils/conditional.py +1 -1
  97. most_queue-2.9/most_queue/theory/utils/derivative.py +93 -0
  98. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/utils/passage_time.py +52 -39
  99. most_queue-2.9/most_queue/theory/utils/restarts.py +241 -0
  100. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/utils/timing.py +2 -2
  101. most_queue-2.9/most_queue/theory/vacations/__init__.py +20 -0
  102. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/vacations/m_h2_h2warm.py +1 -1
  103. most_queue-2.9/most_queue/theory/vacations/mg1_unreliable.py +159 -0
  104. most_queue-2.9/most_queue/theory/vacations/mg1_vacations.py +228 -0
  105. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/vacations/mg1_warm_calc.py +1 -1
  106. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/vacations/mgn_with_h2_delay_cold_warm.py +1 -1
  107. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/vacations/mmn_with_h2_cold_and_h2_warmup.py +1 -1
  108. {most_queue-2.7 → most_queue-2.9}/pyproject.toml +90 -74
  109. most_queue-2.7/.cursorrules +0 -3
  110. most_queue-2.7/.pre-commit-config.yaml +0 -47
  111. most_queue-2.7/PKG-INFO +0 -274
  112. most_queue-2.7/README.md +0 -233
  113. most_queue-2.7/assets/3.gif +0 -0
  114. most_queue-2.7/deploy.txt +0 -3
  115. most_queue-2.7/docs/README.md +0 -108
  116. most_queue-2.7/docs/calculation.md +0 -472
  117. most_queue-2.7/docs/concepts.md +0 -317
  118. most_queue-2.7/docs/custom_simulators.md +0 -430
  119. most_queue-2.7/docs/distributions.md +0 -429
  120. most_queue-2.7/docs/examples.md +0 -405
  121. most_queue-2.7/docs/getting_started.md +0 -182
  122. most_queue-2.7/docs/models.md +0 -459
  123. most_queue-2.7/docs/negative_networks_calculation.md +0 -300
  124. most_queue-2.7/docs/networks.md +0 -647
  125. most_queue-2.7/docs/priorities.md +0 -330
  126. most_queue-2.7/docs/simulation.md +0 -380
  127. most_queue-2.7/docs/tesaurus.md +0 -283
  128. most_queue-2.7/examples/custom_network_example.py +0 -161
  129. most_queue-2.7/examples/custom_simulator_example.py +0 -143
  130. most_queue-2.7/googleb31d3dccb40f969f.html +0 -1
  131. most_queue-2.7/most_queue/theory/negative/mg1_disasters.py +0 -134
  132. most_queue-2.7/most_queue/theory/negative/mgn_disaster.py +0 -391
  133. most_queue-2.7/most_queue/theory/negative/mgn_rcs.py +0 -254
  134. most_queue-2.7/most_queue/theory/negative/structs.py +0 -1
  135. most_queue-2.7/most_queue/theory/networks/__init__.py +0 -8
  136. most_queue-2.7/most_queue/theory/networks/opt/__init__.py +0 -0
  137. most_queue-2.7/most_queue/theory/priority/__init__.py +0 -13
  138. most_queue-2.7/most_queue/theory/priority/non_preemptive/__init__.py +0 -0
  139. most_queue-2.7/most_queue/theory/priority/preemptive/__init__.py +0 -0
  140. most_queue-2.7/most_queue/theory/vacations/__init__.py +0 -0
  141. most_queue-2.7/requirements.txt +0 -168
  142. most_queue-2.7/tests/Dockerfile +0 -13
  143. most_queue-2.7/tests/__init__.py +0 -0
  144. most_queue-2.7/tests/default_params.yaml +0 -35
  145. most_queue-2.7/tests/run.sh +0 -5
  146. most_queue-2.7/tests/test_base_qs_sim.py +0 -97
  147. most_queue-2.7/tests/test_batch.py +0 -83
  148. most_queue-2.7/tests/test_ek_d_n.py +0 -102
  149. most_queue-2.7/tests/test_engset.py +0 -78
  150. most_queue-2.7/tests/test_fj_sim.py +0 -186
  151. most_queue-2.7/tests/test_gi_m_1_calc.py +0 -90
  152. most_queue-2.7/tests/test_gi_m_n_calc.py +0 -99
  153. most_queue-2.7/tests/test_h2_h2_n_calc.py +0 -129
  154. most_queue-2.7/tests/test_h2_m_n_calc.py +0 -105
  155. most_queue-2.7/tests/test_impatience.py +0 -69
  156. most_queue-2.7/tests/test_m_d_n_calc.py +0 -81
  157. most_queue-2.7/tests/test_m_h2_h2warm.py +0 -93
  158. most_queue-2.7/tests/test_m_ph_n_prty.py +0 -136
  159. most_queue-2.7/tests/test_mg1_calc.py +0 -85
  160. most_queue-2.7/tests/test_mg1_disaster.py +0 -91
  161. most_queue-2.7/tests/test_mg1_rcs.py +0 -73
  162. most_queue-2.7/tests/test_mg1_warmup.py +0 -86
  163. most_queue-2.7/tests/test_mgn_disaster.py +0 -81
  164. most_queue-2.7/tests/test_mgn_rcs.py +0 -84
  165. most_queue-2.7/tests/test_mgn_tt.py +0 -106
  166. most_queue-2.7/tests/test_mgn_with_h2_delay_cold_warm.py +0 -220
  167. most_queue-2.7/tests/test_mm2_3cls_prty_busy.py +0 -110
  168. most_queue-2.7/tests/test_mmn_h2cold_h2warm.py +0 -125
  169. most_queue-2.7/tests/test_mmn_prty_busy_approx.py +0 -109
  170. most_queue-2.7/tests/test_negative_network.py +0 -504
  171. most_queue-2.7/tests/test_network_im_prty.py +0 -158
  172. most_queue-2.7/tests/test_network_negative_calc.py +0 -182
  173. most_queue-2.7/tests/test_network_no_prty.py +0 -97
  174. most_queue-2.7/tests/test_network_opt.py +0 -62
  175. most_queue-2.7/tests/test_qs_sim.py +0 -88
  176. most_queue-2.7/tests/test_qs_sim_prty.py +0 -144
  177. most_queue-2.7/tests/test_tt_vs_sim_cv105.py +0 -149
  178. most_queue-2.7/tests/test_tt_vs_sim_gamma_cvl1.py +0 -128
  179. most_queue-2.7/tests/units/test_busy_moments_calc.py +0 -47
  180. most_queue-2.7/tests/units/test_central_moments.py +0 -43
  181. most_queue-2.7/tests/units/test_conditionals.py +0 -146
  182. most_queue-2.7/tests/units/test_h2_params_cv.py +0 -95
  183. most_queue-2.7/tests/units/test_queue_types.py +0 -61
  184. most_queue-2.7/tests/units/test_tt_up_probs.py +0 -46
  185. most_queue-2.7/tests/units/test_v1_on_channels.py +0 -72
  186. most_queue-2.7/tests/units/test_v1_utlization_approx.py +0 -12
  187. most_queue-2.7/tests/units/test_weibull.py +0 -34
  188. most_queue-2.7/tutorials/m_h2_h2warm.ipynb +0 -272
  189. most_queue-2.7/tutorials/mgn_takahasi_takami.ipynb +0 -252
  190. most_queue-2.7/tutorials/network_with_priorities.ipynb +0 -381
  191. most_queue-2.7/tutorials/priority_queue.ipynb +0 -378
  192. most_queue-2.7/tutorials/queue_sim.ipynb +0 -456
  193. most_queue-2.7/works/__init__.py +0 -0
  194. most_queue-2.7/works/negative_queues/__init__.py +0 -0
  195. most_queue-2.7/works/negative_queues/base_parameters.yaml +0 -21
  196. most_queue-2.7/works/negative_queues/work_mgn_negatives.py +0 -333
  197. most_queue-2.7/works/vacations/__init__.py +0 -0
  198. most_queue-2.7/works/vacations/base_parameters.yaml +0 -52
  199. most_queue-2.7/works/vacations/channels.py +0 -80
  200. most_queue-2.7/works/vacations/cooling.py +0 -182
  201. most_queue-2.7/works/vacations/cooling_delay.py +0 -181
  202. most_queue-2.7/works/vacations/main.py +0 -60
  203. most_queue-2.7/works/vacations/run_one_calc_vs_sim.py +0 -173
  204. most_queue-2.7/works/vacations/service.py +0 -86
  205. most_queue-2.7/works/vacations/utilization.py +0 -75
  206. most_queue-2.7/works/vacations/utils.py +0 -125
  207. most_queue-2.7/works/vacations/warmup.py +0 -180
  208. {most_queue-2.7 → most_queue-2.9}/LICENSE +0 -0
  209. {most_queue-2.7 → most_queue-2.9}/most_queue/constants.py +0 -0
  210. {most_queue-2.7 → most_queue-2.9}/most_queue/io/__init__.py +0 -0
  211. {most_queue-2.7 → most_queue-2.9}/most_queue/io/tables.py +0 -0
  212. {most_queue-2.7 → most_queue-2.9}/most_queue/misc/approx_cdf_make.py +0 -0
  213. {most_queue-2.7 → most_queue-2.9}/most_queue/misc/compare_fj_calc.py +0 -0
  214. {most_queue-2.7 → most_queue-2.9}/most_queue/misc/flow_sum.py +0 -0
  215. {most_queue-2.7 → most_queue-2.9}/most_queue/misc/run_mgn_with_h2_delay_cold_warm.py +0 -0
  216. {most_queue-2.7 → most_queue-2.9}/most_queue/misc/tests/test_fj_delta.py +0 -0
  217. {most_queue-2.7 → most_queue-2.9}/most_queue/misc/tests/test_network_opt_approx.py +0 -0
  218. {most_queue-2.7 → most_queue-2.9}/most_queue/misc/tests/test_network_opt_plus.py +0 -0
  219. {most_queue-2.7 → most_queue-2.9}/most_queue/misc/vacations_paper_utils.py +0 -0
  220. {most_queue-2.7 → most_queue-2.9}/most_queue/random/__init__.py +0 -0
  221. {most_queue-2.7 → most_queue-2.9}/most_queue/random/distributions.yaml +0 -0
  222. {most_queue-2.7 → most_queue-2.9}/most_queue/random/utils/base.py +0 -0
  223. {most_queue-2.7 → most_queue-2.9}/most_queue/random/utils/fit.py +0 -0
  224. {most_queue-2.7 → most_queue-2.9}/most_queue/random/utils/load.py +0 -0
  225. {most_queue-2.7 → most_queue-2.9}/most_queue/random/utils/params.py +0 -0
  226. {most_queue-2.7 → most_queue-2.9}/most_queue/sim/fork_join_delta.py +0 -0
  227. {most_queue-2.7 → most_queue-2.9}/most_queue/sim/networks/__init__.py +0 -0
  228. {most_queue-2.7 → most_queue-2.9}/most_queue/sim/networks/base_network_sim.py +0 -0
  229. {most_queue-2.7 → most_queue-2.9}/most_queue/sim/networks/network.py +0 -0
  230. {most_queue-2.7 → most_queue-2.9}/most_queue/sim/networks/priority_network.py +0 -0
  231. {most_queue-2.7 → most_queue-2.9}/most_queue/sim/utils/__init__.py +0 -0
  232. {most_queue-2.7 → most_queue-2.9}/most_queue/sim/utils/events.py +0 -0
  233. {most_queue-2.7 → most_queue-2.9}/most_queue/sim/utils/phase.py +0 -0
  234. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/__init__.py +0 -0
  235. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/base_queue.py +0 -0
  236. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/calc_params.py +0 -0
  237. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/closed/engset.py +0 -0
  238. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/fifo/ek_d_n.py +0 -0
  239. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/fifo/m_d_n.py +0 -0
  240. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/fifo/mg1.py +0 -0
  241. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/fifo/mmnr.py +0 -0
  242. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/fifo/takahasi_base.py +0 -0
  243. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/fork_join/m_m_n.py +0 -0
  244. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/fork_join/split_join.py +0 -0
  245. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/impatience/mm1.py +0 -0
  246. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/negative/mg1_rcs.py +0 -0
  247. /most_queue-2.7/most_queue/theory/batch/__init__.py → /most_queue-2.9/most_queue/theory/negative/structs.py +0 -0
  248. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/networks/base_network_calc.py +0 -0
  249. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/networks/negative_network.py +0 -0
  250. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/networks/network_viewer.py +0 -0
  251. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/networks/open_network.py +0 -0
  252. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/networks/open_network_prty.py +0 -0
  253. {most_queue-2.7/most_queue/theory/closed → most_queue-2.9/most_queue/theory/networks/opt}/__init__.py +0 -0
  254. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/networks/opt/transition.py +0 -0
  255. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/networks/opt/transition_approx.py +0 -0
  256. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/networks/opt/transition_plus.py +0 -0
  257. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/priority/mgn_invar_approx.py +0 -0
  258. {most_queue-2.7/most_queue/theory/fork_join → most_queue-2.9/most_queue/theory/priority/non_preemptive}/__init__.py +0 -0
  259. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/priority/non_preemptive/mg1.py +0 -0
  260. {most_queue-2.7/most_queue/theory/impatience → most_queue-2.9/most_queue/theory/priority/preemptive}/__init__.py +0 -0
  261. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/priority/preemptive/m_ph_n_busy_approx.py +0 -0
  262. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/priority/preemptive/mg1.py +0 -0
  263. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/r_example.gexf +0 -0
  264. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/utils/__init__.py +0 -0
  265. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/utils/binom_probs.py +0 -0
  266. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/utils/conv.py +0 -0
  267. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/utils/diff5dots.py +0 -0
  268. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/utils/flow_sum.py +0 -0
  269. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/utils/max_dist.py +0 -0
  270. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/utils/moments.py +0 -0
  271. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/utils/q_poisson_arrival_calc.py +0 -0
  272. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/utils/residual.py +0 -0
  273. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/utils/student_stat.py +0 -0
  274. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/utils/transforms.py +0 -0
  275. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/utils/utilization_approx.py +0 -0
  276. {most_queue-2.7 → most_queue-2.9}/most_queue/theory/utils/validation.py +0 -0
@@ -162,11 +162,32 @@ cython_debug/
162
162
 
163
163
  .vscode
164
164
 
165
- works/negative_queues/results/*
165
+ # works/negative_queues (article sources, figures, scripts)
166
+ # keep sources in git, ignore generated artifacts and bulky results
167
+ works/negative_queues/*.zip
168
+ works/negative_queues_takahasi_takami_sources.zip
169
+ works/negative_queues/build/
170
+ works/negative_queues/results/
171
+ works/negative_queues/__pycache__/
172
+ works/negative_queues/*.aux
173
+ works/negative_queues/*.bbl
174
+ works/negative_queues/*.bcf
175
+ works/negative_queues/*.blg
176
+ works/negative_queues/*.fdb_latexmk
177
+ works/negative_queues/*.fls
178
+ works/negative_queues/*.log
179
+ works/negative_queues/*.out
180
+ works/negative_queues/*.run.xml
181
+ works/negative_queues/*.synctex.gz
182
+ works/negative_queues/*.toc
183
+ works/negative_queues/**/*.bkp
166
184
 
167
185
  # ignore all png files in tests/units folder
168
186
  tests/units/*.png
169
187
 
188
+ # Generated by examples/srpt_table.py (matplotlib)
189
+ examples/srpt_table.png
190
+
170
191
  # ignore all files in works/vacations/results
171
192
  works/vacations/results/*
172
193
 
@@ -174,3 +195,9 @@ works/vacations/results/*
174
195
  docs/negative_queues_takahasi_takami.md
175
196
  docs/negative_queues_figures/
176
197
  docs/books/
198
+ docs/статьи/
199
+ works/queueing_systems_review/SRPT/pdf/
200
+ works/experiments/rabbitmq_prefetch/
201
+ works/reviews/
202
+ # RDR paper PDF (external, not redistributed) — keep only COVERAGE.md audit
203
+ works/articles/multichannel-pr/*.pdf
@@ -0,0 +1,200 @@
1
+ Metadata-Version: 2.4
2
+ Name: most_queue
3
+ Version: 2.9
4
+ Summary: Software package for calculation and simulation of queuing systems
5
+ Project-URL: Homepage, https://github.com/xabarov/most-queue
6
+ Author-email: Xabarov Roman <xabarov1985@gmail.com>
7
+ License: Copyright (c) 2018 The Python Packaging Authority
8
+
9
+ Permission is hereby granted, free of charge, to any person obtaining a copy
10
+ of this software and associated documentation files (the "Software"), to deal
11
+ in the Software without restriction, including without limitation the rights
12
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
+ copies of the Software, and to permit persons to whom the Software is
14
+ furnished to do so, subject to the following conditions:
15
+
16
+ The above copyright notice and this permission notice shall be included in all
17
+ copies or substantial portions of the Software.
18
+
19
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
25
+ SOFTWARE.
26
+ License-File: LICENSE
27
+ Classifier: License :: OSI Approved :: MIT License
28
+ Classifier: Operating System :: OS Independent
29
+ Classifier: Programming Language :: Python :: 3
30
+ Requires-Python: >=3.9
31
+ Requires-Dist: colorama
32
+ Requires-Dist: graphviz
33
+ Requires-Dist: matplotlib
34
+ Requires-Dist: networkx
35
+ Requires-Dist: numpy
36
+ Requires-Dist: pandas
37
+ Requires-Dist: pyyaml
38
+ Requires-Dist: scipy<2.0,>=1.13.0
39
+ Requires-Dist: tqdm
40
+ Description-Content-Type: text/markdown
41
+
42
+ <div align="center">
43
+
44
+ # Most-Queue
45
+
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
+
48
+ [🇷🇺 Русская версия](README.ru.md)
49
+
50
+ [![Tests](https://github.com/xabarov/most-queue/actions/workflows/tests.yml/badge.svg)](https://github.com/xabarov/most-queue/actions/workflows/tests.yml)
51
+ [![PyPI version](https://img.shields.io/pypi/v/most-queue)](https://pypi.org/project/most-queue/)
52
+ [![Python versions](https://img.shields.io/pypi/pyversions/most-queue)](https://pypi.org/project/most-queue/)
53
+ [![License](https://img.shields.io/pypi/l/most-queue)](https://github.com/xabarov/most-queue/blob/main/LICENSE)
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)
56
+ [![GitHub commit activity](https://img.shields.io/github/commit-activity/m/xabarov/most-queue)](https://github.com/xabarov/most-queue/commits/main)
57
+
58
+ <img src="https://raw.githubusercontent.com/xabarov/most-queue/main/assets/most-queue-nano1.jpeg" alt="Most-Queue banner" width="720"/>
59
+
60
+ </div>
61
+
62
+ ## Why Most-Queue?
63
+
64
+ - **Analytics and simulation together.** Nearly every analytical calculator ships with a paired
65
+ discrete-event simulator, and the test suite cross-validates them against each other. You get
66
+ fast exact numbers *and* a way to check them.
67
+ - **Models you won't find elsewhere in open source**: size-based scheduling analytics
68
+ (SRPT, SJF, PSJF, SPJF with ML-style size predictions, FB/LAS), M/G/1 vacation models,
69
+ negative customers (RCS / disasters), unreliable servers, multi-server phase-type systems
70
+ solved by the Takahashi–Takami method (including CV < 1 via complex-fit H₂).
71
+ - **Moments, not just means**: waiting/sojourn time raw moments, state probabilities,
72
+ utilization — with a uniform `set_sources() / set_servers() / run()` API across all models.
73
+ - **Pure Python + NumPy/SciPy**, pip-installable, MIT license.
74
+
75
+ ## Installation
76
+
77
+ ```bash
78
+ pip install most-queue
79
+ ```
80
+
81
+ Requires Python ≥ 3.9. For network visualization you may also need the system `graphviz` package.
82
+
83
+ ## Quick start: theory vs simulation in 20 lines
84
+
85
+ ```python
86
+ from most_queue.theory.fifo.mmnr import MMnrCalc
87
+ from most_queue.sim.base import QsSim
88
+
89
+ # Analytical M/M/3 with a finite queue
90
+ calc = MMnrCalc(n=3, r=100)
91
+ calc.set_sources(l=2.0)
92
+ calc.set_servers(mu=1.0)
93
+ theory = calc.run()
94
+
95
+ # The same system, simulated
96
+ sim = QsSim(3)
97
+ sim.set_sources(2.0, "M")
98
+ sim.set_servers(1.0, "M")
99
+ experiment = sim.run(100_000)
100
+
101
+ print(f"Mean waiting time: theory {theory.w[0]:.3f} vs simulation {experiment.w[0]:.3f}")
102
+ # Mean waiting time: theory 0.444 vs simulation 0.448
103
+ ```
104
+
105
+ ## Showcase: who pays for the scheduling discipline?
106
+
107
+ Computed by the library's own calculators — conditional slowdown `E[T(x)]/x` by job size
108
+ for FCFS, PS, FB (blind) and SRPT (size-aware):
109
+
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"/>
111
+
112
+ See the executable comparison of **9 disciplines** in
113
+ [`tutorials/disciplines_comparison.ipynb`](tutorials/disciplines_comparison.ipynb).
114
+
115
+ ## What's inside
116
+
117
+ | Family | Models | Method |
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 |
120
+ | Multi-server phase-type | M/H₂/c, H₂/M/c, H₂/H₂/c (CV < 1 via complex fit) | Takahashi–Takami |
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 |
125
+ | Vacations & warm-up | M/G/1 multiple vacations, N-policy, warm-up/cooling/delay (M/Ph/c) | Fuhrmann–Cooper, Takahashi–Takami |
126
+ | Negative customers | M/G/1 and M/G/c with RCS or disasters | exact / Takahashi–Takami |
127
+ | Reliability | M/G/1 with breakdowns & repairs | Avi-Itzhak–Naor |
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 |
130
+ | Retrial & abandonment | M/M/1 and M/G/1 retrial (orbit), Erlang-A (M/M/n+M) with staffing | exact / Falin–Templeton |
131
+ | GI/G approximations | GI/G/1, GI/G/m mean waiting time | Kingman, Krämer–Langenbach-Belz, Allen–Cunneen |
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 |
134
+ | Parallel service | Fork-Join, Split-Join | Markovian / order statistics |
135
+ | Networks | open networks, priority networks, networks with negative customers, routing optimization | decomposition |
136
+
137
+ Every model comes with a plain-language explanation and a diagram in the
138
+ [illustrated model catalog](docs/models.md).
139
+
140
+ ## Documentation & tutorials
141
+
142
+ - 📖 [Documentation](docs/README.md) — concepts, calculation and simulation guides (English; Russian versions available via in-page switchers)
143
+ - 🎓 [Jupyter tutorials](tutorials/) — from a first M/M/1 to Takahashi–Takami and SRPT
144
+ - 🗺 [Development roadmaps](docs/epics/README.md) — what's next (closed networks / MVA, multi-server retrial, polling)
145
+ - 🧪 [Tests](tests/) — every model validated against simulation; run with `pytest -m "not slow"`
146
+
147
+ ## Applications
148
+
149
+ Capacity planning for cloud services and data centers · call-center staffing ·
150
+ manufacturing lines · telecom traffic · healthcare resource planning ·
151
+ scheduling research (SRPT/LAS with ML size predictions).
152
+
153
+ ## Recent highlights
154
+
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).
168
+ - **2026** — Wave of exact classics: Erlang B/C, M/G/∞, GI/G approximations, M/G/1 vacation
169
+ models (multiple vacations, N-policy), PS, LCFS-PR, FB/LAS, unreliable server — each with a
170
+ paired simulator and tests. Illustrated model catalog with generated diagrams.
171
+ - **2026** — Size-based scheduling analytics: SRPT / SJF / PSJF / SPJF with prediction models
172
+ (reproduces the Mitzenmacher–Shahout 2025 table in tests) + `SizeBasedQsSim`.
173
+ - **2026 (preprint)** — Multi-server queues with negative customers via Takahashi–Takami:
174
+ [preprint & reproduction code](works/negative_queues/).
175
+ - **2025 (paper)** — Multi-channel system with warm-up, cooling and cooling delay:
176
+ Lokhvitsky, Khabarov, Yakovlev, DOI [10.25791/aviakosmos.1.2025.1456](https://doi.org/10.25791/aviakosmos.1.2025.1456).
177
+
178
+ ## Contributing
179
+
180
+ Issues and pull requests are welcome! Open an [issue](https://github.com/xabarov/most-queue/issues)
181
+ for bugs or model requests. Development conventions: [docs/PROJECT.md](docs/PROJECT.md),
182
+ definition of done: [docs/DOD.md](docs/DOD.md).
183
+
184
+ ## Citation
185
+
186
+ If you use Most-Queue in research, please cite it (see [`CITATION.cff`](CITATION.cff)):
187
+
188
+ ```bibtex
189
+ @software{most_queue,
190
+ author = {Khabarov, Roman},
191
+ title = {Most-Queue: queueing theory calculations and simulation in Python},
192
+ url = {https://github.com/xabarov/most-queue},
193
+ doi = {10.5281/zenodo.21268402},
194
+ license = {MIT}
195
+ }
196
+ ```
197
+
198
+ ## License
199
+
200
+ [MIT](LICENSE) © Roman Khabarov
@@ -0,0 +1,159 @@
1
+ <div align="center">
2
+
3
+ # Most-Queue
4
+
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
+
7
+ [🇷🇺 Русская версия](README.ru.md)
8
+
9
+ [![Tests](https://github.com/xabarov/most-queue/actions/workflows/tests.yml/badge.svg)](https://github.com/xabarov/most-queue/actions/workflows/tests.yml)
10
+ [![PyPI version](https://img.shields.io/pypi/v/most-queue)](https://pypi.org/project/most-queue/)
11
+ [![Python versions](https://img.shields.io/pypi/pyversions/most-queue)](https://pypi.org/project/most-queue/)
12
+ [![License](https://img.shields.io/pypi/l/most-queue)](https://github.com/xabarov/most-queue/blob/main/LICENSE)
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)
15
+ [![GitHub commit activity](https://img.shields.io/github/commit-activity/m/xabarov/most-queue)](https://github.com/xabarov/most-queue/commits/main)
16
+
17
+ <img src="https://raw.githubusercontent.com/xabarov/most-queue/main/assets/most-queue-nano1.jpeg" alt="Most-Queue banner" width="720"/>
18
+
19
+ </div>
20
+
21
+ ## Why Most-Queue?
22
+
23
+ - **Analytics and simulation together.** Nearly every analytical calculator ships with a paired
24
+ discrete-event simulator, and the test suite cross-validates them against each other. You get
25
+ fast exact numbers *and* a way to check them.
26
+ - **Models you won't find elsewhere in open source**: size-based scheduling analytics
27
+ (SRPT, SJF, PSJF, SPJF with ML-style size predictions, FB/LAS), M/G/1 vacation models,
28
+ negative customers (RCS / disasters), unreliable servers, multi-server phase-type systems
29
+ solved by the Takahashi–Takami method (including CV < 1 via complex-fit H₂).
30
+ - **Moments, not just means**: waiting/sojourn time raw moments, state probabilities,
31
+ utilization — with a uniform `set_sources() / set_servers() / run()` API across all models.
32
+ - **Pure Python + NumPy/SciPy**, pip-installable, MIT license.
33
+
34
+ ## Installation
35
+
36
+ ```bash
37
+ pip install most-queue
38
+ ```
39
+
40
+ Requires Python ≥ 3.9. For network visualization you may also need the system `graphviz` package.
41
+
42
+ ## Quick start: theory vs simulation in 20 lines
43
+
44
+ ```python
45
+ from most_queue.theory.fifo.mmnr import MMnrCalc
46
+ from most_queue.sim.base import QsSim
47
+
48
+ # Analytical M/M/3 with a finite queue
49
+ calc = MMnrCalc(n=3, r=100)
50
+ calc.set_sources(l=2.0)
51
+ calc.set_servers(mu=1.0)
52
+ theory = calc.run()
53
+
54
+ # The same system, simulated
55
+ sim = QsSim(3)
56
+ sim.set_sources(2.0, "M")
57
+ sim.set_servers(1.0, "M")
58
+ experiment = sim.run(100_000)
59
+
60
+ print(f"Mean waiting time: theory {theory.w[0]:.3f} vs simulation {experiment.w[0]:.3f}")
61
+ # Mean waiting time: theory 0.444 vs simulation 0.448
62
+ ```
63
+
64
+ ## Showcase: who pays for the scheduling discipline?
65
+
66
+ Computed by the library's own calculators — conditional slowdown `E[T(x)]/x` by job size
67
+ for FCFS, PS, FB (blind) and SRPT (size-aware):
68
+
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"/>
70
+
71
+ See the executable comparison of **9 disciplines** in
72
+ [`tutorials/disciplines_comparison.ipynb`](tutorials/disciplines_comparison.ipynb).
73
+
74
+ ## What's inside
75
+
76
+ | Family | Models | Method |
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 |
79
+ | Multi-server phase-type | M/H₂/c, H₂/M/c, H₂/H₂/c (CV < 1 via complex fit) | Takahashi–Takami |
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 |
84
+ | Vacations & warm-up | M/G/1 multiple vacations, N-policy, warm-up/cooling/delay (M/Ph/c) | Fuhrmann–Cooper, Takahashi–Takami |
85
+ | Negative customers | M/G/1 and M/G/c with RCS or disasters | exact / Takahashi–Takami |
86
+ | Reliability | M/G/1 with breakdowns & repairs | Avi-Itzhak–Naor |
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 |
89
+ | Retrial & abandonment | M/M/1 and M/G/1 retrial (orbit), Erlang-A (M/M/n+M) with staffing | exact / Falin–Templeton |
90
+ | GI/G approximations | GI/G/1, GI/G/m mean waiting time | Kingman, Krämer–Langenbach-Belz, Allen–Cunneen |
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 |
93
+ | Parallel service | Fork-Join, Split-Join | Markovian / order statistics |
94
+ | Networks | open networks, priority networks, networks with negative customers, routing optimization | decomposition |
95
+
96
+ Every model comes with a plain-language explanation and a diagram in the
97
+ [illustrated model catalog](docs/models.md).
98
+
99
+ ## Documentation & tutorials
100
+
101
+ - 📖 [Documentation](docs/README.md) — concepts, calculation and simulation guides (English; Russian versions available via in-page switchers)
102
+ - 🎓 [Jupyter tutorials](tutorials/) — from a first M/M/1 to Takahashi–Takami and SRPT
103
+ - 🗺 [Development roadmaps](docs/epics/README.md) — what's next (closed networks / MVA, multi-server retrial, polling)
104
+ - 🧪 [Tests](tests/) — every model validated against simulation; run with `pytest -m "not slow"`
105
+
106
+ ## Applications
107
+
108
+ Capacity planning for cloud services and data centers · call-center staffing ·
109
+ manufacturing lines · telecom traffic · healthcare resource planning ·
110
+ scheduling research (SRPT/LAS with ML size predictions).
111
+
112
+ ## Recent highlights
113
+
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).
127
+ - **2026** — Wave of exact classics: Erlang B/C, M/G/∞, GI/G approximations, M/G/1 vacation
128
+ models (multiple vacations, N-policy), PS, LCFS-PR, FB/LAS, unreliable server — each with a
129
+ paired simulator and tests. Illustrated model catalog with generated diagrams.
130
+ - **2026** — Size-based scheduling analytics: SRPT / SJF / PSJF / SPJF with prediction models
131
+ (reproduces the Mitzenmacher–Shahout 2025 table in tests) + `SizeBasedQsSim`.
132
+ - **2026 (preprint)** — Multi-server queues with negative customers via Takahashi–Takami:
133
+ [preprint & reproduction code](works/negative_queues/).
134
+ - **2025 (paper)** — Multi-channel system with warm-up, cooling and cooling delay:
135
+ Lokhvitsky, Khabarov, Yakovlev, DOI [10.25791/aviakosmos.1.2025.1456](https://doi.org/10.25791/aviakosmos.1.2025.1456).
136
+
137
+ ## Contributing
138
+
139
+ Issues and pull requests are welcome! Open an [issue](https://github.com/xabarov/most-queue/issues)
140
+ for bugs or model requests. Development conventions: [docs/PROJECT.md](docs/PROJECT.md),
141
+ definition of done: [docs/DOD.md](docs/DOD.md).
142
+
143
+ ## Citation
144
+
145
+ If you use Most-Queue in research, please cite it (see [`CITATION.cff`](CITATION.cff)):
146
+
147
+ ```bibtex
148
+ @software{most_queue,
149
+ author = {Khabarov, Roman},
150
+ title = {Most-Queue: queueing theory calculations and simulation in Python},
151
+ url = {https://github.com/xabarov/most-queue},
152
+ doi = {10.5281/zenodo.21268402},
153
+ license = {MIT}
154
+ }
155
+ ```
156
+
157
+ ## License
158
+
159
+ [MIT](LICENSE) © Roman Khabarov
@@ -0,0 +1,120 @@
1
+ # Most-Queue Library Documentation
2
+
3
+ [🇷🇺 Русская версия](README.ru.md)
4
+
5
+ ![Queue](../assets/most-queue-nano1.jpeg)
6
+
7
+ **Most-Queue** is a Python library for simulation and numerical analysis of queueing systems and queueing networks.
8
+
9
+ ## 📚 Documentation Guide
10
+
11
+ ### Getting Started
12
+ - **[Quick Start](getting_started.md)** — installation and first usage examples
13
+ - **[Core Concepts](concepts.md)** — queueing theory and terminology
14
+ - **[Thesaurus](tesaurus.md)** — glossary of queueing theory terms
15
+
16
+ ### Main Sections
17
+ - **[Queueing System Simulation](simulation.md)** — guide to modeling queueing systems (including the *SizeBasedQsSim* section — SRPT, SJF, SPJF, etc.)
18
+ - **[Numerical Methods](calculation.md)** — computing queueing system characteristics with analytical methods (including the *Size-based M/G/1 calculators* section)
19
+ - **[Distributions](distributions.md)** — reference for supported distributions
20
+ - **[Queueing Models](models.md)** — catalog of supported queueing system types
21
+
22
+ ### For Developers
23
+ - **[Project Overview](PROJECT.md)** (in Russian) — repository layout, conventions, where to find the theory
24
+ - **[Infrastructure](INFRASTRUCTURE.md)** (in Russian) — building, testing, code quality, publishing
25
+ - **[Definition of Done](DOD.md)** (in Russian) — task completion criteria
26
+ - **[Epics](epics/README.md)** (in Russian) — planning of major development directions
27
+ - **[Model Gap Analysis](models_gap_analysis.md)** (in Russian) — what is implemented, what is missing, priorities (EPIC-001)
28
+
29
+ ### Specialized Topics
30
+ - **[SRPT / SPJF: Calculation Methods and Verification](srpt_spjf_methods.md)** — formulas, numerical scheme (grids, Simpson, quad), comparison with `SizeBasedQsSim` and tests (per the [roadmap](roadmaps/srpt_spjf_roadmap.md) (in Russian))
31
+ - **[Queueing Networks](networks.md)** — simulation and calculation of queueing networks
32
+ - **[Priority Systems](priorities.md)** — systems with priority service
33
+ - **[Disasters (negative customers): Time Characteristics](negative_disasters_time_characteristics.md)** — computing \(W, V, V_{served}, V_{broken}\) via LST
34
+ - **[RCS (negative customers): Time Characteristics](negative_rcs_time_characteristics.md)** — computing \(W, V, V_{served}, V_{broken}\) in the RCS model
35
+ - **[Advanced Examples](examples.md)** — practical cases and complex scenarios
36
+
37
+ ## 🎯 Key Features
38
+
39
+ ### Simulation
40
+ - Modeling of various queueing system types (M/M/c, M/G/1, GI/M/c, and others)
41
+ - Support for a variety of arrival and service time distributions
42
+ - Systems with priorities, vacations, negative customers
43
+ - Fork-Join and Split-Join systems
44
+ - Queueing networks
45
+
46
+ ### Numerical Methods
47
+ - Analytical calculation of steady-state characteristics
48
+ - Methods for various queueing system types
49
+ - High calculation accuracy
50
+ - Fast results
51
+
52
+ ### Result Analysis
53
+ - Moments of waiting and sojourn times
54
+ - System state probabilities
55
+ - Utilization factor
56
+ - Visualization and result tables
57
+
58
+ ## 📦 Installation
59
+
60
+ ```bash
61
+ pip install most-queue
62
+ ```
63
+
64
+ Or install from the repository:
65
+
66
+ ```bash
67
+ pip install -e .
68
+ ```
69
+
70
+ ## 🔍 Quick Example
71
+
72
+ ```python
73
+ from most_queue.sim.base import QsSim
74
+
75
+ # Create an M/M/1 system simulator
76
+ qs = QsSim(num_of_channels=1)
77
+
78
+ # Configure the arrival process (Poisson with rate 0.5)
79
+ qs.set_sources(0.5, "M")
80
+
81
+ # Configure the service (exponential with rate 1.0)
82
+ qs.set_servers(1.0, "M")
83
+
84
+ # Run the simulation for 10000 jobs
85
+ results = qs.run(10000)
86
+
87
+ # Get the results
88
+ print(f"Mean waiting time: {results.w[0]:.4f}")
89
+ print(f"Mean sojourn time: {results.v[0]:.4f}")
90
+ print(f"Utilization factor: {results.utilization:.4f}")
91
+ ```
92
+
93
+ ## 📖 Library Structure
94
+
95
+ The library consists of two main modules:
96
+
97
+ - **`most_queue.sim`** — queueing system simulation module
98
+ - **`most_queue.theory`** — numerical calculation methods module
99
+
100
+ ## 🧪 Examples and Tests
101
+
102
+ - Usage examples can be found in the [`tests/`](../tests/) folder
103
+ - Jupyter tutorials are available in the [`tutorials/`](../tutorials/) folder
104
+
105
+ ## 📝 Version
106
+
107
+ Current version: **2.8**
108
+
109
+ ## 🔗 Useful Links
110
+
111
+ - [GitHub Repository](https://github.com/xabarov/most-queue)
112
+ - [Issues and Suggestions](https://github.com/xabarov/most-queue/issues)
113
+
114
+ ## 👥 Contact
115
+
116
+ For questions and suggestions: xabarov1985@gmail.com
117
+
118
+ ---
119
+
120
+ **Note**: This documentation is in English. Russian versions of the pages are available via the language-switcher links at the top of each page.
@@ -0,0 +1,59 @@
1
+ # Эпики Most-Queue
2
+
3
+ Папка с эпиками — крупными направлениями разработки. Каждый эпик — отдельный файл
4
+ `EPIC-NNN-<slug>.md` с последовательной нумерацией.
5
+
6
+ ## Процесс
7
+
8
+ 1. Новое направление → новый файл эпика по шаблону ниже, статус `proposed`.
9
+ 2. Эпик декомпозируется на задачи (чек-лист внутри файла). Детальный технический план
10
+ при необходимости выносится в `docs/roadmaps/` (взаимные ссылки обязательны).
11
+ 3. В работе — статус `in progress`; по завершении — `done` + раздел «Результаты».
12
+ Критерии готовности — [../DOD.md](../DOD.md).
13
+ 4. Статусы задач отмечаются прямо в чек-листе эпика; история — через git.
14
+
15
+ ## Шаблон эпика
16
+
17
+ ```markdown
18
+ # EPIC-NNN: <Название>
19
+
20
+ - **Статус:** proposed | in progress | done | dropped
21
+ - **Создан:** YYYY-MM-DD
22
+ - **Roadmap:** ссылка на docs/roadmaps/... (если есть)
23
+
24
+ ## Цель
25
+ Зачем это нужно и что изменится в библиотеке.
26
+
27
+ ## Контекст
28
+ Текущее состояние, источники, ограничения.
29
+
30
+ ## Задачи
31
+ - [ ] ...
32
+
33
+ ## Критерии готовности (DoD эпика)
34
+ Специфичные для эпика критерии + общий DoD.
35
+
36
+ ## Результаты
37
+ Заполняется по завершении.
38
+ ```
39
+
40
+ ## Реестр эпиков
41
+
42
+ | № | Эпик | Статус |
43
+ |---|------|--------|
44
+ | [EPIC-001](EPIC-001-queueing-models-gap-analysis.md) | Исследование: модели теории очередей vs реализованные | done |
45
+ | [EPIC-002](EPIC-002-wave1-exact-models.md) | Волна 1: точные базовые модели (Erlang B/C, M/G/∞, GI/G, vacations, PS/FB, breakdowns) | done |
46
+ | [EPIC-003](EPIC-003-qbd-map-ph.md) | QBD/MAP/PH-стек (матрично-аналитические методы) | done |
47
+ | [EPIC-004](EPIC-004-retrial-erlang-a.md) | Retrial-очереди и Erlang-A | done |
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.05"
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",