most-queue 2.4__tar.gz → 2.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {most_queue-2.4 → most_queue-2.6}/.gitignore +8 -1
- most_queue-2.6/PKG-INFO +247 -0
- most_queue-2.6/README.md +206 -0
- most_queue-2.6/docs/README.md +108 -0
- most_queue-2.6/docs/calculation.md +365 -0
- most_queue-2.6/docs/concepts.md +317 -0
- most_queue-2.6/docs/distributions.md +429 -0
- most_queue-2.6/docs/examples.md +405 -0
- most_queue-2.6/docs/getting_started.md +182 -0
- most_queue-2.6/docs/models.md +406 -0
- most_queue-2.6/docs/networks.md +373 -0
- most_queue-2.6/docs/priorities.md +330 -0
- most_queue-2.6/docs/simulation.md +380 -0
- most_queue-2.6/docs/tesaurus.md +283 -0
- most_queue-2.6/most_queue/__init__.py +18 -0
- most_queue-2.6/most_queue/constants.py +22 -0
- most_queue-2.6/most_queue/io/plots.py +101 -0
- most_queue-2.6/most_queue/io/tables.py +466 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/misc/calc_v_pls.py +3 -3
- {most_queue-2.4 → most_queue-2.6}/most_queue/misc/run_mgn_with_h2_delay_cold_warm.py +11 -11
- {most_queue-2.4 → most_queue-2.6}/most_queue/misc/tests/test_fj_delta.py +2 -2
- {most_queue-2.4 → most_queue-2.6}/most_queue/misc/vacations_paper_utils.py +3 -3
- {most_queue-2.4/most_queue/io → most_queue-2.6/most_queue/random}/__init__.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/random/distributions.py +10 -10
- {most_queue-2.4 → most_queue-2.6}/most_queue/random/utils/fit.py +12 -10
- most_queue-2.6/most_queue/sim/__init__.py +10 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/sim/base.py +141 -74
- {most_queue-2.4 → most_queue-2.6}/most_queue/sim/batch.py +18 -11
- {most_queue-2.4 → most_queue-2.6}/most_queue/sim/flow_sum.py +42 -110
- {most_queue-2.4 → most_queue-2.6}/most_queue/sim/fork_join.py +23 -3
- {most_queue-2.4 → most_queue-2.6}/most_queue/sim/impatient.py +46 -34
- {most_queue-2.4 → most_queue-2.6}/most_queue/sim/negative.py +28 -14
- {most_queue-2.4 → most_queue-2.6}/most_queue/sim/networks/base_network_sim.py +17 -9
- {most_queue-2.4 → most_queue-2.6}/most_queue/sim/priority.py +102 -57
- {most_queue-2.4/most_queue/sim → most_queue-2.6/most_queue/sim/utils}/__init__.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/sim/utils/qs_queue.py +3 -2
- most_queue-2.6/most_queue/sim/utils/stats_update.py +22 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/sim/vacations.py +26 -7
- {most_queue-2.4 → most_queue-2.6}/most_queue/structs.py +17 -10
- most_queue-2.6/most_queue/theory/__init__.py +54 -0
- most_queue-2.6/most_queue/theory/base_queue.py +193 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/batch/mm1.py +9 -7
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/calc_params.py +3 -1
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/closed/engset.py +9 -7
- most_queue-2.6/most_queue/theory/fifo/__init__.py +21 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/fifo/ek_d_n.py +11 -7
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/fifo/gi_m_1.py +212 -204
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/fifo/gi_m_n.py +22 -28
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/fifo/m_d_n.py +159 -155
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/fifo/mg1.py +145 -132
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/fifo/mgn_takahasi.py +21 -15
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/fifo/mmnr.py +172 -165
- {most_queue-2.4/most_queue/theory → most_queue-2.6/most_queue/theory/fork_join}/__init__.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/fork_join/m_m_n.py +9 -7
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/fork_join/split_join.py +135 -135
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/impatience/mm1.py +9 -7
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/negative/mg1_disasters.py +19 -14
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/negative/mg1_rcs.py +3 -3
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/negative/mgn_disaster.py +27 -20
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/negative/mgn_rcs.py +27 -24
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/networks/base_network_calc.py +17 -9
- most_queue-2.6/most_queue/theory/priority/__init__.py +13 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/priority/mgn_invar_approx.py +12 -12
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/priority/non_preemptive/mg1.py +28 -21
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/priority/preemptive/m_ph_n_busy_approx.py +8 -5
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/priority/preemptive/mg1.py +31 -31
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/priority/preemptive/mm2_3cls_busy_approx.py +8 -5
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/priority/preemptive/mmn_2cls_pr_busy_approx.py +8 -5
- most_queue-2.6/most_queue/theory/utils/__init__.py +25 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/utils/busy_periods.py +9 -9
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/utils/conditional.py +7 -5
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/utils/conv.py +5 -1
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/utils/max_dist.py +7 -7
- most_queue-2.6/most_queue/theory/utils/moments.py +42 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/utils/residual.py +1 -1
- most_queue-2.6/most_queue/theory/utils/timing.py +81 -0
- most_queue-2.6/most_queue/theory/utils/validation.py +97 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/vacations/m_h2_h2warm.py +21 -16
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/vacations/mg1_warm_calc.py +13 -11
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/vacations/mgn_with_h2_delay_cold_warm.py +15 -13
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/vacations/mmn_with_h2_cold_and_h2_warmup.py +19 -18
- {most_queue-2.4 → most_queue-2.6}/pyproject.toml +3 -3
- {most_queue-2.4 → most_queue-2.6}/tests/test_base_qs_sim.py +2 -2
- {most_queue-2.4 → most_queue-2.6}/tests/test_batch.py +2 -2
- {most_queue-2.4 → most_queue-2.6}/tests/test_ek_d_n.py +1 -1
- {most_queue-2.4 → most_queue-2.6}/tests/test_engset.py +5 -5
- {most_queue-2.4 → most_queue-2.6}/tests/test_fj_sim.py +2 -2
- {most_queue-2.4 → most_queue-2.6}/tests/test_gi_m_1_calc.py +90 -90
- {most_queue-2.4 → most_queue-2.6}/tests/test_gi_m_n_calc.py +4 -4
- {most_queue-2.4 → most_queue-2.6}/tests/test_impatience.py +2 -2
- {most_queue-2.4 → most_queue-2.6}/tests/test_m_h2_h2warm.py +3 -3
- {most_queue-2.4 → most_queue-2.6}/tests/test_m_ph_n_prty.py +1 -1
- {most_queue-2.4 → most_queue-2.6}/tests/test_mg1_calc.py +85 -85
- {most_queue-2.4 → most_queue-2.6}/tests/test_mg1_disaster.py +4 -4
- {most_queue-2.4 → most_queue-2.6}/tests/test_mg1_rcs.py +2 -3
- {most_queue-2.4 → most_queue-2.6}/tests/test_mg1_warmup.py +2 -2
- {most_queue-2.4 → most_queue-2.6}/tests/test_mgn_disaster.py +5 -5
- {most_queue-2.4 → most_queue-2.6}/tests/test_mgn_rcs.py +5 -5
- {most_queue-2.4 → most_queue-2.6}/tests/test_mgn_tt.py +4 -4
- {most_queue-2.4 → most_queue-2.6}/tests/test_mgn_with_h2_delay_cold_warm.py +3 -3
- {most_queue-2.4 → most_queue-2.6}/tests/test_mm2_3cls_prty_busy.py +5 -7
- {most_queue-2.4 → most_queue-2.6}/tests/test_mmn_h2cold_h2warm.py +2 -2
- {most_queue-2.4 → most_queue-2.6}/tests/test_mmn_prty_busy_approx.py +4 -9
- {most_queue-2.4 → most_queue-2.6}/tests/test_network_im_prty.py +4 -4
- {most_queue-2.4 → most_queue-2.6}/tests/test_network_no_prty.py +2 -2
- {most_queue-2.4 → most_queue-2.6}/tests/test_qs_sim.py +4 -4
- {most_queue-2.4 → most_queue-2.6}/tests/test_qs_sim_prty.py +6 -6
- {most_queue-2.4 → most_queue-2.6}/tests/units/test_busy_moments_calc.py +2 -2
- most_queue-2.6/tests/units/test_central_moments.py +43 -0
- {most_queue-2.4 → most_queue-2.6}/tests/units/test_conditionals.py +4 -4
- {most_queue-2.4 → most_queue-2.6}/tests/units/test_h2_params_cv.py +5 -5
- {most_queue-2.4 → most_queue-2.6}/tests/units/test_queue_types.py +1 -1
- {most_queue-2.4 → most_queue-2.6}/tests/units/test_tt_up_probs.py +1 -1
- {most_queue-2.4 → most_queue-2.6}/tutorials/m_h2_h2warm.ipynb +6 -6
- {most_queue-2.4 → most_queue-2.6}/tutorials/mgn_takahasi_takami.ipynb +6 -6
- {most_queue-2.4 → most_queue-2.6}/tutorials/network_with_priorities.ipynb +8 -8
- {most_queue-2.4 → most_queue-2.6}/tutorials/priority_queue.ipynb +9 -9
- {most_queue-2.4 → most_queue-2.6}/tutorials/queue_sim.ipynb +6 -6
- {most_queue-2.4 → most_queue-2.6}/works/negative_queues/work_mgn_negatives.py +11 -9
- {most_queue-2.4 → most_queue-2.6}/works/vacations/run_one_calc_vs_sim.py +3 -3
- most_queue-2.4/PKG-INFO +0 -204
- most_queue-2.4/README.md +0 -163
- most_queue-2.4/docs/Makefile +0 -20
- most_queue-2.4/docs/make.bat +0 -35
- most_queue-2.4/docs/source/conf.py +0 -32
- most_queue-2.4/docs/source/index.rst +0 -19
- most_queue-2.4/docs/source/modules.rst +0 -7
- most_queue-2.4/docs/source/most_queue.rst +0 -30
- most_queue-2.4/docs/source/most_queue.sim.rst +0 -71
- most_queue-2.4/docs/source/most_queue.theory.rst +0 -182
- most_queue-2.4/doctest-output/QS.gv +0 -18
- most_queue-2.4/most_queue/io/plots.py +0 -77
- most_queue-2.4/most_queue/io/tables.py +0 -347
- most_queue-2.4/most_queue/sim/utils/stats_update.py +0 -19
- most_queue-2.4/most_queue/theory/base_queue.py +0 -75
- most_queue-2.4/most_queue/theory/utils/__init__.py +0 -0
- most_queue-2.4/most_queue/theory/vacations/__init__.py +0 -0
- most_queue-2.4/setup.py +0 -31
- most_queue-2.4/tests/__init__.py +0 -0
- most_queue-2.4/works/__init__.py +0 -0
- most_queue-2.4/works/negative_queues/__init__.py +0 -0
- most_queue-2.4/works/vacations/__init__.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/.pre-commit-config.yaml +0 -0
- {most_queue-2.4 → most_queue-2.6}/LICENSE +0 -0
- {most_queue-2.4 → most_queue-2.6}/assets/3.gif +0 -0
- {most_queue-2.4 → most_queue-2.6}/deploy.txt +0 -0
- {most_queue-2.4 → most_queue-2.6}/googleb31d3dccb40f969f.html +0 -0
- {most_queue-2.4/most_queue → most_queue-2.6/most_queue/io}/__init__.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/misc/approx_cdf_make.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/misc/compare_fj_calc.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/misc/flow_sum.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/misc/tests/test_network_opt_approx.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/misc/tests/test_network_opt_plus.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/random/distributions.yaml +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/random/utils/base.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/random/utils/create.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/random/utils/load.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/random/utils/params.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/sim/finite_source.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/sim/fork_join_delta.py +0 -0
- {most_queue-2.4/most_queue/random → most_queue-2.6/most_queue/sim/networks}/__init__.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/sim/networks/network.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/sim/networks/priority_network.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/sim/utils/phase.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/sim/utils/servers.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/sim/utils/tasks.py +0 -0
- {most_queue-2.4/most_queue/sim/networks → most_queue-2.6/most_queue/theory/batch}/__init__.py +0 -0
- {most_queue-2.4/most_queue/sim/utils → most_queue-2.6/most_queue/theory/closed}/__init__.py +0 -0
- {most_queue-2.4/most_queue/theory/batch → most_queue-2.6/most_queue/theory/impatience}/__init__.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/negative/structs.py +0 -0
- {most_queue-2.4/most_queue/theory/closed → most_queue-2.6/most_queue/theory/networks}/__init__.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/networks/network_viewer.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/networks/open_network.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/networks/open_network_prty.py +0 -0
- {most_queue-2.4/most_queue/theory/fifo → most_queue-2.6/most_queue/theory/networks/opt}/__init__.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/networks/opt/transition.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/networks/opt/transition_approx.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/networks/opt/transition_plus.py +0 -0
- {most_queue-2.4/most_queue/theory/fork_join → most_queue-2.6/most_queue/theory/priority/non_preemptive}/__init__.py +0 -0
- {most_queue-2.4/most_queue/theory/impatience → most_queue-2.6/most_queue/theory/priority/preemptive}/__init__.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/r_example.gexf +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/utils/binom_probs.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/utils/diff5dots.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/utils/flow_sum.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/utils/passage_time.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/utils/q_poisson_arrival_calc.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/utils/student_stat.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/utils/transforms.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/most_queue/theory/utils/utilization_approx.py +0 -0
- {most_queue-2.4/most_queue/theory/networks → most_queue-2.6/most_queue/theory/vacations}/__init__.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/requirements.txt +0 -0
- {most_queue-2.4 → most_queue-2.6}/tests/Dockerfile +0 -0
- {most_queue-2.4/most_queue/theory/networks/opt → most_queue-2.6/tests}/__init__.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/tests/default_params.yaml +0 -0
- {most_queue-2.4 → most_queue-2.6}/tests/run.sh +0 -0
- {most_queue-2.4 → most_queue-2.6}/tests/test_m_d_n_calc.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/tests/test_network_opt.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/tests/units/test_v1_on_channels.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/tests/units/test_v1_utlization_approx.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/tests/units/test_weibull.py +0 -0
- {most_queue-2.4/most_queue/theory/priority → most_queue-2.6/works}/__init__.py +0 -0
- {most_queue-2.4/most_queue/theory/priority/non_preemptive → most_queue-2.6/works/negative_queues}/__init__.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/works/negative_queues/base_parameters.yaml +0 -0
- {most_queue-2.4/most_queue/theory/priority/preemptive → most_queue-2.6/works/vacations}/__init__.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/works/vacations/base_parameters.yaml +0 -0
- {most_queue-2.4 → most_queue-2.6}/works/vacations/channels.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/works/vacations/cooling.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/works/vacations/cooling_delay.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/works/vacations/main.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/works/vacations/service.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/works/vacations/utilization.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/works/vacations/utils.py +0 -0
- {most_queue-2.4 → most_queue-2.6}/works/vacations/warmup.py +0 -0
|
@@ -162,4 +162,11 @@ cython_debug/
|
|
|
162
162
|
|
|
163
163
|
.vscode
|
|
164
164
|
|
|
165
|
-
works/negative_queues/results/*
|
|
165
|
+
works/negative_queues/results/*
|
|
166
|
+
|
|
167
|
+
# ignore all png files in tests/units folder
|
|
168
|
+
tests/units/*.png
|
|
169
|
+
|
|
170
|
+
# ignore all files in works/vacations/results
|
|
171
|
+
works/vacations/results/*
|
|
172
|
+
|
most_queue-2.6/PKG-INFO
ADDED
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: most_queue
|
|
3
|
+
Version: 2.6
|
|
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
|
+
# Системы массового обслуживания: Симуляция и численные методы 🔄
|
|
43
|
+
|
|
44
|
+

|
|
45
|
+
|
|
46
|
+
Python-библиотека для симуляции и анализа систем массового обслуживания (СМО) и сетей очередей.
|
|
47
|
+
|
|
48
|
+

|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## 📚 Документация
|
|
53
|
+
|
|
54
|
+
**Подробная документация доступна:**
|
|
55
|
+
|
|
56
|
+
- **[📖 Полная документация (Русский)](docs/README.md)** — Полное руководство на русском языке с подробными туториалами, примерами и теорией
|
|
57
|
+
- **[🚀 Быстрый старт](docs/getting_started.md)** — Начните работу за несколько минут
|
|
58
|
+
- **[📘 Основные концепции](docs/concepts.md)** — Основы теории массового обслуживания
|
|
59
|
+
- **[🎮 Руководство по симуляции](docs/simulation.md)** — Имитационное моделирование
|
|
60
|
+
- **[🧮 Руководство по расчетам](docs/calculation.md)** — Численные методы
|
|
61
|
+
- **[📊 Каталог моделей](docs/models.md)** — Поддерживаемые модели СМО
|
|
62
|
+
- **[🌐 Сети очередей](docs/networks.md)** — Сети СМО
|
|
63
|
+
- **[⭐ Приоритетные системы](docs/priorities.md)** — Системы с приоритетами
|
|
64
|
+
- **[💡 Примеры использования](docs/examples.md)** — Практические примеры
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## 🔍 Основные возможности
|
|
69
|
+
|
|
70
|
+
- **Симуляция**: Моделирование различных типов систем массового обслуживания и сетей
|
|
71
|
+
- **Численные методы**: Решение стационарных задач теории массового обслуживания
|
|
72
|
+
- **Метрики производительности**: Анализ времени ожидания, времени пребывания, коэффициентов загрузки и многое другое
|
|
73
|
+
- **Широкая поддержка моделей**: FIFO, приоритеты, отпуска, отрицательные заявки, fork-join, сети и многое другое
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## 📦 Установка
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
pip install most-queue
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Или установка из репозитория:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
git clone https://github.com/xabarov/most-queue.git
|
|
87
|
+
cd most-queue
|
|
88
|
+
pip install -e .
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**Требования:** Python >= 3.9
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## 🚀 Быстрый старт
|
|
96
|
+
|
|
97
|
+
### Базовый пример: M/M/1 система
|
|
98
|
+
|
|
99
|
+
```python
|
|
100
|
+
from most_queue.sim.base import QsSim
|
|
101
|
+
|
|
102
|
+
# Создание симулятора
|
|
103
|
+
qs = QsSim(num_of_channels=1)
|
|
104
|
+
|
|
105
|
+
# Настройка потока поступления (пуассоновский с интенсивностью λ = 0.5)
|
|
106
|
+
qs.set_sources(0.5, "M")
|
|
107
|
+
|
|
108
|
+
# Настройка обслуживания (экспоненциальное с интенсивностью μ = 1.0)
|
|
109
|
+
qs.set_servers(1.0, "M")
|
|
110
|
+
|
|
111
|
+
# Запуск симуляции
|
|
112
|
+
results = qs.run(10000)
|
|
113
|
+
|
|
114
|
+
# Получение результатов
|
|
115
|
+
print(f"Среднее время ожидания: {results.w[0]:.4f}")
|
|
116
|
+
print(f"Среднее время пребывания: {results.v[0]:.4f}")
|
|
117
|
+
print(f"Коэффициент загрузки: {results.utilization:.4f}")
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Численный расчет
|
|
121
|
+
|
|
122
|
+
```python
|
|
123
|
+
from most_queue.theory.fifo.mmnr import MMnrCalc
|
|
124
|
+
|
|
125
|
+
# Создание калькулятора
|
|
126
|
+
calc = MMnrCalc(n=1)
|
|
127
|
+
calc.set_sources(l=0.5)
|
|
128
|
+
calc.set_servers(mu=1.0)
|
|
129
|
+
|
|
130
|
+
# Выполнение расчета
|
|
131
|
+
results = calc.run()
|
|
132
|
+
print(f"Среднее время ожидания: {results.w[0]:.4f}")
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**См. [Руководство по быстрому старту](docs/getting_started.md) для дополнительных примеров.**
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## 📚 Структура проекта
|
|
140
|
+
|
|
141
|
+
Most-Queue состоит из двух основных модулей:
|
|
142
|
+
|
|
143
|
+
- **`most_queue.sim`** — Программы симуляции систем массового обслуживания
|
|
144
|
+
- **`most_queue.theory`** — Численные методы для расчета моделей теории массового обслуживания
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## 🧪 Поддерживаемые модели
|
|
149
|
+
|
|
150
|
+
### FIFO системы
|
|
151
|
+
- **M/M/c**, **M/M/c/r** — Многоканальные системы с пуассоновским потоком
|
|
152
|
+
- **M/G/1**, **M/G/c** — Системы с произвольным распределением времени обслуживания
|
|
153
|
+
- **GI/M/1**, **GI/M/c** — Системы с общим потоком поступления
|
|
154
|
+
- **M/D/c**, **E_k/D/c** — Системы с детерминированным обслуживанием
|
|
155
|
+
- **M/H₂/c** — Метод Такахаси-Таками с гиперэкспоненциальным обслуживанием
|
|
156
|
+
|
|
157
|
+
### Системы с приоритетами
|
|
158
|
+
- **M/G/1/PR**, **M/G/1/NP** — Одноканальные с прерываемым/непрерываемым приоритетом
|
|
159
|
+
- **M/G/c/PR**, **M/G/c/NP** — Многоканальные с приоритетами
|
|
160
|
+
- **M/Ph/c/PR** — Фазовое распределение обслуживания с приоритетами
|
|
161
|
+
|
|
162
|
+
### Специализированные системы
|
|
163
|
+
- **Отпуска** — Системы с отпусками серверов и прогревом
|
|
164
|
+
- **Отрицательные заявки** — Модели RCS и disaster
|
|
165
|
+
- **Fork-Join** — Системы параллельной обработки
|
|
166
|
+
- **Пакетное поступление** — Системы M^x/M/1
|
|
167
|
+
- **Нетерпеливые заявки** — Системы с уходом клиентов
|
|
168
|
+
- **Engset** — Закрытые системы с конечным числом источников
|
|
169
|
+
- **Сети** — Открытые и закрытые сети очередей
|
|
170
|
+
|
|
171
|
+
**См. [Каталог моделей](docs/models.md) для полного списка и деталей.**
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## 📌 Области применения
|
|
176
|
+
|
|
177
|
+
- **Облачные вычисления**: Моделирование масштабируемости и производительности инфраструктуры
|
|
178
|
+
- **Call-центры**: Оптимизация штата и времени ожидания клиентов
|
|
179
|
+
- **Транспорт**: Улучшение транспортных потоков и логистики
|
|
180
|
+
- **Сетевой трафик**: Анализ и прогнозирование потоков данных
|
|
181
|
+
- **Производство**: Оптимизация производственных линий
|
|
182
|
+
- **Здравоохранение**: Планирование ресурсов больниц
|
|
183
|
+
|
|
184
|
+
**См. [Примеры использования](docs/examples.md) для практических кейсов.**
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## 📖 Most-Queue 2.0 API
|
|
189
|
+
|
|
190
|
+
Единый API для симуляции и расчета:
|
|
191
|
+
|
|
192
|
+
```python
|
|
193
|
+
# Численный расчет
|
|
194
|
+
calc = MGnCalc(n=NUM_OF_CHANNELS)
|
|
195
|
+
calc.set_sources(l=ARRIVAL_RATE)
|
|
196
|
+
calc.set_servers(b=b)
|
|
197
|
+
calc_results = calc.run()
|
|
198
|
+
|
|
199
|
+
# Симуляция
|
|
200
|
+
qs = QsSim(NUM_OF_CHANNELS)
|
|
201
|
+
qs.set_sources(ARRIVAL_RATE, "M")
|
|
202
|
+
qs.set_servers(gamma_params, "Gamma")
|
|
203
|
+
sim_results = qs.run(NUM_OF_JOBS)
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## 📁 Ресурсы
|
|
209
|
+
|
|
210
|
+
- **[Тесты](tests/)** — Примеры с сравнением теоретических и симуляционных результатов
|
|
211
|
+
- **[Туториалы](tutorials/)** — Jupyter-ноутбуки с пошаговыми руководствами
|
|
212
|
+
- **[Документация](docs/)** — Подробная документация на русском языке
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## 🔍 Ключевые слова для поиска
|
|
217
|
+
|
|
218
|
+
- Теория массового обслуживания
|
|
219
|
+
- Симуляция
|
|
220
|
+
- Численные методы
|
|
221
|
+
- Сети очередей
|
|
222
|
+
- Анализ производительности
|
|
223
|
+
- Облачные вычисления
|
|
224
|
+
- Оптимизация call-центров
|
|
225
|
+
- Транспортные системы
|
|
226
|
+
- Сетевой трафик
|
|
227
|
+
- Python-пакет
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## 👥 Участие в разработке
|
|
232
|
+
|
|
233
|
+
Мы приветствуем ваш вклад!
|
|
234
|
+
|
|
235
|
+
- Откройте [issue](https://github.com/xabarov/most-queue/issues) для сообщений об ошибках или предложений
|
|
236
|
+
- Отправьте pull request для улучшений функциональности
|
|
237
|
+
- Контакты: xabarov1985@gmail.com
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## 📄 Лицензия
|
|
242
|
+
|
|
243
|
+
См. файл [LICENSE](LICENSE) для деталей.
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
**Для подробной документации, примеров и туториалов см. [docs/README.md](docs/README.md)**
|
most_queue-2.6/README.md
ADDED
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
# Системы массового обслуживания: Симуляция и численные методы 🔄
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
Python-библиотека для симуляции и анализа систем массового обслуживания (СМО) и сетей очередей.
|
|
6
|
+
|
|
7
|
+

|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 📚 Документация
|
|
12
|
+
|
|
13
|
+
**Подробная документация доступна:**
|
|
14
|
+
|
|
15
|
+
- **[📖 Полная документация (Русский)](docs/README.md)** — Полное руководство на русском языке с подробными туториалами, примерами и теорией
|
|
16
|
+
- **[🚀 Быстрый старт](docs/getting_started.md)** — Начните работу за несколько минут
|
|
17
|
+
- **[📘 Основные концепции](docs/concepts.md)** — Основы теории массового обслуживания
|
|
18
|
+
- **[🎮 Руководство по симуляции](docs/simulation.md)** — Имитационное моделирование
|
|
19
|
+
- **[🧮 Руководство по расчетам](docs/calculation.md)** — Численные методы
|
|
20
|
+
- **[📊 Каталог моделей](docs/models.md)** — Поддерживаемые модели СМО
|
|
21
|
+
- **[🌐 Сети очередей](docs/networks.md)** — Сети СМО
|
|
22
|
+
- **[⭐ Приоритетные системы](docs/priorities.md)** — Системы с приоритетами
|
|
23
|
+
- **[💡 Примеры использования](docs/examples.md)** — Практические примеры
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 🔍 Основные возможности
|
|
28
|
+
|
|
29
|
+
- **Симуляция**: Моделирование различных типов систем массового обслуживания и сетей
|
|
30
|
+
- **Численные методы**: Решение стационарных задач теории массового обслуживания
|
|
31
|
+
- **Метрики производительности**: Анализ времени ожидания, времени пребывания, коэффициентов загрузки и многое другое
|
|
32
|
+
- **Широкая поддержка моделей**: FIFO, приоритеты, отпуска, отрицательные заявки, fork-join, сети и многое другое
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 📦 Установка
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
pip install most-queue
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Или установка из репозитория:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
git clone https://github.com/xabarov/most-queue.git
|
|
46
|
+
cd most-queue
|
|
47
|
+
pip install -e .
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Требования:** Python >= 3.9
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 🚀 Быстрый старт
|
|
55
|
+
|
|
56
|
+
### Базовый пример: M/M/1 система
|
|
57
|
+
|
|
58
|
+
```python
|
|
59
|
+
from most_queue.sim.base import QsSim
|
|
60
|
+
|
|
61
|
+
# Создание симулятора
|
|
62
|
+
qs = QsSim(num_of_channels=1)
|
|
63
|
+
|
|
64
|
+
# Настройка потока поступления (пуассоновский с интенсивностью λ = 0.5)
|
|
65
|
+
qs.set_sources(0.5, "M")
|
|
66
|
+
|
|
67
|
+
# Настройка обслуживания (экспоненциальное с интенсивностью μ = 1.0)
|
|
68
|
+
qs.set_servers(1.0, "M")
|
|
69
|
+
|
|
70
|
+
# Запуск симуляции
|
|
71
|
+
results = qs.run(10000)
|
|
72
|
+
|
|
73
|
+
# Получение результатов
|
|
74
|
+
print(f"Среднее время ожидания: {results.w[0]:.4f}")
|
|
75
|
+
print(f"Среднее время пребывания: {results.v[0]:.4f}")
|
|
76
|
+
print(f"Коэффициент загрузки: {results.utilization:.4f}")
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Численный расчет
|
|
80
|
+
|
|
81
|
+
```python
|
|
82
|
+
from most_queue.theory.fifo.mmnr import MMnrCalc
|
|
83
|
+
|
|
84
|
+
# Создание калькулятора
|
|
85
|
+
calc = MMnrCalc(n=1)
|
|
86
|
+
calc.set_sources(l=0.5)
|
|
87
|
+
calc.set_servers(mu=1.0)
|
|
88
|
+
|
|
89
|
+
# Выполнение расчета
|
|
90
|
+
results = calc.run()
|
|
91
|
+
print(f"Среднее время ожидания: {results.w[0]:.4f}")
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
**См. [Руководство по быстрому старту](docs/getting_started.md) для дополнительных примеров.**
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## 📚 Структура проекта
|
|
99
|
+
|
|
100
|
+
Most-Queue состоит из двух основных модулей:
|
|
101
|
+
|
|
102
|
+
- **`most_queue.sim`** — Программы симуляции систем массового обслуживания
|
|
103
|
+
- **`most_queue.theory`** — Численные методы для расчета моделей теории массового обслуживания
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## 🧪 Поддерживаемые модели
|
|
108
|
+
|
|
109
|
+
### FIFO системы
|
|
110
|
+
- **M/M/c**, **M/M/c/r** — Многоканальные системы с пуассоновским потоком
|
|
111
|
+
- **M/G/1**, **M/G/c** — Системы с произвольным распределением времени обслуживания
|
|
112
|
+
- **GI/M/1**, **GI/M/c** — Системы с общим потоком поступления
|
|
113
|
+
- **M/D/c**, **E_k/D/c** — Системы с детерминированным обслуживанием
|
|
114
|
+
- **M/H₂/c** — Метод Такахаси-Таками с гиперэкспоненциальным обслуживанием
|
|
115
|
+
|
|
116
|
+
### Системы с приоритетами
|
|
117
|
+
- **M/G/1/PR**, **M/G/1/NP** — Одноканальные с прерываемым/непрерываемым приоритетом
|
|
118
|
+
- **M/G/c/PR**, **M/G/c/NP** — Многоканальные с приоритетами
|
|
119
|
+
- **M/Ph/c/PR** — Фазовое распределение обслуживания с приоритетами
|
|
120
|
+
|
|
121
|
+
### Специализированные системы
|
|
122
|
+
- **Отпуска** — Системы с отпусками серверов и прогревом
|
|
123
|
+
- **Отрицательные заявки** — Модели RCS и disaster
|
|
124
|
+
- **Fork-Join** — Системы параллельной обработки
|
|
125
|
+
- **Пакетное поступление** — Системы M^x/M/1
|
|
126
|
+
- **Нетерпеливые заявки** — Системы с уходом клиентов
|
|
127
|
+
- **Engset** — Закрытые системы с конечным числом источников
|
|
128
|
+
- **Сети** — Открытые и закрытые сети очередей
|
|
129
|
+
|
|
130
|
+
**См. [Каталог моделей](docs/models.md) для полного списка и деталей.**
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## 📌 Области применения
|
|
135
|
+
|
|
136
|
+
- **Облачные вычисления**: Моделирование масштабируемости и производительности инфраструктуры
|
|
137
|
+
- **Call-центры**: Оптимизация штата и времени ожидания клиентов
|
|
138
|
+
- **Транспорт**: Улучшение транспортных потоков и логистики
|
|
139
|
+
- **Сетевой трафик**: Анализ и прогнозирование потоков данных
|
|
140
|
+
- **Производство**: Оптимизация производственных линий
|
|
141
|
+
- **Здравоохранение**: Планирование ресурсов больниц
|
|
142
|
+
|
|
143
|
+
**См. [Примеры использования](docs/examples.md) для практических кейсов.**
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## 📖 Most-Queue 2.0 API
|
|
148
|
+
|
|
149
|
+
Единый API для симуляции и расчета:
|
|
150
|
+
|
|
151
|
+
```python
|
|
152
|
+
# Численный расчет
|
|
153
|
+
calc = MGnCalc(n=NUM_OF_CHANNELS)
|
|
154
|
+
calc.set_sources(l=ARRIVAL_RATE)
|
|
155
|
+
calc.set_servers(b=b)
|
|
156
|
+
calc_results = calc.run()
|
|
157
|
+
|
|
158
|
+
# Симуляция
|
|
159
|
+
qs = QsSim(NUM_OF_CHANNELS)
|
|
160
|
+
qs.set_sources(ARRIVAL_RATE, "M")
|
|
161
|
+
qs.set_servers(gamma_params, "Gamma")
|
|
162
|
+
sim_results = qs.run(NUM_OF_JOBS)
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## 📁 Ресурсы
|
|
168
|
+
|
|
169
|
+
- **[Тесты](tests/)** — Примеры с сравнением теоретических и симуляционных результатов
|
|
170
|
+
- **[Туториалы](tutorials/)** — Jupyter-ноутбуки с пошаговыми руководствами
|
|
171
|
+
- **[Документация](docs/)** — Подробная документация на русском языке
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## 🔍 Ключевые слова для поиска
|
|
176
|
+
|
|
177
|
+
- Теория массового обслуживания
|
|
178
|
+
- Симуляция
|
|
179
|
+
- Численные методы
|
|
180
|
+
- Сети очередей
|
|
181
|
+
- Анализ производительности
|
|
182
|
+
- Облачные вычисления
|
|
183
|
+
- Оптимизация call-центров
|
|
184
|
+
- Транспортные системы
|
|
185
|
+
- Сетевой трафик
|
|
186
|
+
- Python-пакет
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## 👥 Участие в разработке
|
|
191
|
+
|
|
192
|
+
Мы приветствуем ваш вклад!
|
|
193
|
+
|
|
194
|
+
- Откройте [issue](https://github.com/xabarov/most-queue/issues) для сообщений об ошибках или предложений
|
|
195
|
+
- Отправьте pull request для улучшений функциональности
|
|
196
|
+
- Контакты: xabarov1985@gmail.com
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## 📄 Лицензия
|
|
201
|
+
|
|
202
|
+
См. файл [LICENSE](LICENSE) для деталей.
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
**Для подробной документации, примеров и туториалов см. [docs/README.md](docs/README.md)**
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# Документация библиотеки Most-Queue
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
**Most-Queue** — это Python-библиотека для симуляции и численного анализа систем массового обслуживания (СМО) и сетей очередей.
|
|
6
|
+
|
|
7
|
+
## 📚 Навигация по документации
|
|
8
|
+
|
|
9
|
+
### Начало работы
|
|
10
|
+
- **[Быстрый старт](getting_started.md)** — установка и первые примеры использования
|
|
11
|
+
- **[Основные концепции](concepts.md)** — теория массового обслуживания и терминология
|
|
12
|
+
|
|
13
|
+
### Основные разделы
|
|
14
|
+
- **[Симуляция СМО](simulation.md)** — руководство по моделированию систем массового обслуживания
|
|
15
|
+
- **[Численные методы](calculation.md)** — расчет характеристик СМО аналитическими методами
|
|
16
|
+
- **[Распределения](distributions.md)** — справочник по поддерживаемым распределениям
|
|
17
|
+
- **[Модели СМО](models.md)** — каталог поддерживаемых типов систем массового обслуживания
|
|
18
|
+
|
|
19
|
+
### Специализированные темы
|
|
20
|
+
- **[Сети очередей](networks.md)** — моделирование и расчет сетей СМО
|
|
21
|
+
- **[Приоритетные системы](priorities.md)** — системы с приоритетным обслуживанием
|
|
22
|
+
- **[Расширенные примеры](examples.md)** — практические кейсы и сложные сценарии
|
|
23
|
+
|
|
24
|
+
## 🎯 Основные возможности
|
|
25
|
+
|
|
26
|
+
### Симуляция
|
|
27
|
+
- Моделирование различных типов СМО (M/M/c, M/G/1, GI/M/c и др.)
|
|
28
|
+
- Поддержка различных распределений времени поступления и обслуживания
|
|
29
|
+
- Системы с приоритетами, отпусками, отрицательными заявками
|
|
30
|
+
- Fork-Join и Split-Join системы
|
|
31
|
+
- Сети очередей
|
|
32
|
+
|
|
33
|
+
### Численные методы
|
|
34
|
+
- Аналитический расчет стационарных характеристик
|
|
35
|
+
- Методы для различных типов СМО
|
|
36
|
+
- Высокая точность расчетов
|
|
37
|
+
- Быстрое получение результатов
|
|
38
|
+
|
|
39
|
+
### Анализ результатов
|
|
40
|
+
- Моменты времени ожидания и пребывания
|
|
41
|
+
- Вероятности состояний системы
|
|
42
|
+
- Коэффициент загрузки
|
|
43
|
+
- Визуализация и таблицы результатов
|
|
44
|
+
|
|
45
|
+
## 📦 Установка
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
pip install most-queue
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Или установка из репозитория:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
pip install -e .
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## 🔍 Быстрый пример
|
|
58
|
+
|
|
59
|
+
```python
|
|
60
|
+
from most_queue.sim.base import QsSim
|
|
61
|
+
|
|
62
|
+
# Создаем симулятор M/M/1 системы
|
|
63
|
+
qs = QsSim(num_of_channels=1)
|
|
64
|
+
|
|
65
|
+
# Настраиваем поток поступления (пуассоновский с интенсивностью 0.5)
|
|
66
|
+
qs.set_sources(0.5, "M")
|
|
67
|
+
|
|
68
|
+
# Настраиваем обслуживание (экспоненциальное с интенсивностью 1.0)
|
|
69
|
+
qs.set_servers(1.0, "M")
|
|
70
|
+
|
|
71
|
+
# Запускаем симуляцию на 10000 заявок
|
|
72
|
+
results = qs.run(10000)
|
|
73
|
+
|
|
74
|
+
# Получаем результаты
|
|
75
|
+
print(f"Среднее время ожидания: {results.w[0]:.4f}")
|
|
76
|
+
print(f"Среднее время пребывания: {results.v[0]:.4f}")
|
|
77
|
+
print(f"Коэффициент загрузки: {results.utilization:.4f}")
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## 📖 Структура библиотеки
|
|
81
|
+
|
|
82
|
+
Библиотека состоит из двух основных модулей:
|
|
83
|
+
|
|
84
|
+
- **`most_queue.sim`** — модуль симуляции СМО
|
|
85
|
+
- **`most_queue.theory`** — модуль численных методов расчета
|
|
86
|
+
|
|
87
|
+
## 🧪 Примеры и тесты
|
|
88
|
+
|
|
89
|
+
- Примеры использования находятся в папке [`tests/`](../tests/)
|
|
90
|
+
- Jupyter-туториалы доступны в папке [`tutorials/`](../tutorials/)
|
|
91
|
+
|
|
92
|
+
## 📝 Версия
|
|
93
|
+
|
|
94
|
+
Текущая версия: **2.05**
|
|
95
|
+
|
|
96
|
+
## 🔗 Полезные ссылки
|
|
97
|
+
|
|
98
|
+
- [Репозиторий на GitHub](https://github.com/xabarov/most-queue)
|
|
99
|
+
- [Issues и предложения](https://github.com/xabarov/most-queue/issues)
|
|
100
|
+
|
|
101
|
+
## 👥 Контакты
|
|
102
|
+
|
|
103
|
+
По вопросам и предложениям: xabarov1985@gmail.com
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
**Примечание**: Эта документация на русском языке. Для английской версии см. [README.md](../README.md) в корне проекта.
|
|
108
|
+
|