most-queue 1.56__tar.gz → 1.57__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 (176) hide show
  1. {most_queue-1.56 → most_queue-1.57}/PKG-INFO +53 -49
  2. {most_queue-1.56 → most_queue-1.57}/README.md +52 -48
  3. {most_queue-1.56 → most_queue-1.57}/most_queue/general/plots.py +5 -1
  4. most_queue-1.57/most_queue/general/tables.py +322 -0
  5. {most_queue-1.56/most_queue/sim → most_queue-1.57/most_queue/misc}/__init__.py +0 -0
  6. {most_queue-1.56 → most_queue-1.57}/most_queue/misc/calc_v_pls.py +12 -14
  7. {most_queue-1.56 → most_queue-1.57}/most_queue/misc/compare_fj_calc.py +6 -7
  8. {most_queue-1.56/most_queue/general → most_queue-1.57/most_queue/misc}/vacations_paper_utils.py +40 -34
  9. {most_queue-1.56 → most_queue-1.57}/most_queue/rand_distribution.py +5 -7
  10. {most_queue-1.56/most_queue/sim/networks → most_queue-1.57/most_queue/sim}/__init__.py +0 -0
  11. {most_queue-1.56/most_queue/sim/queueing_systems → most_queue-1.57/most_queue/sim}/base.py +31 -28
  12. {most_queue-1.56/most_queue/sim/queueing_systems → most_queue-1.57/most_queue/sim}/batch.py +2 -3
  13. {most_queue-1.56/most_queue/sim/queueing_systems → most_queue-1.57/most_queue/sim}/finite_source.py +30 -39
  14. {most_queue-1.56/most_queue/sim/queueing_systems → most_queue-1.57/most_queue/sim}/fork_join.py +19 -17
  15. {most_queue-1.56/most_queue/sim/queueing_systems → most_queue-1.57/most_queue/sim}/fork_join_delta.py +15 -12
  16. {most_queue-1.56/most_queue/sim/queueing_systems → most_queue-1.57/most_queue/sim}/impatient.py +21 -12
  17. {most_queue-1.56/most_queue/sim/queueing_systems → most_queue-1.57/most_queue/sim}/negative.py +48 -43
  18. {most_queue-1.56 → most_queue-1.57}/most_queue/sim/networks/priority_network.py +16 -11
  19. {most_queue-1.56/most_queue/sim/queueing_systems → most_queue-1.57/most_queue/sim}/priority.py +6 -7
  20. {most_queue-1.56 → most_queue-1.57}/most_queue/sim/utils/distribution_utils.py +20 -20
  21. {most_queue-1.56 → most_queue-1.57}/most_queue/sim/utils/servers.py +7 -7
  22. {most_queue-1.56 → most_queue-1.57}/most_queue/sim/utils/tasks.py +34 -6
  23. {most_queue-1.56/most_queue/sim/queueing_systems → most_queue-1.57/most_queue/sim}/vacations.py +33 -34
  24. {most_queue-1.56/most_queue/theory/queueing_systems → most_queue-1.57/most_queue/theory}/batch/mm1.py +2 -2
  25. {most_queue-1.56/most_queue/theory/queueing_systems → most_queue-1.57/most_queue/theory/closed}/__init__.py +0 -0
  26. {most_queue-1.56/most_queue/theory/queueing_systems → most_queue-1.57/most_queue/theory}/closed/engset.py +10 -11
  27. {most_queue-1.56/most_queue/theory/queueing_systems → most_queue-1.57/most_queue/theory}/fifo/gi_m_1.py +4 -4
  28. {most_queue-1.56/most_queue/theory/queueing_systems → most_queue-1.57/most_queue/theory}/fifo/gi_m_n.py +2 -2
  29. {most_queue-1.56/most_queue/theory/queueing_systems → most_queue-1.57/most_queue/theory}/fifo/mg1.py +5 -5
  30. {most_queue-1.56/most_queue/theory/queueing_systems → most_queue-1.57/most_queue/theory}/fifo/mmnr.py +2 -2
  31. {most_queue-1.56/most_queue/theory/queueing_systems → most_queue-1.57/most_queue/theory}/fork_join/m_m_n.py +12 -12
  32. {most_queue-1.56/most_queue/theory/queueing_systems → most_queue-1.57/most_queue/theory}/fork_join/split_join.py +85 -66
  33. {most_queue-1.56/most_queue/theory/queueing_systems → most_queue-1.57/most_queue/theory}/impatience/mm1.py +3 -3
  34. most_queue-1.57/most_queue/theory/negative/mg1_disasters.py +78 -0
  35. most_queue-1.57/most_queue/theory/negative/mg1_rcs.py +84 -0
  36. {most_queue-1.56/most_queue/theory/queueing_systems → most_queue-1.57/most_queue/theory}/negative/mgn_disaster.py +7 -9
  37. {most_queue-1.56/most_queue/theory/queueing_systems → most_queue-1.57/most_queue/theory}/negative/mgn_rcs.py +14 -83
  38. {most_queue-1.56/most_queue/theory/queueing_systems → most_queue-1.57/most_queue/theory}/negative/structs.py +4 -5
  39. {most_queue-1.56 → most_queue-1.57}/most_queue/theory/networks/open_network.py +7 -5
  40. {most_queue-1.56/most_queue/theory/queueing_systems → most_queue-1.57/most_queue/theory}/priority/mgn_invar_approx.py +10 -10
  41. {most_queue-1.56/most_queue/theory/queueing_systems → most_queue-1.57/most_queue/theory}/priority/non_preemptive/mg1.py +7 -6
  42. {most_queue-1.56/most_queue/theory/queueing_systems → most_queue-1.57/most_queue/theory}/priority/preemptive/m_ph_n_busy_approx.py +1 -1
  43. {most_queue-1.56/most_queue/theory/queueing_systems → most_queue-1.57/most_queue/theory}/priority/preemptive/mg1.py +4 -4
  44. {most_queue-1.56/most_queue/theory/queueing_systems → most_queue-1.57/most_queue/theory}/priority/preemptive/mmn_2cls_pr_busy_approx.py +5 -89
  45. most_queue-1.57/most_queue/theory/utils/busy_periods.py +150 -0
  46. {most_queue-1.56/most_queue/general → most_queue-1.57/most_queue/theory/utils}/conditional.py +18 -0
  47. {most_queue-1.56/most_queue/general → most_queue-1.57/most_queue/theory/utils}/conv.py +6 -1
  48. most_queue-1.57/most_queue/theory/utils/q_poisson_arrival_calc.py +69 -0
  49. most_queue-1.57/most_queue/theory/utils/transforms.py +27 -0
  50. {most_queue-1.56/most_queue/theory/queueing_systems → most_queue-1.57/most_queue/theory}/vacations/m_h2_h2warm.py +2 -4
  51. most_queue-1.57/most_queue/theory/vacations/mg1_warm_calc.py +68 -0
  52. {most_queue-1.56/most_queue/theory/queueing_systems → most_queue-1.57/most_queue/theory}/vacations/mgn_with_h2_delay_cold_warm.py +3 -2
  53. {most_queue-1.56/most_queue/theory/queueing_systems → most_queue-1.57/most_queue/theory}/vacations/mmn_with_h2_cold_and_h2_warmup.py +46 -61
  54. {most_queue-1.56 → most_queue-1.57}/pyproject.toml +1 -1
  55. {most_queue-1.56 → most_queue-1.57}/setup.py +1 -1
  56. most_queue-1.57/tests/test_base_qs_sim.py +75 -0
  57. {most_queue-1.56 → most_queue-1.57}/tests/test_batch.py +21 -14
  58. {most_queue-1.56 → most_queue-1.57}/tests/test_ek_d_n.py +29 -28
  59. most_queue-1.57/tests/test_engset.py +70 -0
  60. most_queue-1.57/tests/test_fj_delta.py +66 -0
  61. most_queue-1.57/tests/test_fj_im.py +163 -0
  62. {most_queue-1.56 → most_queue-1.57}/tests/test_gi_m_1_calc.py +33 -28
  63. {most_queue-1.56 → most_queue-1.57}/tests/test_gi_m_n_calc.py +35 -34
  64. most_queue-1.57/tests/test_impatience.py +47 -0
  65. {most_queue-1.56 → most_queue-1.57}/tests/test_m_d_n_calc.py +15 -14
  66. most_queue-1.57/tests/test_m_h2_h2warm.py +85 -0
  67. most_queue-1.57/tests/test_m_ph_n_prty.py +140 -0
  68. most_queue-1.57/tests/test_mg1_calc.py +104 -0
  69. most_queue-1.57/tests/test_mg1_disaster.py +74 -0
  70. most_queue-1.57/tests/test_mg1_rcs.py +71 -0
  71. most_queue-1.57/tests/test_mg1_warmup.py +74 -0
  72. most_queue-1.57/tests/test_mgn_disaster.py +72 -0
  73. {most_queue-1.56 → most_queue-1.57}/tests/test_mgn_rcs.py +24 -24
  74. {most_queue-1.56 → most_queue-1.57}/tests/test_mgn_tt.py +21 -19
  75. {most_queue-1.56 → most_queue-1.57}/tests/test_mgn_with_h2_delay_cold_warm.py +30 -17
  76. most_queue-1.57/tests/test_mmn3_pnz_cox_approx.py +104 -0
  77. most_queue-1.57/tests/test_mmn_h2cold_h2warm.py +110 -0
  78. most_queue-1.57/tests/test_mmn_prty_pnz_approx.py +84 -0
  79. most_queue-1.57/tests/test_network_im_prty.py +139 -0
  80. most_queue-1.57/tests/test_qs_sim.py +75 -0
  81. {most_queue-1.56 → most_queue-1.57}/tests/test_qs_sim_prty.py +35 -34
  82. most_queue-1.57/tests/units/h2_params_cv_greater_than_exp.png +0 -0
  83. most_queue-1.57/tests/units/h2_params_cv_less_than_exp.png +0 -0
  84. most_queue-1.57/tests/units/test_busy_moments_calc.py +42 -0
  85. {most_queue-1.56/tests → most_queue-1.57/tests/units}/test_conditionals.py +47 -6
  86. most_queue-1.57/tests/units/test_h2_params_cv.py +102 -0
  87. most_queue-1.57/tests/units/test_queue_types.py +62 -0
  88. most_queue-1.57/tutorials/m_h2_h2warm.ipynb +338 -0
  89. most_queue-1.57/tutorials/mgn_takahasi_takami.ipynb +302 -0
  90. most_queue-1.57/tutorials/network_with_priorities.ipynb +371 -0
  91. {most_queue-1.56 → most_queue-1.57}/tutorials/priority_queue.ipynb +16 -16
  92. most_queue-1.57/tutorials/queue_sim.ipynb +378 -0
  93. {most_queue-1.56 → most_queue-1.57}/works/negative_queues/work_mgn_disasters.py +10 -9
  94. {most_queue-1.56 → most_queue-1.57}/works/negative_queues/work_mgn_rcs.py +13 -12
  95. most_queue-1.56/most_queue/general/tables.py +0 -237
  96. most_queue-1.56/most_queue/sim/utils/qs.py +0 -0
  97. most_queue-1.56/most_queue/theory/queueing_systems/vacations/mg1_warm_calc.py +0 -53
  98. most_queue-1.56/most_queue/theory/utils/busy_periods.py +0 -64
  99. most_queue-1.56/most_queue/theory/utils/q_poisson_arrival_calc.py +0 -60
  100. most_queue-1.56/most_queue/theory/utils/transforms.py +0 -8
  101. most_queue-1.56/tests/n_test/ro_0.700.json +0 -1
  102. most_queue-1.56/tests/ro_test/n_3.json +0 -1
  103. most_queue-1.56/tests/test_base_qs_sim.py +0 -60
  104. most_queue-1.56/tests/test_engset.py +0 -68
  105. most_queue-1.56/tests/test_fj_delta.py +0 -90
  106. most_queue-1.56/tests/test_fj_im.py +0 -192
  107. most_queue-1.56/tests/test_impatience.py +0 -46
  108. most_queue-1.56/tests/test_m_h2_h2warm.py +0 -85
  109. most_queue-1.56/tests/test_m_ph_n_prty.py +0 -138
  110. most_queue-1.56/tests/test_mg1_calc.py +0 -97
  111. most_queue-1.56/tests/test_mgn_disaster.py +0 -76
  112. most_queue-1.56/tests/test_mmn3_pnz_cox_approx.py +0 -85
  113. most_queue-1.56/tests/test_mmn_h2cold_h2warm.py +0 -103
  114. most_queue-1.56/tests/test_mmn_prty_pnz_approx.py +0 -73
  115. most_queue-1.56/tests/test_network_im_prty.py +0 -118
  116. most_queue-1.56/tests/test_qs_sim.py +0 -64
  117. most_queue-1.56/tests/test_queue_types.py +0 -55
  118. most_queue-1.56/tests/vacations_ro_0.7.png +0 -0
  119. most_queue-1.56/tutorials/m_h2_h2warm.ipynb +0 -336
  120. most_queue-1.56/tutorials/mgn_takahasi_takami.ipynb +0 -298
  121. most_queue-1.56/tutorials/queue_sim.ipynb +0 -376
  122. most_queue-1.56/works/negative_queues/__init__.py +0 -0
  123. {most_queue-1.56 → most_queue-1.57}/.gitignore +0 -0
  124. {most_queue-1.56 → most_queue-1.57}/LICENSE +0 -0
  125. {most_queue-1.56 → most_queue-1.57}/assets/queue_long.png +0 -0
  126. {most_queue-1.56 → most_queue-1.57}/deploy.txt +0 -0
  127. {most_queue-1.56 → most_queue-1.57}/docs/Makefile +0 -0
  128. {most_queue-1.56 → most_queue-1.57}/docs/make.bat +0 -0
  129. {most_queue-1.56 → most_queue-1.57}/docs/source/conf.py +0 -0
  130. {most_queue-1.56 → most_queue-1.57}/docs/source/index.rst +0 -0
  131. {most_queue-1.56 → most_queue-1.57}/docs/source/modules.rst +0 -0
  132. {most_queue-1.56 → most_queue-1.57}/docs/source/most_queue.rst +0 -0
  133. {most_queue-1.56 → most_queue-1.57}/docs/source/most_queue.sim.rst +0 -0
  134. {most_queue-1.56 → most_queue-1.57}/docs/source/most_queue.theory.rst +0 -0
  135. {most_queue-1.56 → most_queue-1.57}/googleb31d3dccb40f969f.html +0 -0
  136. {most_queue-1.56 → most_queue-1.57}/most_queue/__init__.py +0 -0
  137. {most_queue-1.56 → most_queue-1.57}/most_queue/general/__init__.py +0 -0
  138. {most_queue-1.56 → most_queue-1.57}/most_queue/general/distribution_params.py +0 -0
  139. {most_queue-1.56 → most_queue-1.57}/most_queue/general/interfaces.py +0 -0
  140. {most_queue-1.56/most_queue/general → most_queue-1.57/most_queue/misc}/approx_cdf_make.py +0 -0
  141. {most_queue-1.56 → most_queue-1.57}/most_queue/misc/flow_sum.py +0 -0
  142. {most_queue-1.56 → most_queue-1.57}/most_queue/misc/test_weibull.py +0 -0
  143. {most_queue-1.56 → most_queue-1.57}/most_queue/sim/flow_sum.py +0 -0
  144. {most_queue-1.56/most_queue/sim/queueing_systems → most_queue-1.57/most_queue/sim/networks}/__init__.py +0 -0
  145. {most_queue-1.56 → most_queue-1.57}/most_queue/sim/utils/__init__.py +0 -0
  146. {most_queue-1.56 → most_queue-1.57}/most_queue/sim/utils/exceptions.py +0 -0
  147. {most_queue-1.56 → most_queue-1.57}/most_queue/sim/utils/phase.py +0 -0
  148. {most_queue-1.56 → most_queue-1.57}/most_queue/sim/utils/qs_queue.py +0 -0
  149. {most_queue-1.56 → most_queue-1.57}/most_queue/sim/utils/stats_update.py +0 -0
  150. {most_queue-1.56 → most_queue-1.57}/most_queue/theory/__init__.py +0 -0
  151. {most_queue-1.56/most_queue/theory/networks → most_queue-1.57/most_queue/theory/batch}/__init__.py +0 -0
  152. {most_queue-1.56/most_queue/theory/queueing_systems/batch → most_queue-1.57/most_queue/theory/fifo}/__init__.py +0 -0
  153. {most_queue-1.56/most_queue/theory/queueing_systems → most_queue-1.57/most_queue/theory}/fifo/ek_d_n.py +0 -0
  154. {most_queue-1.56/most_queue/theory/queueing_systems → most_queue-1.57/most_queue/theory}/fifo/m_d_n.py +0 -0
  155. {most_queue-1.56/most_queue/theory/queueing_systems → most_queue-1.57/most_queue/theory}/fifo/mgn_takahasi.py +0 -0
  156. {most_queue-1.56/most_queue/theory/queueing_systems/closed → most_queue-1.57/most_queue/theory/fork_join}/__init__.py +0 -0
  157. {most_queue-1.56/most_queue/theory/queueing_systems/fifo → most_queue-1.57/most_queue/theory/impatience}/__init__.py +0 -0
  158. {most_queue-1.56/most_queue/theory/queueing_systems/fork_join → most_queue-1.57/most_queue/theory/networks}/__init__.py +0 -0
  159. {most_queue-1.56 → most_queue-1.57}/most_queue/theory/networks/network_viewer.py +0 -0
  160. {most_queue-1.56/most_queue/theory/queueing_systems/impatience → most_queue-1.57/most_queue/theory/priority}/__init__.py +0 -0
  161. {most_queue-1.56/most_queue/theory/queueing_systems/priority → most_queue-1.57/most_queue/theory/priority/non_preemptive}/__init__.py +0 -0
  162. {most_queue-1.56/most_queue/theory/queueing_systems/priority/non_preemptive → most_queue-1.57/most_queue/theory/priority/preemptive}/__init__.py +0 -0
  163. {most_queue-1.56/most_queue/theory/queueing_systems → most_queue-1.57/most_queue/theory}/priority/preemptive/mmn_3cls_busy_approx.py +0 -0
  164. {most_queue-1.56 → most_queue-1.57}/most_queue/theory/r_example.gexf +0 -0
  165. {most_queue-1.56/most_queue/theory/queueing_systems/priority/preemptive → most_queue-1.57/most_queue/theory/utils}/__init__.py +0 -0
  166. {most_queue-1.56 → most_queue-1.57}/most_queue/theory/utils/binom_probs.py +0 -0
  167. {most_queue-1.56 → most_queue-1.57}/most_queue/theory/utils/diff5dots.py +0 -0
  168. {most_queue-1.56 → most_queue-1.57}/most_queue/theory/utils/flow_sum.py +0 -0
  169. {most_queue-1.56 → most_queue-1.57}/most_queue/theory/utils/passage_time.py +0 -0
  170. {most_queue-1.56 → most_queue-1.57}/most_queue/theory/utils/student_stat.py +0 -0
  171. {most_queue-1.56 → most_queue-1.57}/most_queue/theory/utils/weibull.py +0 -0
  172. {most_queue-1.56/most_queue/theory/queueing_systems → most_queue-1.57/most_queue/theory}/vacations/__init__.py +0 -0
  173. {most_queue-1.56 → most_queue-1.57}/requirements.txt +0 -0
  174. {most_queue-1.56/most_queue/theory/utils → most_queue-1.57/tests}/__init__.py +0 -0
  175. {most_queue-1.56/tests → most_queue-1.57/works}/__init__.py +0 -0
  176. {most_queue-1.56/works → most_queue-1.57/works/negative_queues}/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: most_queue
3
- Version: 1.56
3
+ Version: 1.57
4
4
  Summary: Software package for calculation and simulation of queuing systems
5
5
  Project-URL: Homepage, https://github.com/xabarov/most-queue
6
6
  Author-email: Xabarov Roman <xabarov1985@gmail.com>
@@ -38,7 +38,7 @@ Requires-Dist: scipy==1.13.0
38
38
  Requires-Dist: tqdm
39
39
  Description-Content-Type: text/markdown
40
40
 
41
- # Queueing Systems: Simulation & Numerical Methods
41
+ # Queueing Systems: Simulation & Numerical Methods 🔄
42
42
 
43
43
  ![Queue](assets/queue_long.png)
44
44
 
@@ -46,49 +46,46 @@ A Python package for simulating and analyzing queueing systems (QS) and networks
46
46
 
47
47
  ![GitHub commit activity](https://img.shields.io/github/commit-activity/m/xabarov/most-queue)
48
48
 
49
+ ---
49
50
 
50
- ## About
51
- This repository focuses on solving steady-state problems in queueing theory.
51
+ ### 🔍 Key Features
52
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.
53
+ - **Simulation**: Model various types of queueing systems and networks.
54
+ - **Numerical Methods**: Solve steady-state problems in queueing theory.
55
+ - **Performance Metrics**: Analyze waiting times, sojourn times, load factors, and more.
57
56
 
57
+ ---
58
58
 
59
- ## Use Cases
60
- - Modeling cloud computing infrastructure.
61
- - Designing efficient call centers.
62
- - Optimizing transportation systems.
63
- - Network traffic analysis.
59
+ ### 📌 Use Cases
64
60
 
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)
61
+ - **Cloud Computing**: Model infrastructure scalability and performance.
62
+ - **Call Centers**: Optimize staffing and customer wait times.
63
+ - **Transportation**: Improve traffic flow and logistics.
64
+ - **Network Traffic**: Analyze and predict data flow patterns.
67
65
 
68
66
  ---
69
67
 
70
- ## Installation
71
- - install most-queue with pip
68
+ ### 📦 Installation
72
69
  ```bash
73
70
  pip install most-queue
74
71
  ```
72
+ Or install from the repository:
75
73
 
76
- - install most-queue from repository
77
74
  ```bash
78
75
  pip install -e .
79
76
  ```
80
77
 
81
78
  ---
82
79
 
83
- ## Description of the Project
80
+ ## 📚 Project Overview
84
81
 
85
82
  Most_queue consists of two main parts:
86
83
  - **most_queue.theory** contains programs that implement methods for calculating queueing theory models.
87
84
  - **most_queue.sim** contains simulation programs.
88
85
 
89
- ## See examples in the tests folder:
86
+ ## 🧪 Example Use Cases
90
87
 
91
- ### FIFO QS
88
+ ### FIFO Queueing Systems
92
89
  | # | Kendall Notations | Description | Example | Tutorial |
93
90
  |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
94
91
  | 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) | |
@@ -100,7 +97,7 @@ Most_queue consists of two main parts:
100
97
  | 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) |
101
98
 
102
99
 
103
- ### QS with priorities
100
+ ### Queueing Systems with Priorities
104
101
 
105
102
  | # | Kendall Notations | Description | Example | Tutorial |
106
103
  |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
@@ -111,21 +108,7 @@ Most_queue consists of two main parts:
111
108
  | 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) |
112
109
  | 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) |
113
110
 
114
-
115
- ### Fork-Join QS
116
-
117
- | # | Kendall Notations | Description | Example | Tutorial |
118
- |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
119
- | 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) | |
120
- | 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) | |
121
-
122
-
123
- ### QS with Batch Arrival
124
- | # | Kendall Notations | Description | Example | Tutorial |
125
- |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
126
- | 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) | |
127
-
128
- ### QS with Vacations
111
+ ### Queueing Systems with Vacations
129
112
  | # | Kendall Notations | Description | Example | Tutorial |
130
113
  |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
131
114
  | 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)| |
@@ -133,35 +116,56 @@ Most_queue consists of two main parts:
133
116
  | 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) | |
134
117
  | 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) | |
135
118
 
136
- ### QS with Impatience
119
+ ### Queueing Systems with Negative arrivals
137
120
  | # | Kendall Notations | Description | Example | Tutorial |
138
121
  |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
139
- | 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) | |
122
+ | 1. | M/G/1 RCS | Exact calculation of sojourn time for M/G/1 with RCS (remove customer from service) negative arrivals. Service time approximates by H<SUB>2</SUB> or Gamma distribution | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_mg1_rcs.py) | |
123
+ | 2. | M/G/c RCS | Numerical calculation of M/G/c with RCS negative arrivals. Service time approximates by H<SUB>2</SUB> distribution | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_mgn_rcs.py) | |
124
+ | 3. | M/G/c disaster | Numerical calculation of M/G/c with disaster (remove all customer from service and queue by negative arrival). Service time approximates by H<SUB>2</SUB> distribution | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_mgn_disaster.py) | |
125
+
140
126
 
127
+ ### Fork-Join Queueing Systems
141
128
 
142
- ### QS with Negative arrivals
143
129
  | # | Kendall Notations | Description | Example | Tutorial |
144
130
  |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
145
- | 1. | M/G/c RCS | Numerical calculation of M/G/c with RCS (remove customer from service) negative arrivals. Service time approximates by H<SUB>2</SUB> distribution | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_mgn_rcs.py) | |
146
- | 2. | M/G/c disaster | Numerical calculation of M/G/c with disaster (remove all customer from service and queue by negative arrival). Service time approximates by H<SUB>2</SUB> distribution | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_mgn_disaster.py) | |
131
+ | 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) | |
132
+ | 2. | 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) | |
147
133
 
148
134
 
149
- ### Closed QS (with finite number of sources)
135
+ ### Others
150
136
  | # | Kendall Notations | Description | Example | Tutorial |
151
137
  |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
152
- | 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) | |
138
+ | 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) | |
139
+ | 2. | 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) | |
140
+ | 3. | 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) | |
141
+ | 4. | 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) | [link](https://github.com/xabarov/most-queue/blob/main/tutorials/network_with_priorities.ipynb) |
153
142
 
154
- ### Queuing Networks
143
+ ---
155
144
 
156
- | # | Kendall Notations | Description | Example | Tutorial |
157
- |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
158
- | 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) | |
145
+ ### 🔍 Search & Indexing Keywords
146
+ - Queueing theory
147
+ - Simulation
148
+ - Numerical methods
149
+ - Queueing networks
150
+ - Performance analysis
151
+ - Cloud computing
152
+ - Call center optimization
153
+ - Transportation systems
154
+ - Network traffic
155
+ - Python package
159
156
 
157
+ ---
160
158
 
161
- ### Usage
159
+ ### 📁 Examples & Tutorials
162
160
  - Look [here](https://github.com/xabarov/most-queue/tree/main/tests) for examples
163
161
  - Look [here](https://github.com/xabarov/most-queue/tree/main/tutorials) for jupyter tutorials
164
162
 
163
+ ---
165
164
 
165
+ ### 👥 Contributing
166
166
 
167
+ Contributions are welcome!
167
168
 
169
+ - Open an [issue](https://github.com/xabarov/most-queue/issues) for bugs or suggestions.
170
+ - Submit a pull request for feature enhancements.
171
+ - Contact me at xabarov1985@gmail.com for questions.
@@ -1,4 +1,4 @@
1
- # Queueing Systems: Simulation & Numerical Methods
1
+ # Queueing Systems: Simulation & Numerical Methods 🔄
2
2
 
3
3
  ![Queue](assets/queue_long.png)
4
4
 
@@ -6,49 +6,46 @@ A Python package for simulating and analyzing queueing systems (QS) and networks
6
6
 
7
7
  ![GitHub commit activity](https://img.shields.io/github/commit-activity/m/xabarov/most-queue)
8
8
 
9
+ ---
9
10
 
10
- ## About
11
- This repository focuses on solving steady-state problems in queueing theory.
11
+ ### 🔍 Key Features
12
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.
13
+ - **Simulation**: Model various types of queueing systems and networks.
14
+ - **Numerical Methods**: Solve steady-state problems in queueing theory.
15
+ - **Performance Metrics**: Analyze waiting times, sojourn times, load factors, and more.
17
16
 
17
+ ---
18
18
 
19
- ## Use Cases
20
- - Modeling cloud computing infrastructure.
21
- - Designing efficient call centers.
22
- - Optimizing transportation systems.
23
- - Network traffic analysis.
19
+ ### 📌 Use Cases
24
20
 
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)
21
+ - **Cloud Computing**: Model infrastructure scalability and performance.
22
+ - **Call Centers**: Optimize staffing and customer wait times.
23
+ - **Transportation**: Improve traffic flow and logistics.
24
+ - **Network Traffic**: Analyze and predict data flow patterns.
27
25
 
28
26
  ---
29
27
 
30
- ## Installation
31
- - install most-queue with pip
28
+ ### 📦 Installation
32
29
  ```bash
33
30
  pip install most-queue
34
31
  ```
32
+ Or install from the repository:
35
33
 
36
- - install most-queue from repository
37
34
  ```bash
38
35
  pip install -e .
39
36
  ```
40
37
 
41
38
  ---
42
39
 
43
- ## Description of the Project
40
+ ## 📚 Project Overview
44
41
 
45
42
  Most_queue consists of two main parts:
46
43
  - **most_queue.theory** contains programs that implement methods for calculating queueing theory models.
47
44
  - **most_queue.sim** contains simulation programs.
48
45
 
49
- ## See examples in the tests folder:
46
+ ## 🧪 Example Use Cases
50
47
 
51
- ### FIFO QS
48
+ ### FIFO Queueing Systems
52
49
  | # | Kendall Notations | Description | Example | Tutorial |
53
50
  |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
54
51
  | 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) | |
@@ -60,7 +57,7 @@ Most_queue consists of two main parts:
60
57
  | 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) |
61
58
 
62
59
 
63
- ### QS with priorities
60
+ ### Queueing Systems with Priorities
64
61
 
65
62
  | # | Kendall Notations | Description | Example | Tutorial |
66
63
  |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
@@ -71,21 +68,7 @@ Most_queue consists of two main parts:
71
68
  | 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) |
72
69
  | 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) |
73
70
 
74
-
75
- ### Fork-Join QS
76
-
77
- | # | Kendall Notations | Description | Example | Tutorial |
78
- |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
79
- | 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) | |
80
- | 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) | |
81
-
82
-
83
- ### QS with Batch Arrival
84
- | # | Kendall Notations | Description | Example | Tutorial |
85
- |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
86
- | 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) | |
87
-
88
- ### QS with Vacations
71
+ ### Queueing Systems with Vacations
89
72
  | # | Kendall Notations | Description | Example | Tutorial |
90
73
  |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
91
74
  | 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)| |
@@ -93,35 +76,56 @@ Most_queue consists of two main parts:
93
76
  | 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) | |
94
77
  | 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) | |
95
78
 
96
- ### QS with Impatience
79
+ ### Queueing Systems with Negative arrivals
97
80
  | # | Kendall Notations | Description | Example | Tutorial |
98
81
  |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
99
- | 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) | |
82
+ | 1. | M/G/1 RCS | Exact calculation of sojourn time for M/G/1 with RCS (remove customer from service) negative arrivals. Service time approximates by H<SUB>2</SUB> or Gamma distribution | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_mg1_rcs.py) | |
83
+ | 2. | M/G/c RCS | Numerical calculation of M/G/c with RCS negative arrivals. Service time approximates by H<SUB>2</SUB> distribution | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_mgn_rcs.py) | |
84
+ | 3. | M/G/c disaster | Numerical calculation of M/G/c with disaster (remove all customer from service and queue by negative arrival). Service time approximates by H<SUB>2</SUB> distribution | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_mgn_disaster.py) | |
85
+
100
86
 
87
+ ### Fork-Join Queueing Systems
101
88
 
102
- ### QS with Negative arrivals
103
89
  | # | Kendall Notations | Description | Example | Tutorial |
104
90
  |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
105
- | 1. | M/G/c RCS | Numerical calculation of M/G/c with RCS (remove customer from service) negative arrivals. Service time approximates by H<SUB>2</SUB> distribution | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_mgn_rcs.py) | |
106
- | 2. | M/G/c disaster | Numerical calculation of M/G/c with disaster (remove all customer from service and queue by negative arrival). Service time approximates by H<SUB>2</SUB> distribution | [link](https://github.com/xabarov/most-queue/blob/main/tests/test_mgn_disaster.py) | |
91
+ | 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) | |
92
+ | 2. | 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) | |
107
93
 
108
94
 
109
- ### Closed QS (with finite number of sources)
95
+ ### Others
110
96
  | # | Kendall Notations | Description | Example | Tutorial |
111
97
  |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
112
- | 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) | |
98
+ | 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) | |
99
+ | 2. | 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) | |
100
+ | 3. | 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) | |
101
+ | 4. | 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) | [link](https://github.com/xabarov/most-queue/blob/main/tutorials/network_with_priorities.ipynb) |
113
102
 
114
- ### Queuing Networks
103
+ ---
115
104
 
116
- | # | Kendall Notations | Description | Example | Tutorial |
117
- |-----|-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|-------------------|
118
- | 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) | |
105
+ ### 🔍 Search & Indexing Keywords
106
+ - Queueing theory
107
+ - Simulation
108
+ - Numerical methods
109
+ - Queueing networks
110
+ - Performance analysis
111
+ - Cloud computing
112
+ - Call center optimization
113
+ - Transportation systems
114
+ - Network traffic
115
+ - Python package
119
116
 
117
+ ---
120
118
 
121
- ### Usage
119
+ ### 📁 Examples & Tutorials
122
120
  - Look [here](https://github.com/xabarov/most-queue/tree/main/tests) for examples
123
121
  - Look [here](https://github.com/xabarov/most-queue/tree/main/tutorials) for jupyter tutorials
124
122
 
123
+ ---
125
124
 
125
+ ### 👥 Contributing
126
126
 
127
+ Contributions are welcome!
127
128
 
129
+ - Open an [issue](https://github.com/xabarov/most-queue/issues) for bugs or suggestions.
130
+ - Submit a pull request for feature enhancements.
131
+ - Contact me at xabarov1985@gmail.com for questions.
@@ -1,7 +1,11 @@
1
+ """
2
+ Plotting utilities for simulation results.
3
+ """
1
4
  from enum import Enum
2
5
 
3
6
  import matplotlib.pyplot as plt
4
7
 
8
+
5
9
  class DependsType(Enum):
6
10
  """
7
11
  Enum to specify the type of dependency for plotting.
@@ -27,7 +31,7 @@ def plot_sim_vs_calc_moments(xs: list[float], sim_results: list[float],
27
31
  :type depends_on: DependsType
28
32
  :param is_errors: If True, plots the percentage error between simulation and calculation results.
29
33
  :type is_errors: bool
30
- :param is_waiting_time: If True, labels the y-axis as waiting time; otherwise, as soujourn time.
34
+ :param is_waiting_time: If True, labels the y-axis as waiting time; otherwise, as sojourn time.
31
35
  :type is_waiting_time: bool
32
36
  :param save_path: The path where the plot should be saved. If None, the plot will not be saved.
33
37
  :type save_path: str or NoneType