most-queue 1.51__tar.gz → 1.53__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.

Potentially problematic release.


This version of most-queue might be problematic. Click here for more details.

Files changed (154) hide show
  1. most_queue-1.53/PKG-INFO +154 -0
  2. most_queue-1.53/README.md +114 -0
  3. most_queue-1.53/docs/Makefile +20 -0
  4. most_queue-1.53/docs/make.bat +35 -0
  5. most_queue-1.53/docs/source/conf.py +35 -0
  6. most_queue-1.53/docs/source/index.rst +19 -0
  7. most_queue-1.53/docs/source/modules.rst +7 -0
  8. most_queue-1.53/docs/source/most_queue.rst +30 -0
  9. most_queue-1.53/docs/source/most_queue.sim.rst +71 -0
  10. most_queue-1.53/docs/source/most_queue.theory.rst +182 -0
  11. most_queue-1.53/googleb31d3dccb40f969f.html +1 -0
  12. most_queue-1.53/most_queue/general/approx_cdf_make.py +83 -0
  13. most_queue-1.53/most_queue/general/conv.py +53 -0
  14. most_queue-1.53/most_queue/general/distribution_params.py +71 -0
  15. most_queue-1.53/most_queue/general/interfaces.py +62 -0
  16. most_queue-1.53/most_queue/general/tables.py +236 -0
  17. {most_queue-1.51/most_queue/general_utils → most_queue-1.53/most_queue/general}/vacations_paper_utils.py +29 -13
  18. {most_queue-1.51 → most_queue-1.53}/most_queue/misc/compare_fj_calc.py +2 -2
  19. {most_queue-1.51 → most_queue-1.53}/most_queue/misc/flow_sum.py +18 -11
  20. most_queue-1.53/most_queue/rand_distribution.py +1089 -0
  21. most_queue-1.51/most_queue/sim/flow_sum_sim.py → most_queue-1.53/most_queue/sim/flow_sum.py +22 -17
  22. {most_queue-1.51/most_queue/sim → most_queue-1.53/most_queue/sim/networks}/priority_network.py +8 -8
  23. {most_queue-1.51/most_queue/theory → most_queue-1.53/most_queue/sim/queueing_systems}/__init__.py +0 -0
  24. most_queue-1.51/most_queue/sim/batch_sim.py → most_queue-1.53/most_queue/sim/queueing_systems/batch.py +3 -2
  25. most_queue-1.51/most_queue/sim/qs_sim.py → most_queue-1.53/most_queue/sim/queueing_systems/fifo.py +17 -42
  26. most_queue-1.51/most_queue/sim/queue_finite_source_sim.py → most_queue-1.53/most_queue/sim/queueing_systems/finite_source.py +64 -18
  27. most_queue-1.51/most_queue/sim/fj_sim.py → most_queue-1.53/most_queue/sim/queueing_systems/fork_join.py +4 -4
  28. most_queue-1.51/most_queue/sim/fj_delta_sim.py → most_queue-1.53/most_queue/sim/queueing_systems/fork_join_delta.py +5 -5
  29. most_queue-1.51/most_queue/sim/impatient_queue_sim.py → most_queue-1.53/most_queue/sim/queueing_systems/impatient.py +12 -33
  30. most_queue-1.51/most_queue/sim/priority_queue_sim.py → most_queue-1.53/most_queue/sim/queueing_systems/priority.py +0 -5
  31. {most_queue-1.51 → most_queue-1.53}/most_queue/sim/utils/distribution_utils.py +28 -28
  32. {most_queue-1.51 → most_queue-1.53}/most_queue/sim/utils/phase.py +3 -3
  33. {most_queue-1.51 → most_queue-1.53}/most_queue/sim/utils/qs_queue.py +3 -0
  34. {most_queue-1.51 → most_queue-1.53}/most_queue/sim/utils/servers.py +30 -13
  35. most_queue-1.53/most_queue/theory/__init__.py +0 -0
  36. most_queue-1.53/most_queue/theory/networks/__init__.py +0 -0
  37. most_queue-1.53/most_queue/theory/networks/open_network.py +152 -0
  38. most_queue-1.53/most_queue/theory/queueing_systems/__init__.py +0 -0
  39. most_queue-1.53/most_queue/theory/queueing_systems/batch/__init__.py +0 -0
  40. most_queue-1.51/most_queue/theory/batch_mm1.py → most_queue-1.53/most_queue/theory/queueing_systems/batch/mm1.py +16 -18
  41. most_queue-1.53/most_queue/theory/queueing_systems/closed/__init__.py +0 -0
  42. most_queue-1.53/most_queue/theory/queueing_systems/closed/engset.py +141 -0
  43. most_queue-1.53/most_queue/theory/queueing_systems/fifo/__init__.py +0 -0
  44. most_queue-1.51/most_queue/theory/ek_d_n_calc.py → most_queue-1.53/most_queue/theory/queueing_systems/fifo/ek_d_n.py +5 -5
  45. most_queue-1.53/most_queue/theory/queueing_systems/fifo/gi_m_1.py +133 -0
  46. most_queue-1.53/most_queue/theory/queueing_systems/fifo/gi_m_n.py +190 -0
  47. most_queue-1.51/most_queue/theory/m_d_n_calc.py → most_queue-1.53/most_queue/theory/queueing_systems/fifo/m_d_n.py +67 -59
  48. most_queue-1.53/most_queue/theory/queueing_systems/fifo/mg1.py +91 -0
  49. most_queue-1.53/most_queue/theory/queueing_systems/fifo/mgn_takahasi.py +398 -0
  50. most_queue-1.53/most_queue/theory/queueing_systems/fifo/mmnr.py +116 -0
  51. most_queue-1.53/most_queue/theory/queueing_systems/fork_join/__init__.py +0 -0
  52. most_queue-1.53/most_queue/theory/queueing_systems/fork_join/m_m_n.py +254 -0
  53. most_queue-1.53/most_queue/theory/queueing_systems/fork_join/split_join.py +284 -0
  54. most_queue-1.53/most_queue/theory/queueing_systems/impatience/__init__.py +0 -0
  55. most_queue-1.53/most_queue/theory/queueing_systems/impatience/mm1.py +117 -0
  56. most_queue-1.53/most_queue/theory/queueing_systems/priority/__init__.py +0 -0
  57. most_queue-1.53/most_queue/theory/queueing_systems/priority/mgn_invar_approx.py +129 -0
  58. most_queue-1.53/most_queue/theory/queueing_systems/priority/non_preemptive/__init__.py +0 -0
  59. most_queue-1.53/most_queue/theory/queueing_systems/priority/non_preemptive/mg1.py +161 -0
  60. most_queue-1.53/most_queue/theory/queueing_systems/priority/preemptive/__init__.py +0 -0
  61. most_queue-1.51/most_queue/theory/m_ph_n_prty.py → most_queue-1.53/most_queue/theory/queueing_systems/priority/preemptive/m_ph_n_busy_approx.py +236 -221
  62. most_queue-1.53/most_queue/theory/queueing_systems/priority/preemptive/mg1.py +205 -0
  63. most_queue-1.51/most_queue/theory/mmn_prty_pnz_approx.py → most_queue-1.53/most_queue/theory/queueing_systems/priority/preemptive/mmn_2cls_pr_busy_approx.py +30 -22
  64. most_queue-1.51/most_queue/theory/mmn3_pnz_cox_approx.py → most_queue-1.53/most_queue/theory/queueing_systems/priority/preemptive/mmn_3cls_busy_approx.py +12 -24
  65. most_queue-1.53/most_queue/theory/queueing_systems/vacations/__init__.py +0 -0
  66. {most_queue-1.51/most_queue/theory → most_queue-1.53/most_queue/theory/queueing_systems/vacations}/m_h2_h2warm.py +175 -183
  67. most_queue-1.53/most_queue/theory/queueing_systems/vacations/mg1_warm_calc.py +53 -0
  68. {most_queue-1.51/most_queue/theory → most_queue-1.53/most_queue/theory/queueing_systems/vacations}/mgn_with_h2_delay_cold_warm.py +251 -304
  69. {most_queue-1.51/most_queue/theory → most_queue-1.53/most_queue/theory/queueing_systems/vacations}/mmn_with_h2_cold_and_h2_warmup.py +9 -21
  70. most_queue-1.53/most_queue/theory/utils/__init__.py +0 -0
  71. most_queue-1.53/most_queue/theory/utils/busy_periods.py +64 -0
  72. {most_queue-1.51 → most_queue-1.53}/most_queue/theory/utils/flow_sum.py +15 -15
  73. most_queue-1.53/most_queue/theory/utils/passage_time.py +585 -0
  74. {most_queue-1.51 → most_queue-1.53}/most_queue/theory/utils/q_poisson_arrival_calc.py +2 -2
  75. most_queue-1.53/most_queue/theory/utils/transforms.py +8 -0
  76. {most_queue-1.51 → most_queue-1.53}/most_queue/theory/utils/weibull.py +49 -7
  77. {most_queue-1.51 → most_queue-1.53}/pyproject.toml +1 -1
  78. {most_queue-1.51 → most_queue-1.53}/setup.py +1 -1
  79. most_queue-1.53/tests/__init__.py +0 -0
  80. {most_queue-1.51 → most_queue-1.53}/tests/test_batch.py +12 -5
  81. {most_queue-1.51 → most_queue-1.53}/tests/test_ek_d_n.py +19 -14
  82. most_queue-1.53/tests/test_engset.py +63 -0
  83. {most_queue-1.51 → most_queue-1.53}/tests/test_fj_delta.py +21 -20
  84. {most_queue-1.51 → most_queue-1.53}/tests/test_fj_im.py +59 -66
  85. most_queue-1.53/tests/test_gi_m_1_calc.py +98 -0
  86. most_queue-1.53/tests/test_gi_m_n_calc.py +98 -0
  87. most_queue-1.53/tests/test_impatience.py +46 -0
  88. most_queue-1.53/tests/test_m_d_n_calc.py +52 -0
  89. most_queue-1.53/tests/test_m_h2_h2warm.py +85 -0
  90. most_queue-1.53/tests/test_m_ph_n_prty.py +138 -0
  91. {most_queue-1.51 → most_queue-1.53}/tests/test_mg1_calc.py +33 -24
  92. most_queue-1.53/tests/test_mgn_tt.py +92 -0
  93. {most_queue-1.51 → most_queue-1.53}/tests/test_mgn_with_h2_delay_cold_warm.py +132 -72
  94. {most_queue-1.51 → most_queue-1.53}/tests/test_mmn3_pnz_cox_approx.py +8 -6
  95. {most_queue-1.51 → most_queue-1.53}/tests/test_mmn_h2cold_h2warm.py +7 -13
  96. {most_queue-1.51 → most_queue-1.53}/tests/test_mmn_prty_pnz_approx.py +2 -4
  97. most_queue-1.53/tests/test_network_im_prty.py +118 -0
  98. {most_queue-1.51 → most_queue-1.53}/tests/test_qs_sim_prty.py +12 -9
  99. {most_queue-1.51 → most_queue-1.53}/tests/test_qs_sim_test.py +10 -7
  100. {most_queue-1.51 → most_queue-1.53}/tests/test_queue_types.py +3 -3
  101. most_queue-1.53/tutorials/m_h2_h2warm.ipynb +336 -0
  102. {most_queue-1.51 → most_queue-1.53}/tutorials/mgn_takahasi_takami.ipynb +5 -5
  103. {most_queue-1.51 → most_queue-1.53}/tutorials/priority_queue.ipynb +11 -10
  104. {most_queue-1.51 → most_queue-1.53}/tutorials/queue_sim.ipynb +9 -8
  105. most_queue-1.51/PKG-INFO +0 -270
  106. most_queue-1.51/README.md +0 -230
  107. most_queue-1.51/most_queue/general_utils/approx_cdf_make.py +0 -79
  108. most_queue-1.51/most_queue/general_utils/conv.py +0 -24
  109. most_queue-1.51/most_queue/general_utils/tables.py +0 -119
  110. most_queue-1.51/most_queue/rand_distribution.py +0 -1031
  111. most_queue-1.51/most_queue/theory/engset_model.py +0 -127
  112. most_queue-1.51/most_queue/theory/fj_calc.py +0 -391
  113. most_queue-1.51/most_queue/theory/gi_m_1_calc.py +0 -89
  114. most_queue-1.51/most_queue/theory/gi_m_n_calc.py +0 -147
  115. most_queue-1.51/most_queue/theory/impatience_calc.py +0 -103
  116. most_queue-1.51/most_queue/theory/mg1_calc.py +0 -79
  117. most_queue-1.51/most_queue/theory/mg1_warm_calc.py +0 -29
  118. most_queue-1.51/most_queue/theory/mgn_tt.py +0 -450
  119. most_queue-1.51/most_queue/theory/mmnr_calc.py +0 -76
  120. most_queue-1.51/most_queue/theory/network_calc.py +0 -190
  121. most_queue-1.51/most_queue/theory/priority_calc.py +0 -550
  122. most_queue-1.51/most_queue/theory/utils/passage_time.py +0 -1033
  123. most_queue-1.51/tests/test_engset.py +0 -52
  124. most_queue-1.51/tests/test_gi_m_1_calc.py +0 -116
  125. most_queue-1.51/tests/test_gi_m_n_calc.py +0 -117
  126. most_queue-1.51/tests/test_impatience.py +0 -35
  127. most_queue-1.51/tests/test_m_d_n_calc.py +0 -56
  128. most_queue-1.51/tests/test_m_h2_h2warm.py +0 -78
  129. most_queue-1.51/tests/test_m_ph_n_prty.py +0 -153
  130. most_queue-1.51/tests/test_mgn_tt.py +0 -91
  131. most_queue-1.51/tests/test_network_im_prty.py +0 -136
  132. most_queue-1.51/tutorials/m_h2_h2warm.ipynb +0 -347
  133. {most_queue-1.51 → most_queue-1.53}/.gitignore +0 -0
  134. {most_queue-1.51 → most_queue-1.53}/LICENSE +0 -0
  135. {most_queue-1.51 → most_queue-1.53}/assets/queue_long.png +0 -0
  136. {most_queue-1.51 → most_queue-1.53}/deploy.txt +0 -0
  137. {most_queue-1.51 → most_queue-1.53}/most_queue/__init__.py +0 -0
  138. {most_queue-1.51/most_queue/general_utils → most_queue-1.53/most_queue/general}/__init__.py +0 -0
  139. {most_queue-1.51 → most_queue-1.53}/most_queue/misc/test_weibull.py +0 -0
  140. {most_queue-1.51 → most_queue-1.53}/most_queue/sim/__init__.py +0 -0
  141. {most_queue-1.51/most_queue/sim/utils → most_queue-1.53/most_queue/sim/networks}/__init__.py +0 -0
  142. {most_queue-1.51/most_queue/theory → most_queue-1.53/most_queue/sim}/utils/__init__.py +0 -0
  143. {most_queue-1.51 → most_queue-1.53}/most_queue/sim/utils/exceptions.py +0 -0
  144. /most_queue-1.51/tests/__init__.py → /most_queue-1.53/most_queue/sim/utils/qs.py +0 -0
  145. {most_queue-1.51 → most_queue-1.53}/most_queue/sim/utils/stats_update.py +0 -0
  146. {most_queue-1.51 → most_queue-1.53}/most_queue/sim/utils/tasks.py +0 -0
  147. {most_queue-1.51/most_queue/theory → most_queue-1.53/most_queue/theory/networks}/network_viewer.py +0 -0
  148. {most_queue-1.51 → most_queue-1.53}/most_queue/theory/r_example.gexf +0 -0
  149. {most_queue-1.51 → most_queue-1.53}/most_queue/theory/utils/binom_probs.py +0 -0
  150. {most_queue-1.51 → most_queue-1.53}/most_queue/theory/utils/diff5dots.py +0 -0
  151. {most_queue-1.51 → most_queue-1.53}/most_queue/theory/utils/student_stat.py +0 -0
  152. {most_queue-1.51 → most_queue-1.53}/requirements.txt +0 -0
  153. {most_queue-1.51 → most_queue-1.53}/tests/n_test/ro_0.700.json +0 -0
  154. {most_queue-1.51 → most_queue-1.53}/tests/ro_test/n_3.json +0 -0
@@ -0,0 +1,154 @@
1
+ Metadata-Version: 2.4
2
+ Name: most_queue
3
+ Version: 1.53
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: scipy==1.13.0
38
+ Requires-Dist: tqdm
39
+ Description-Content-Type: text/markdown
40
+
41
+ # Queueing Systems: Simulation & Numerical Methods
42
+
43
+ ![Queue](assets/queue_long.png)
44
+
45
+ A Python package for simulating and analyzing queueing systems (QS) and networks.
46
+
47
+ ![GitHub commit activity](https://img.shields.io/github/commit-activity/m/xabarov/most-queue)
48
+
49
+
50
+ ## About
51
+ This repository focuses on solving steady-state problems in queueing theory.
52
+
53
+ Key Features:
54
+ - Simulate various types of queueing systems and networks.
55
+ - Numerical methods for solving queueing theory problems.
56
+ - Analyze system performance metrics such as waiting times, soujourn times, load factor and etc.
57
+
58
+
59
+ ## Use Cases
60
+ - Modeling cloud computing infrastructure.
61
+ - Designing efficient call centers.
62
+ - Optimizing transportation systems.
63
+ - Network traffic analysis.
64
+
65
+ ## Contributing
66
+ Contributions are welcome! If you find any issues or have suggestions, please open an [issue](https://github.com/xabarov/most-queue/issues). Your pull requests are also appreciated. You can write me at [xabarov1985@gmail.com](mailto:xabarov1985@gmail.com)
67
+
68
+ ---
69
+
70
+ ## Installation
71
+ Install most-queue with pip
72
+ ```bash
73
+ pip install most-queue
74
+ ```
75
+
76
+ ---
77
+
78
+ ## Description of the Project
79
+
80
+ Most_queue consists of two main parts:
81
+ - **most_queue.theory** contains programs that implement methods for calculating queueing theory models.
82
+ - **most_queue.sim** contains simulation programs.
83
+
84
+ ## See examples in the tests folder:
85
+
86
+ ### FIFO QS
87
+ | # | Kendall Notations | Description | Example | Tutorial |
88
+ |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
89
+ | 1. | Ek/D/c | Numerical calculation of a multi-channel system Ek/D/n | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_ek_d_n.py) | |
90
+ | 2. | GI/M/1 | Solving for QS GI/M/1 | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_gi_m_1_calc.py) | |
91
+ | 3. | GI/M/c | Solving for QS GI/M/c | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_gi_m_n_calc.py) | |
92
+ | 4. | M/D/c | Solving for QS M/D/c | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_m_d_n_calc.py) | [link](https://github.com/xabarov/most-queue/blob/main/tutorials/queue_sim.ipynb) |
93
+ | 5. | M/G/1 | Solving for QS M/G/1 | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_mg1_calc.py) | |
94
+ | 6. | M/H<SUB>2</SUB>/c | Numerical calculation of QS M/H<SUB>2</SUB>/c by the Takahashi-Takami method with complex parameters when approximating the serving time by the H<SUB>2</SUB>-distribution | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_mgn_tt.py) | [link](https://github.com/xabarov/most-queue/blob/main/tutorials/mgn_takahasi_takami.ipynb) |
95
+ | 7. | M/M/c/r | Solving for QS M/M/c/r | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_qs_sim_test.py) | [link](https://github.com/xabarov/most-queue/blob/main/tutorials/queue_sim.ipynb) |
96
+
97
+
98
+ ### QS with priorities
99
+
100
+ | # | Kendall Notations | Description | Example | Tutorial |
101
+ |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
102
+ | 1. | M/Ph/c/PR | Numerical calculation of QS M/Ph/c with 2 classes and PR - priority. Based on the approximation of busy periods | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_m_ph_n_prty.py) | |
103
+ | 2. | M/M/c/PR | Numerical calculation of QS M/M/c with 2 classes, PR - priority by the Takahashi-Takami numerical method based on the approximation of the busy period by the Cox distribution | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_mmn_prty_pnz_approx.py) | |
104
+ | 3. | M/M/c/PR | Numerical calculation of QS M/M/c with 3 classes, PR - priority by the Takahashi-Takami numerical method based on the approximation of busy period by the Cox distribution | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_mmn3_pnz_cox_approx.py) | |
105
+ | 4. | M/G/1/PR | Calculating QS with preemtive priorities (single-channel). | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_qs_sim_prty.py) |[link](https://github.com/xabarov/most-queue/blob/main/tutorials/priority_queue.ipynb) |
106
+ | 5. | M/G/1/NP | Calculating QS with non-preemtive priorities (single-channel). | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_qs_sim_prty.py) |[link](https://github.com/xabarov/most-queue/blob/main/tutorials/priority_queue.ipynb) |
107
+ | 6. | M/G/c/Priority | Calculating QS with NP and PR (multi-channel) by method of relation | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_qs_sim_prty.py) |[link](https://github.com/xabarov/most-queue/blob/main/tutorials/priority_queue.ipynb) |
108
+
109
+
110
+ ### Fork-Join QS
111
+
112
+ | # | Kendall Notations | Description | Example | Tutorial |
113
+ |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
114
+ | 1. | M/M/c/Fork-Join | Solving for Fork-Join queueing system | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_fj_im.py) | |
115
+ | 1. | M/G/c/Split-Join | Solving for Split-Join queueing system | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_fj_im.py) | |
116
+
117
+
118
+ ### QS with Batch Arrival
119
+ | # | Kendall Notations | Description | Example | Tutorial |
120
+ |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
121
+ | 1. | M<sup>x</sup>/M/1 | Solving for the of M<sup>x</sup>/M/1 QS with batch arrival | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_batch.py) | |
122
+
123
+ ### QS with Vacations
124
+ | # | Kendall Notations | Description | Example | Tutorial |
125
+ |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
126
+ | 1. | M/H<SUB>2</SUB>/c | Numerical calculation of the M/H<SUB>2</SUB>/c system with H<SUB>2</SUB>-warming using the Takahasi-Takagi method. | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_m_h2_h2warm.py) | [link](https://github.com/xabarov/most-queue/blob/main/tutorials/m_h2_h2warm.ipynb)| |
127
+ | 2. | M/G/1 | Solving for QS M/G/1 with warm-up | | |
128
+ | 3. | M/Ph/c | Multichannel queuing system with H<SUB>2</SUB>-serving time, H<SUB>2</SUB>-warm-up, H<SUB>2</SUB>-cold delay and H<SUB>2</SUB>-cold (vacations). The system uses complex parameters, which allows you to calculate systems with arbitrary serving, warm-up, cold-delay and cold variation coefficients | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_mgn_with_h2_delay_cold_warm.py) | |
129
+ | 4. | M/M/c | Multichannel queuing system with exp serving time, H<SUB>2</SUB>-warm-up and H<SUB>2</SUB>-cold (vacations). The system uses complex parameters, which allows to calculate systems with arbitrary warm-up and cold variation coefficients | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_mmn_h2cold_h2warm.py) | |
130
+
131
+ ### QS with Impatience
132
+ | # | Kendall Notations | Description | Example | Tutorial |
133
+ |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
134
+ | 1. | M/M/1/D | Solving for M/M/1 with exponential impatience | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_impatience.py) | |
135
+
136
+ ### Closed QS (with finite number of sources)
137
+ | # | Kendall Notations | Description | Example | Tutorial |
138
+ |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
139
+ | 1. | M/M/1/N | Solving for the Engset model for M/M/1 with a finite number of sources. | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_engset.py) | |
140
+
141
+ ### Queuing Networks
142
+
143
+ | # | Kendall Notations | Description | Example | Tutorial |
144
+ |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
145
+ | 1. | General Network | Numerical calculation of queuing network with priorities in nodes | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_network_im_prty.py) | |
146
+
147
+
148
+ ### Usage
149
+ - Look [here](https://github.com/xabarov/most-queue/tree/main/tests) for examples
150
+ - Look [here](https://github.com/xabarov/most-queue/tree/main/tutorials) for jupyter tutorials
151
+
152
+
153
+
154
+
@@ -0,0 +1,114 @@
1
+ # Queueing Systems: Simulation & Numerical Methods
2
+
3
+ ![Queue](assets/queue_long.png)
4
+
5
+ A Python package for simulating and analyzing queueing systems (QS) and networks.
6
+
7
+ ![GitHub commit activity](https://img.shields.io/github/commit-activity/m/xabarov/most-queue)
8
+
9
+
10
+ ## About
11
+ This repository focuses on solving steady-state problems in queueing theory.
12
+
13
+ Key Features:
14
+ - Simulate various types of queueing systems and networks.
15
+ - Numerical methods for solving queueing theory problems.
16
+ - Analyze system performance metrics such as waiting times, soujourn times, load factor and etc.
17
+
18
+
19
+ ## Use Cases
20
+ - Modeling cloud computing infrastructure.
21
+ - Designing efficient call centers.
22
+ - Optimizing transportation systems.
23
+ - Network traffic analysis.
24
+
25
+ ## Contributing
26
+ Contributions are welcome! If you find any issues or have suggestions, please open an [issue](https://github.com/xabarov/most-queue/issues). Your pull requests are also appreciated. You can write me at [xabarov1985@gmail.com](mailto:xabarov1985@gmail.com)
27
+
28
+ ---
29
+
30
+ ## Installation
31
+ Install most-queue with pip
32
+ ```bash
33
+ pip install most-queue
34
+ ```
35
+
36
+ ---
37
+
38
+ ## Description of the Project
39
+
40
+ Most_queue consists of two main parts:
41
+ - **most_queue.theory** contains programs that implement methods for calculating queueing theory models.
42
+ - **most_queue.sim** contains simulation programs.
43
+
44
+ ## See examples in the tests folder:
45
+
46
+ ### FIFO QS
47
+ | # | Kendall Notations | Description | Example | Tutorial |
48
+ |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
49
+ | 1. | Ek/D/c | Numerical calculation of a multi-channel system Ek/D/n | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_ek_d_n.py) | |
50
+ | 2. | GI/M/1 | Solving for QS GI/M/1 | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_gi_m_1_calc.py) | |
51
+ | 3. | GI/M/c | Solving for QS GI/M/c | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_gi_m_n_calc.py) | |
52
+ | 4. | M/D/c | Solving for QS M/D/c | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_m_d_n_calc.py) | [link](https://github.com/xabarov/most-queue/blob/main/tutorials/queue_sim.ipynb) |
53
+ | 5. | M/G/1 | Solving for QS M/G/1 | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_mg1_calc.py) | |
54
+ | 6. | M/H<SUB>2</SUB>/c | Numerical calculation of QS M/H<SUB>2</SUB>/c by the Takahashi-Takami method with complex parameters when approximating the serving time by the H<SUB>2</SUB>-distribution | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_mgn_tt.py) | [link](https://github.com/xabarov/most-queue/blob/main/tutorials/mgn_takahasi_takami.ipynb) |
55
+ | 7. | M/M/c/r | Solving for QS M/M/c/r | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_qs_sim_test.py) | [link](https://github.com/xabarov/most-queue/blob/main/tutorials/queue_sim.ipynb) |
56
+
57
+
58
+ ### QS with priorities
59
+
60
+ | # | Kendall Notations | Description | Example | Tutorial |
61
+ |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
62
+ | 1. | M/Ph/c/PR | Numerical calculation of QS M/Ph/c with 2 classes and PR - priority. Based on the approximation of busy periods | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_m_ph_n_prty.py) | |
63
+ | 2. | M/M/c/PR | Numerical calculation of QS M/M/c with 2 classes, PR - priority by the Takahashi-Takami numerical method based on the approximation of the busy period by the Cox distribution | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_mmn_prty_pnz_approx.py) | |
64
+ | 3. | M/M/c/PR | Numerical calculation of QS M/M/c with 3 classes, PR - priority by the Takahashi-Takami numerical method based on the approximation of busy period by the Cox distribution | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_mmn3_pnz_cox_approx.py) | |
65
+ | 4. | M/G/1/PR | Calculating QS with preemtive priorities (single-channel). | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_qs_sim_prty.py) |[link](https://github.com/xabarov/most-queue/blob/main/tutorials/priority_queue.ipynb) |
66
+ | 5. | M/G/1/NP | Calculating QS with non-preemtive priorities (single-channel). | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_qs_sim_prty.py) |[link](https://github.com/xabarov/most-queue/blob/main/tutorials/priority_queue.ipynb) |
67
+ | 6. | M/G/c/Priority | Calculating QS with NP and PR (multi-channel) by method of relation | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_qs_sim_prty.py) |[link](https://github.com/xabarov/most-queue/blob/main/tutorials/priority_queue.ipynb) |
68
+
69
+
70
+ ### Fork-Join QS
71
+
72
+ | # | Kendall Notations | Description | Example | Tutorial |
73
+ |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
74
+ | 1. | M/M/c/Fork-Join | Solving for Fork-Join queueing system | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_fj_im.py) | |
75
+ | 1. | M/G/c/Split-Join | Solving for Split-Join queueing system | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_fj_im.py) | |
76
+
77
+
78
+ ### QS with Batch Arrival
79
+ | # | Kendall Notations | Description | Example | Tutorial |
80
+ |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
81
+ | 1. | M<sup>x</sup>/M/1 | Solving for the of M<sup>x</sup>/M/1 QS with batch arrival | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_batch.py) | |
82
+
83
+ ### QS with Vacations
84
+ | # | Kendall Notations | Description | Example | Tutorial |
85
+ |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
86
+ | 1. | M/H<SUB>2</SUB>/c | Numerical calculation of the M/H<SUB>2</SUB>/c system with H<SUB>2</SUB>-warming using the Takahasi-Takagi method. | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_m_h2_h2warm.py) | [link](https://github.com/xabarov/most-queue/blob/main/tutorials/m_h2_h2warm.ipynb)| |
87
+ | 2. | M/G/1 | Solving for QS M/G/1 with warm-up | | |
88
+ | 3. | M/Ph/c | Multichannel queuing system with H<SUB>2</SUB>-serving time, H<SUB>2</SUB>-warm-up, H<SUB>2</SUB>-cold delay and H<SUB>2</SUB>-cold (vacations). The system uses complex parameters, which allows you to calculate systems with arbitrary serving, warm-up, cold-delay and cold variation coefficients | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_mgn_with_h2_delay_cold_warm.py) | |
89
+ | 4. | M/M/c | Multichannel queuing system with exp serving time, H<SUB>2</SUB>-warm-up and H<SUB>2</SUB>-cold (vacations). The system uses complex parameters, which allows to calculate systems with arbitrary warm-up and cold variation coefficients | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_mmn_h2cold_h2warm.py) | |
90
+
91
+ ### QS with Impatience
92
+ | # | Kendall Notations | Description | Example | Tutorial |
93
+ |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
94
+ | 1. | M/M/1/D | Solving for M/M/1 with exponential impatience | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_impatience.py) | |
95
+
96
+ ### Closed QS (with finite number of sources)
97
+ | # | Kendall Notations | Description | Example | Tutorial |
98
+ |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
99
+ | 1. | M/M/1/N | Solving for the Engset model for M/M/1 with a finite number of sources. | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_engset.py) | |
100
+
101
+ ### Queuing Networks
102
+
103
+ | # | Kendall Notations | Description | Example | Tutorial |
104
+ |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
105
+ | 1. | General Network | Numerical calculation of queuing network with priorities in nodes | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_network_im_prty.py) | |
106
+
107
+
108
+ ### Usage
109
+ - Look [here](https://github.com/xabarov/most-queue/tree/main/tests) for examples
110
+ - Look [here](https://github.com/xabarov/most-queue/tree/main/tutorials) for jupyter tutorials
111
+
112
+
113
+
114
+
@@ -0,0 +1,20 @@
1
+ # Minimal makefile for Sphinx documentation
2
+ #
3
+
4
+ # You can set these variables from the command line, and also
5
+ # from the environment for the first two.
6
+ SPHINXOPTS ?=
7
+ SPHINXBUILD ?= sphinx-build
8
+ SOURCEDIR = source
9
+ BUILDDIR = build
10
+
11
+ # Put it first so that "make" without argument is like "make help".
12
+ help:
13
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
14
+
15
+ .PHONY: help Makefile
16
+
17
+ # Catch-all target: route all unknown targets to Sphinx using the new
18
+ # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
19
+ %: Makefile
20
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
@@ -0,0 +1,35 @@
1
+ @ECHO OFF
2
+
3
+ pushd %~dp0
4
+
5
+ REM Command file for Sphinx documentation
6
+
7
+ if "%SPHINXBUILD%" == "" (
8
+ set SPHINXBUILD=sphinx-build
9
+ )
10
+ set SOURCEDIR=source
11
+ set BUILDDIR=build
12
+
13
+ %SPHINXBUILD% >NUL 2>NUL
14
+ if errorlevel 9009 (
15
+ echo.
16
+ echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
17
+ echo.installed, then set the SPHINXBUILD environment variable to point
18
+ echo.to the full path of the 'sphinx-build' executable. Alternatively you
19
+ echo.may add the Sphinx directory to PATH.
20
+ echo.
21
+ echo.If you don't have Sphinx installed, grab it from
22
+ echo.https://www.sphinx-doc.org/
23
+ exit /b 1
24
+ )
25
+
26
+ if "%1" == "" goto help
27
+
28
+ %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
29
+ goto end
30
+
31
+ :help
32
+ %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
33
+
34
+ :end
35
+ popd
@@ -0,0 +1,35 @@
1
+ # Configuration file for the Sphinx documentation builder.
2
+ #
3
+ # For the full list of built-in configuration values, see the documentation:
4
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html
5
+
6
+ import os
7
+
8
+ # -- Project information -----------------------------------------------------
9
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
10
+ import sys
11
+
12
+ project = 'most-queue'
13
+ copyright = '2025, xabarov'
14
+ author = 'xabarov'
15
+ release = '1.51'
16
+
17
+ # -- General configuration ---------------------------------------------------
18
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
19
+ sys.path.insert(0, os.path.abspath('../most_queue'))
20
+
21
+ extensions = ['sphinx.ext.autodoc',
22
+ 'sphinx.ext.napoleon',
23
+ 'autodocsumm',
24
+ 'sphinx.ext.coverage']
25
+
26
+ auto_doc_default_options = {'autosummary': True}
27
+ templates_path = ['_templates']
28
+ exclude_patterns = []
29
+
30
+
31
+ # -- Options for HTML output -------------------------------------------------
32
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
33
+
34
+ html_theme = 'sphinx_book_theme'
35
+ html_static_path = ['_static']
@@ -0,0 +1,19 @@
1
+ .. most-queue documentation master file, created by
2
+ sphinx-quickstart on Mon Apr 21 20:24:55 2025.
3
+ You can adapt this file completely to your liking, but it should at least
4
+ contain the root `toctree` directive.
5
+
6
+ Most Queue Documentation
7
+ ========================
8
+
9
+ Add your content using ``reStructuredText`` syntax. See the
10
+ `reStructuredText <https://www.sphinx-doc.org/en/master/usage/restructuredtext/index.html>`_
11
+ documentation for details.
12
+
13
+
14
+ .. toctree::
15
+ :maxdepth: 10
16
+ :caption: Contents:
17
+
18
+ modules
19
+
@@ -0,0 +1,7 @@
1
+ most_queue
2
+ ==========
3
+
4
+ .. toctree::
5
+ :maxdepth: 4
6
+
7
+ most_queue
@@ -0,0 +1,30 @@
1
+ most\_queue package
2
+ ===================
3
+
4
+ Subpackages
5
+ -----------
6
+
7
+ .. toctree::
8
+ :maxdepth: 4
9
+
10
+ most_queue.sim
11
+ most_queue.theory
12
+
13
+ Submodules
14
+ ----------
15
+
16
+ most\_queue.rand\_distribution module
17
+ -------------------------------------
18
+
19
+ .. automodule:: most_queue.rand_distribution
20
+ :members:
21
+ :show-inheritance:
22
+ :undoc-members:
23
+
24
+ Module contents
25
+ ---------------
26
+
27
+ .. automodule:: most_queue
28
+ :members:
29
+ :show-inheritance:
30
+ :undoc-members:
@@ -0,0 +1,71 @@
1
+ most\_queue.sim package
2
+ =======================
3
+
4
+
5
+ Submodules
6
+ ----------
7
+
8
+ most\_queue.sim.batch\_sim module
9
+ ---------------------------------
10
+
11
+ .. automodule:: most_queue.sim.batch_sim
12
+ :members:
13
+ :show-inheritance:
14
+ :undoc-members:
15
+
16
+ most\_queue.sim.fj\_sim module
17
+ ------------------------------
18
+
19
+ .. automodule:: most_queue.sim.fj_sim
20
+ :members:
21
+ :show-inheritance:
22
+ :undoc-members:
23
+
24
+
25
+ most\_queue.sim.impatient\_queue\_sim module
26
+ --------------------------------------------
27
+
28
+ .. automodule:: most_queue.sim.impatient_queue_sim
29
+ :members:
30
+ :show-inheritance:
31
+ :undoc-members:
32
+
33
+ most\_queue.sim.priority\_network module
34
+ ----------------------------------------
35
+
36
+ .. automodule:: most_queue.sim.priority_network
37
+ :members:
38
+ :show-inheritance:
39
+ :undoc-members:
40
+
41
+ most\_queue.sim.priority\_queue\_sim module
42
+ -------------------------------------------
43
+
44
+ .. automodule:: most_queue.sim.priority_queue_sim
45
+ :members:
46
+ :show-inheritance:
47
+ :undoc-members:
48
+
49
+ most\_queue.sim.qs\_sim module
50
+ ------------------------------
51
+
52
+ .. automodule:: most_queue.sim.qs_sim
53
+ :members:
54
+ :show-inheritance:
55
+ :undoc-members:
56
+
57
+ most\_queue.sim.queue\_finite\_source\_sim module
58
+ -------------------------------------------------
59
+
60
+ .. automodule:: most_queue.sim.queue_finite_source_sim
61
+ :members:
62
+ :show-inheritance:
63
+ :undoc-members:
64
+
65
+ Module contents
66
+ ---------------
67
+
68
+ .. automodule:: most_queue.sim
69
+ :members:
70
+ :show-inheritance:
71
+ :undoc-members: