Skip to content

Python package for calculation and simulation of queueing systems (QS) and networks.

License

Notifications You must be signed in to change notification settings

xabarov/most-queue

Repository files navigation

Most-Queue — симуляция и численные методы для СМО и сетей очередей

PyPI version Python versions License GitHub commit activity

Queue

Most-Queue — Python-библиотека для симуляции и численного анализа систем массового обслуживания (СМО) и сетей очередей.

Most-Queue is a Python library for simulation and numerical analysis of queueing systems and queueing networks.


🔗 Быстрая навигация


📚 Документация

Подробная документация доступна:


🔍 Основные возможности

  • Симуляция: Моделирование различных типов систем массового обслуживания и сетей
  • Численные методы: Решение стационарных задач теории массового обслуживания
  • Метрики производительности: Анализ времени ожидания, времени пребывания, коэффициентов загрузки и многое другое
  • Широкая поддержка моделей: FIFO, приоритеты, отпуска/прогрев/охлаждение, отрицательные заявки, fork-join, сети и многое другое

📦 Установка

python3 -m pip install -U most-queue

Установка из репозитория (для разработки)

git clone https://github.com/xabarov/most-queue.git
cd most-queue
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install -U pip
python3 -m pip install -e .

Примечание про Graphviz

Для визуализации графов/сетей может понадобиться системный пакет graphviz (даже при установленном Python-пакете graphviz):

sudo apt-get update
sudo apt-get install -y graphviz

Требования: Python >= 3.9 (см. pyproject.toml)


📰 Новости

  • Февраль 2026 — Добавлены расчеты по методу Такахаси–Таками для FIFO-моделей H₂/M/c и H₂/H₂/c:
    • most_queue/theory/fifo/gmc_takahasi.pyH₂/M/c
    • most_queue/theory/fifo/hkhk_takahasi.pyH₂/H₂/c
    • Улучшено API: H2MnCalc.set_sources() и MGnCalc.set_servers() теперь принимают H2Params напрямую (без повторного фиттинга), а HkHkNCalc корректно работает с complex-fit для (CV<1).
  • 2025 — Для метода расчета многоканальной СМО с разогревом, охлаждением и задержкой начала охлаждения опубликована статья (реализация: most_queue/theory/vacations/mgn_with_h2_delay_cold_warm.py):
    • Лохвицкий, В. А. Численный расчет многоканальной системы массового обслуживания с разогревом, охлаждением и задержкой начала охлаждения / В. А. Лохвицкий, Р. С. Хабаров, Е. Л. Яковлев // Авиакосмическое приборостроение. – 2025. – № 1. – С. 44–57. – DOI 10.25791/aviakosmos.1.2025.1456. – EDN OVJXK

🎉 Версия 2.7

Основные изменения:

  • Метод Такахаси–Таками для FIFO H₂-моделей: расчёты для H₂/M/c (H2MnCalc) и H₂/H₂/c (HkHkNCalc)
  • Поддержка complex-fit для H₂ (CV<1) в расчётах: численные методы корректно работают с комплексными параметрами H₂-аппроксимации
  • Улучшено API для H₂-параметров: H2MnCalc.set_sources() и MGnCalc.set_servers() принимают H2Params напрямую (без повторного фиттинга)
  • Тесты валидации с таблицами:
    • tests/test_tt_vs_sim_cv105.py — TT vs симуляция при CV≈1.05 (одинаковые H2Params)
    • tests/test_tt_vs_sim_gamma_cvl1.py — CV<1: TT (H₂ complex-fit) vs Gamma‑симуляция (одинаковые mean/CV)

🚀 Быстрый старт

Базовый пример: M/M/1 система

from most_queue.sim.base import QsSim

# Создание симулятора
qs = QsSim(num_of_channels=1)

# Настройка потока поступления (пуассоновский с интенсивностью λ = 0.5)
qs.set_sources(0.5, "M")

# Настройка обслуживания (экспоненциальное с интенсивностью μ = 1.0)
qs.set_servers(1.0, "M")

# Запуск симуляции
results = qs.run(10000)

# Получение результатов
print(f"Среднее время ожидания: {results.w[0]:.4f}")
print(f"Среднее время пребывания: {results.v[0]:.4f}")
print(f"Коэффициент загрузки: {results.utilization:.4f}")

Численный расчет

from most_queue.theory.fifo.mmnr import MMnrCalc

# Создание калькулятора
calc = MMnrCalc(n=1)
calc.set_sources(l=0.5)
calc.set_servers(mu=1.0)

# Выполнение расчета
results = calc.run()
print(f"Среднее время ожидания: {results.w[0]:.4f}")

См. Руководство по быстрому старту для дополнительных примеров.


📚 Структура проекта

Most-Queue состоит из двух основных модулей:

  • most_queue.sim — Программы симуляции систем массового обслуживания
  • most_queue.theory — Численные методы для расчета моделей теории массового обслуживания

🧪 Поддерживаемые модели

FIFO системы

  • M/M/c, M/M/c/r — Многоканальные системы с пуассоновским потоком
  • M/G/1, M/G/c — Системы с произвольным распределением времени обслуживания
  • GI/M/1, GI/M/c — Системы с общим потоком поступления
  • H₂/M/c — Гиперэкспоненциальный поток поступления, метод Такахаси-Таками (§7.6.1)
  • M/D/c, E_k/D/c — Системы с детерминированным обслуживанием
  • M/H₂/c — Метод Такахаси-Таками с гиперэкспоненциальным обслуживанием
  • H₂/H₂/c — Метод Такахаси-Таками для гиперэкспоненциального потока и обслуживания

Примечание про H₂ и (CV<1): реальное H₂-распределение имеет (CV \ge 1), но для численных методов допускается complex-fit (комплексные параметры аппроксимации). Симулятор QsSim не генерирует H₂ с комплексными параметрами, поэтому сравнение “теория vs симуляция” возможно только когда параметры вещественные.

Для (CV<1) валидацию удобно делать через Gamma‑симуляцию с теми же mean/CV (см. tests/test_tt_vs_sim_gamma_cvl1.py).

Системы с приоритетами

  • M/G/1/PR, M/G/1/NP — Одноканальные с прерываемым/непрерываемым приоритетом
  • M/G/c/PR, M/G/c/NP — Многоканальные с приоритетами
  • M/Ph/c/PR — Фазовое распределение обслуживания с приоритетами

Специализированные системы

  • Прогулки — Системы с прогулками серверов и прогревом
  • Отрицательные заявки — Модели RCS и disaster
  • Fork-Join — Системы параллельной обработки
  • Пакетное поступление — Системы M^x/M/1
  • Нетерпеливые заявки — Системы с уходом клиентов
  • Engset — Закрытые системы с конечным числом источников
  • Сети — Открытые и закрытые сети очередей

См. Каталог моделей для полного списка и деталей.


📌 Области применения

  • Облачные вычисления: Моделирование масштабируемости и производительности инфраструктуры
  • Call-центры: Оптимизация штата и времени ожидания клиентов
  • Транспорт: Улучшение транспортных потоков и логистики
  • Сетевой трафик: Анализ и прогнозирование потоков данных
  • Производство: Оптимизация производственных линий
  • Здравоохранение: Планирование ресурсов больниц

См. Примеры использования для практических кейсов.


📖 Most-Queue 2.x API

Единый API для симуляции и расчета:

# from most_queue.theory.fifo.mgn_takahasi import MGnCalc
# from most_queue.sim.base import QsSim
#
# Численный расчет
calc = MGnCalc(n=NUM_OF_CHANNELS)
calc.set_sources(l=ARRIVAL_RATE)
calc.set_servers(b=b)
calc_results = calc.run()

# Симуляция
qs = QsSim(NUM_OF_CHANNELS)
qs.set_sources(ARRIVAL_RATE, "M")
qs.set_servers(gamma_params, "Gamma")
sim_results = qs.run(NUM_OF_JOBS)

📁 Ресурсы

  • Тесты — Примеры с сравнением теоретических и симуляционных результатов
  • Туториалы — Jupyter-ноутбуки с пошаговыми руководствами
  • Документация — Подробная документация на русском языке

🧪 Запуск тестов (разработчикам)

python3 -m pip install -U pip
python3 -m pip install -e .
python3 -m pip install -U pytest
pytest -q

Если вам нужны ноутбуки/док‑инструменты (Jupyter/Sphinx и т. п.), установите полный набор зависимостей:

python3 -m pip install -r requirements.txt

Если нужно исключить медленные тесты:

pytest -q -m "not slow"

🔍 Ключевые слова для поиска

  • Теория массового обслуживания
  • Симуляция
  • Численные методы
  • Сети очередей
  • Анализ производительности
  • Облачные вычисления
  • Оптимизация call-центров
  • Транспортные системы
  • Сетевой трафик
  • Python-пакет

👥 Участие в разработке

Мы приветствуем ваш вклад!

  • Откройте issue для сообщений об ошибках или предложений
  • Отправьте pull request для улучшений функциональности
  • Контакты: xabarov1985@gmail.com

📄 Лицензия

См. файл LICENSE для деталей.


Для подробной документации, примеров и туториалов см. docs/README.md