Skip to content

xabarov/most-queue

Repository files navigation

Системы массового обслуживания: Симуляция и численные методы 🔄

Queue

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

PyPI version GitHub commit activity


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

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


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

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

📦 Установка

pip install most-queue

Или установка из репозитория:

git clone https://github.com/xabarov/most-queue.git
cd most-queue
pip install -e .

Требования: Python >= 3.9


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

Базовый пример: 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 — Системы с общим потоком поступления
  • M/D/c, E_k/D/c — Системы с детерминированным обслуживанием
  • M/H₂/c — Метод Такахаси-Таками с гиперэкспоненциальным обслуживанием

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

  • 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.0 API

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

# Численный расчет
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-ноутбуки с пошаговыми руководствами
  • Документация — Подробная документация на русском языке

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

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

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

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

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

📄 Лицензия

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


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