Случайность, CV и серия прогонов Монте-Карло
В реальном центре две одинаковые операции редко длятся ровно одинаково. Одна КТЯ быстрее проходит сканирование, другая задерживается. Даже при той же средн
В реальном центре две одинаковые операции редко длятся ровно одинаково. Одна КТЯ быстрее проходит сканирование, другая задерживается. Даже при той же средней производительности такие колебания могут создать очередь. Модель умеет включать эту неопределённость.
Коэффициент вариации CV
CV — коэффициент вариации: стандартное отклонение, делённое на среднее
значение. Он показывает относительный разброс времени.
| CV | Значение |
|---|---|
| 0 | Идеально ровные интервалы и операции. Это режим технической сверки, а не штатной работы. |
| 0,1 | Небольшой разброс. |
| 0,25 | Умеренный разброс для проверки устойчивости. |
| 0,5 | Сильный разброс, стрессовый режим. |
В проекте при CV > 0 интервалы поступления и обслуживания выбираются из
гамма-распределения. Оно не даёт отрицательных длительностей и позволяет
сохранить нужное среднее и разброс.
Почему один запуск недостаточен
При случайности один запуск может случайно оказаться удачнее или хуже другого.
seed делает конкретную последовательность случайных чисел повторяемой, но
не превращает её в единственную истину.
Метод Монте-Карло делает несколько независимых прогонов с seed,
увеличенным на единицу для каждой репликации, и собирает значения метрик.
Например, сквозной выход, площадь и среднее время КТЯ.
.venv/bin/python -m robozon.monte_carlo scenarios/production-12-lines.json \
--policy balanced-load \
--replications 12 \
--service-time-cv 0.25 \
--json
Что именно возвращает реализация
Для каждой метрики код возвращает:
mean— среднее по прогонам;low— 2,5-й процентиль набора результатов;high— 97,5-й процентиль набора результатов;n— число прогонов.
Важно назвать это корректно: это центральный 95-процентный диапазон
наблюдённых результатов, вычисленный по процентилям. Это не классический
статистический доверительный интервал для среднего. При небольшом n он
особенно груб, поэтому в защите нельзя говорить «гарантировано в 95% случаев».
Контрольная серия для штатного режима
В серии из 20 прогонов сценария «12 линий · штатный режим с разбросом» с политикой «Балансировка нагрузки» и CV=0,25 получились такие наблюдённые диапазоны:
| Метрика | Среднее | Центральный 95-процентный диапазон |
|---|---|---|
| Сквозной выход | 100 022 товаров/ч | 99 415–100 780 товаров/ч |
| Завершили сортировку | 99 892 товаров/ч | 99 388–100 306 товаров/ч |
| Среднее сквозное время | 40,35 мин | 40,14–40,68 мин |
| Площадь | 24 820 м² | 24 792–24 848 м² |
Это наблюдённый разброс именно модели при её допущениях. Он не превращает оценку в гарантию реального склада.
Как читать результат
Допустим, серия показывает:
сквозной выход: среднее 99 800 товаров/ч, диапазон 98 900–100 200, n=12
Это условный пример: в двенадцати реализациях с заданным CV результат оказался в таком коридоре. Если нижняя граница заметно ниже целевого уровня, решение нельзя называть устойчивым для этой цели. Для площади опасна верхняя граница: если она выходит за 24 000 м², нужен запас или другая политика.
Практические правила
- Для сверки кода используйте фиксированные
seedи CV: результат должен повторяться. - Для проверки риска включайте CV и не скрывайте
n. - Всегда указывайте сценарий, политику, длительность и CV.
- Не сравнивайте 2-часовой эксперимент с 24-часовым результатом без подписи.
- Не подменяйте диапазон Монте-Карло гарантией реального склада.
Что даёт такой анализ проекту
Он не делает цифры «красивее». Он показывает, насколько вывод зависит от неравномерности операций. Это помогает честно отделить найденное решение от требования к запасу мощности, например к конфигурации N+1.