[Из песочницы] Имитационная модель логистического центра

Предлагаю вниманию хабрапользователей небольшую статью, описывающую практическую сторону применения такой области, как имитационное моделирование.Постановка задачи (описание процесса)В логистический центр по согласованному с поставщиком календарю поставок прибывает известное количество товаров одного типа. При переполнении склада заявка на поставку товаров заведомо отменяется. Товар поступает, хранится и передается в розничную точку продаж в упаковках по 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«имитирующего в модели розничную точку продаж; При помощи диаграммы дискретно-событийного моделирования разработана модель функционирования логистического центра978d4f98657341f2a97d3d0b51697609.pngОписание основных блоков модели № Блок Описание 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» управляется расписанием, формируемым из внешнего источника: 8e2b30f4d67f497ba9a47e2d421f5142.png

Аналогичным способом при помощи расписания «downtime» задается расписание перерывов работы ресурсов. Визуальное представления формируется при помощи инструмента разметки пространства:

b24c8ede177849da8b52ea37d134e9e2.png

Описание областей разметки № Описание 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) отражающему точку розничных продаж.

95e43ad2c1e84b479a92c9f9a294474d.png

При достижении ресурса, заявка типа «Agent» уничтожается объектом «sink», а текущий остаток точки розничных продаж увеличивается на заданное количество.

На презентации присутствует диаграмма, отражающая текущий остаток товара в розничной точке продаж.

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

Событие передает управление диаграмме действия:

a1ea63a7270c448aa200fdaf35ca9484.png

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

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

© Habrahabr.ru