Перейти к содержимому
Robozon: база знаний
Esc
navigateopen⌘Jpreview
На этой странице

Как работает дискретно-событийная модель

DES расшифровывается как discrete-event simulation, по-русски — дискретно-событийная имитация. «Дискретная» здесь означает, что модель перемещает виртуальн

DES расшифровывается как discrete-event simulation, по-русски — дискретно-событийная имитация. «Дискретная» здесь означает, что модель перемещает виртуальные часы не каждую секунду, а сразу к следующему важному событию.

Представьте пункт выдачи кофе

Есть очередь заказов и один бариста. Важны не все секунды, а моменты:

  1. пришёл заказ;
  2. бариста освободился;
  3. заказ начали готовить;
  4. заказ готов;
  5. следующий заказ покинул очередь.

Сортировочный блок устроен похоже, только вместо заказа — КТЯ, вместо бариста — линия или ворота, а этапов больше.

Что является событием в Robozon

Для каждой КТЯ модель фиксирует моменты прибытия к зоне, начала обслуживания и завершения. Упрощённый путь выглядит так:

прибытие палеты
  -> депаллетизация
  -> вскрытие КТЯ
  -> считывание, повторный проход или ручной разбор
  -> выбор сортировщика
  -> сортировка
  -> распределение товаров по 400 накопителям направлений
  -> формирование и заклейка выходного КТЯ одного направления
  -> оборот входного КТЯ и вывоз картона
  -> накопление выходных КТЯ по группе рейса
  -> палетизация и отгрузка

Ресурс ограничен. Если сортировщик занят, КТЯ ждёт. Когда он освобождается, следующая КТЯ получает ресурс, модель добавляет длительность операции к виртуальному времени и запускает следующее событие.

Почему в модели КТЯ, а не каждый товар

За 24 часа через систему проходит около 2,4 млн товаров. Создавать отдельный объект Python на каждый из них было бы медленно и не добавляло бы точности для задачи, где технологические операции выполняются над КТЯ и палетами.

Поэтому входной КТЯ представляет items_per_kty товаров, 27 в baseline. Сортировщик обслуживает такой пакет с длительностью, выведенной из мощности в товарах/ч. После сортировки товары числовыми пакетами расходятся по направлениям и образуют новые выходные КТЯ. Отдельный процесс SimPy на каждый товар не создаётся. Палета собирается из 20 выходных КТЯ.

Как политика меняет события

Перед сортировкой нужно выбрать линию. Правило выбора зависит от политики:

  • закреплённая маршрутизация (throughput-first) отправляет направление на связанный с ним сортировщик;
  • приоритет отправки (departure-priority) балансирует линии и перед событием рейса допускает закрытие КТЯ от 24 товаров и палеты от 18 КТЯ;
  • балансировка нагрузки (balanced-load) выбирает линию по текущей занятости и уже назначенному объёму.

Политика не меняет физическую мощность сортировщика. Она решает, будет ли эта мощность использоваться равномерно. При концентрации 80% потока в 20% направлений разница становится заметной.

Что измеряет DES

По каждой зоне и отдельно по каждой сортировочной линии сохраняются:

  • число прибытий и завершений;
  • время ожидания и обслуживания;
  • пиковая глубина очереди;
  • временные ряды по минутам, часам, 12 часам и суткам;
  • загрузка ресурса;
  • завершения внутри окна и после него.

Из этих данных получаются показатели потока, сквозного времени КТЯ, SLA, узких мест и площади. Площадь не «рисует» DES напрямую: отдельный расчёт умножает пиковые очереди на нормативную площадь одной единицы буфера.

Отказ и случайность

Сценарий может выключить несколько сортировщиков на заданном отрезке времени. Виртуальные часы продолжают идти, но доступных ресурсов становится меньше, поэтому очередь показывает последствия отказа и восстановления.

При service_time_cv = 0 интервалы и операции детерминированы: один и тот же сценарий и seed дают один результат. При значении больше нуля длительности случайно выбираются из гамма-распределения с тем же средним. Тогда нужен не один прогон, а серия. См. Монте-Карло.

Чего DES не делает

DES не знает реального будущего. Она превращает заданные допущения в последствия. Если расписание рейсов, доля успешных считываний или производительность оборудования заданы неверно, симуляция будет точно считать неверный мир. Вместимость ролл-кейджа намеренно не задаётся: этот расчёт не требуется организаторами и находится за границей модели.

Эта страница была полезной?