[Из песочницы] Имитационная модель логистического центра
Предлагаю вниманию хабрапользователей небольшую статью, описывающую практическую сторону применения такой области, как имитационное моделирование.Постановка задачи (описание процесса)В логистический центр по согласованному с поставщиком календарю поставок прибывает известное количество товаров одного типа. При переполнении склада заявка на поставку товаров заведомо отменяется. Товар поступает, хранится и передается в розничную точку продаж в упаковках по 8 шт. По прибытию машину встречает сотрудник центра (кладовщик), проверяет наличие необходимой сопроводительной документации, актов соответствия/качества, первичной бухгалтерской документации и сопровождает машину в зону разгрузки.В зоне разгрузки кладовщик в присутствии экспедитора и при помощи погрузочного оборудования (электрический погрузчик) проводит прием и визуальный осмотр товара. Далее перемещает его в зону входного контроля. Специалист по качеству (контроллер) проводит входной контроль товара. При допуске, товары, при помощи специалиста по качеству, перемещаются в зону ожидания для дальнейшего размещения на стеллажах участка хранения. При обнаружении товара не соответствующего входным параметрам перемещает его в изолятор брака для осуществления дальнейшего возврата поставщику.
Комплектовщики при помощи погрузочного оборудования (электрический погрузчик) комплектуют в зоне отгрузки поставку в розничную точку продаж. Комплектация проводится при достижении остатка товара в розничной точке продаж точки восполнения запаса (точки перезаказа).
После комплектации стандартной партии отгрузки товар передается в точку розничных продаж для реализации.Необходимо разработать модель представленного процесса для дальнейшего проведения оптимизационных экспериментов (например, определения точки перезаказа при условии отсутствия нулевого остатка в розничной точке продаж).
Исходные данные
Ресурсы логистического центра
№
Ресурс
Количество
ЕИ
Сменность
1
Кладовщик
2
чел.
3 смены по 8 часов
2
Электрический погрузчик
5
шт.
3 смены по 8 часов
3
Контроллер
3
чел.
3 смены по 8 часов
4
Ячейки стеллажей участка хранения
120
ячеек
Длительность операций
№
Операция
Длительность, мин.
1
Разгрузка машины
От 15 до 30, в среднем 21
2
Входной контроль
От 4 до 11, в среднем 11
Параметры функционирования розничной точки продаж
№
Параметр
Значение
ЕИ
Примечание
1
Текущий спрос
40
шт.
1 раз в час
2
Точка перезаказа
500
шт.
3
Количество товаров поступающих в 1 упаковке
8
шт.
РеализацияВ качестве инструмента для разработки выбран программный продукт AnyLogic (v. 7.0.2).Описание классов активного объекта
№
Класс
Описание
1
Warehouse
Основной активный класс модели, содержащий в себеостальные классы; Отражает диаграмму поведения и презентацию модели склада;
2
LogisticsMap
Вложенный активный класс модели, содержащий в себедиаграмму поведениявзаимодействия слада и розничной точки, а так жеповедение розничной точки продаж;
3
Box
Тип заявки товара; Содержит в себе презентацию заявки Box;
4
Track
Тип заявки машины поставляющей товар; Содержит в себе презентацию заявки Track;
5
Lorry
Тип заявки машины доставляющей товар в розничнуюточку продаж, а так же осуществляющей возврат непрошедшего контроль товара поставщику; Содержит в себе презентацию заявки Lorry;
6
Storekeeper
Тип агента; Содержит в себе презентацию ресурса «storekeeper»;
7
Loader
Тип агента; Содержит в себе презентацию ресурса «loader»;
8
Controller
Тип агента; Содержит в себе презентацию ресурса «controller»;
9
Shop_1
Тип агента; Содержит в себе презентацию ресурса «shop_1«имитирующего в модели розничную точку продаж;
При помощи диаграммы дискретно-событийного моделирования разработана модель функционирования логистического центра
Описание основных блоков модели
№
Блок
Описание
1
SourceBox
Перед каждым шагом модели подсчитывает кол-во свободных ячеекв зоне хранения; На каждом шаге модели генерирует заявки класса Box;
2
selectFreeCell
Переключатель. Анализирует рассчитанные свободные ячейкии при отсутствии свободных отправляет заявки на уничтожение в блок«cancellationRequests»
3
batchTruck/unbatchBox
Компонует/раскомпановывает указанное в календаре поставкиколичество заявок типа «Box» в одну заявку типа «Track» для отраженияна презентации прибытия машины
4
seizeStorekeeper/releaseStorekeeper
Захватывает/отпускает ресурс типа «storekeeper» отражая напрезентации взаимодействие кладовщика с машиной (встреча, сопровождение, разгрузка); После отпуска ресурс возвращается в базовый узел при условии отсутствиядругих работ;
5
serviceUnload
Захватывает ресурс типа «loader» и перемещает его к заявке; Проводит задержку, символизирующую разгрузку машины и проверку товара.Задержка проводится посредством метода треугольного распределения (triangular (15, 21, 30)); Отпускает ресурс типа «loader»; Отпущенный ресурс возвращается в базовый узел при условии отсутствиядругих работ;
6
splitTruck
Создает копию заявки типа «Track» для дальнейшего отражениявыбытия машины в зону выхода на презентации. Потребность в этомвызвана тем что при обратной раскомпановке заявки типа «Track» в заявкитипа «Box» заявка «Track» уничтожается;
7
seizeController/releaseController, releaseController1
Захватывает/отпускает ресурс типа «controller» для отражения напрезентации перемещения контролера к заявке и возврата в базовыйузел при условии отсутствия других работ;
8
controll
Проводит задержку, символизирующую проведение входного контроля.Задержка проводится посредством метода треугольного распределения (triangular (4, 7, 11));
9
admittance
Переключатель; Определяет вероятность прохождения заявкой типа «Box» процессавходного контроля; Вероятность задана напрямую (0.107)
10
batchLorry
Компонует заданное количество заявок типа «Box» в заявку типа«Lorry», символизируя комплектацию не прошедшего контроль товарав машину для возврата поставщику;
11
queuePallete
Задерживает прошедшие входной контроль заявки типа «Box«до появления свободного ресурса типа «loader» для перемещениятовара в ячейки зоны хранения;
12
palleteSystem
Объединяет стеллажи отраженные на презентации в единую систему хранения;
13
palleteStore
Захватывает любой свободный ресурс типа «loader» и присоединяет его к заявке; Размещает заявку типа «Box» в свободной ячейке зоны «palleteSystem«Отпускает ресурс типа «loader». Отпущенный ресурс возвращается в базовый узелпри условии отсутствия других работ;
14
hold
Блокирует дальнейшую передачу заявок типа «Box», если текущий остаток врозничной точке продаж больше точки перезаказа. Достигается это путем вызоваметодов «block ()» и «unblock ()» при входе заявки; код
if (LogisticsMap.currentStock < LogisticsMap.reorder) {
hold.unblock();
} else {
hold.block();
}
15
seizeLoaderPall/releaseLoaderPall
Захватывает/отпускает ресурс типа «loader» для отражения на презентацииперемещения контролера к заявке и возврата в базовый узел при условииотсутствия других работ;
16
palletePick
Извлекает заявку типа «Box» из зоны «palleteSystem» и перемещает еев зону отгрузки в розничную точку продаж;
17
batchLorry1
Компонует заданное количество заявок типа «Box» в заявку типа «Lorry», символизируя погрузку машины для отгрузки в розничную точку продаж;
18
sink
Уничтожает заявку типа «Box»; При входе запускает генерацию одной заявки типа «Agent» объектом«sourceLorry» в активном классе «LogisticsMap» для отражения доставкитовара в розничную точку продаж; Достигается это путем вызова метода «ручной» генерации заявоккод
logisticsMap.sourceLorry.inject (1)
Входной поток «SourceBox» управляется расписанием, формируемым из внешнего источника: 
Аналогичным способом при помощи расписания «downtime» задается расписание перерывов работы ресурсов. Визуальное представления формируется при помощи инструмента разметки пространства:

Описание областей разметки № Описание 1 Точка прибытия машин (заявок типа «Track») 2 Базовый узел расположения кладовщиков (заявок типа «Storekeeper») 3 Базовый узел расположения электрических погрузчиков (заявок типа «loader») 4 Точка выбытия машин (заявок типа «Track», в случаях возврата товара не прошедшего входной контроль поставщику — «Lorry») 5 Узел выгрузки товара и прохождения входного контроля 6 Базовый узел расположения контролеров (заявок типа «Controller») 7 Узел комплектации товаров не прошедших входной контроль 8 Узел ожидания погрузчика для размещения товара на стеллажах хранения 9 Зона хранения товара 10 Узел комплектации для отгрузки в точку розничных продаж 11 Узел выбытия товаров После прохождения объекта «sink» заявкой типа «Box» заявка уничтожается, а в активном классе «LogisticsMap» объектом «sourceLorry» генерируется заявка типа «Agent». Заявка перемещается по скрытым линиям разметки пространства к единственному ресурсу «Shop_1» (рис. 4) отражающему точку розничных продаж.

При достижении ресурса, заявка типа «Agent» уничтожается объектом «sink», а текущий остаток точки розничных продаж увеличивается на заданное количество.
На презентации присутствует диаграмма, отражающая текущий остаток товара в розничной точке продаж.
При достижении нулевого остатка продажи в розничной точке приостанавливаются до следующей поставки. Функционал обеспечивает событие «sale» запускаемое с периодичностью 1 час.
Событие передает управление диаграмме действия:

Диаграмма, при наступлении события, анализирует текущий остаток (переменная «currentStock») относительно точки перезаказа (параметр «recorderPoint»). В случае превышения текущего остатка над точкой перезаказа, переменной, хранящей уровень текущего спроса (переменная «currentStock»), присваивается значение >0 и проводится реализация товара посредством уменьшения текущего остатка на уровень текущего спроса (currentStock- currentStock). В противном случае диаграмма переходит в следующий блок решения, в котором сопоставляется текущий остаток и уровень текущего спроса. В случае превышения текущего остатка над уровнем текущего спроса, переменной, хранящей уровень текущего спроса присваивается значение >0 и проводится реализация товара посредством уменьшения текущего остатка на уровень текущего спроса. В ином случае переменной, хранящей уровень текущего спроса присваивается значение 0, таким образом продажи приостанавливаются до восполнения потребности.
В качестве заключения На текущем этапе построения модель достаточно общая, но вполне отражает процесс прохождения товара: от прибытия товара и размещения его на стеллажах участка хранения до передачи его в розничную точку продаж с последующей реализацией. Уже на данном этапе разработки модели можно выполнять эксперименты, оптимизируя точку перезаказа в целях стабилизации цепочки поставок.
