Цель
Определить увеличится ли производительность завода при новом распределении этапов производства.
Описание
В машинном цехе расположены 3 вида станков: А, В и С. В этот цех поступают заказы, причем сначала в рабочую область, а оттуда в плановый отдел, где учитывается критерий наименьшей очереди заказов, распределенных по станкам. 50% заказов могут обрабатываться всеми станками, 30% только станками типа В или С, остальные 20% только станками типа С.
Но иногда обработка заказа машиной типа С занимает много времени. Тогда предполагается поступление минимального количества заказов из рабочей области в производственный цех. Это позволяет более рационально распределить заказы и сократить время на их обработку. Для этого в имитационную модель добавляются еще 2 элемента, один из которых отвечает за входящий поток заказов, а второй – за их сортировку по типам и за их направление в соответствующий буфер.
Операции
Рассмотрим структуру данной имитационной модели. Начнем по порядку.
Рабочий день состоит из 8 часов.
Settings | Time representation
60 units make 1 minute
60 minute make 1 hour
8 hour make 1 day
Время имитации модели равно одному дню.
Settings | Simulate| Stop time = 1day
Далее рассмотрим элементы, из которых построена модель и связи между ними.
Элементы – Inou_1, Inou_19 служат для генерации входящего потока заказов.
Элементы – Buff_2, Buff_20 сортируют заказы по типам и направляют их в соответствующий буфер.
Элементы – Buff _3, Buff_4, Buff_5, Buff_6, Buff_7, Buff_8 содержат очередь продуктов, принятых к исполнению.
Элементы с Mach_9 по Mach_14 отражают машины, обрабатывающие заказы.
Элементы – Buff_15, Buff_16 содержат уже готовые заказы, которые затем передают на выход.
Элементы – Inou_17, Inou_18 являются выходом для выполненных заказов.
По условию задачи, в заводской цех поступают заказы разных типов, из которых 50% обрабатывается всеми машинами, 30% - машинами типа В или С и 20% - машинами типа С. Поступление заказов задаётся эмпирическим распределением. Отсюда имеем:
Model | Elements | Job parameters
Element 1: Trigger on exit = product[C]:=empirical [1]
Element 19: Trigger on exit = product[C]:=empirical [2]
Заказ поступает каждые 5 единиц времени. Это время, через которое Элементы – Inou_1 и Inou_19 генерируют входящий поток заказов. Задаётся пуассоновским законом распределения:
Model | Elements | Job parameters
Element 1: Time = 5.0 Neg.Exp
Element 19: Time = 5.0 Neg.Exp
Так как заказы поступают случайным образом, то пропускная способность элементов Inou_1 и Inou_19 не тождественна. На выходе каждого генератора входящего потока заказам присваиваются свои номера или коды, которые определяют их путь. Например, 1, 2, 3 при выходе заказов из Inou_1 и 4, 5, 6 – из Inou_19. Это говорит о том, что заказы, вышедшие из первых трех буферов обрабатываются первыми тремя машинами, из последних трех буферов – последними тремя машинами. Все преобразования в каждом элементе InOut происходят в соотношении 50:30:20.
Рассмотрим элементы Buff_2 и Buff_20. Их вместимость (Capacity) равна 20 и 40 ед. соответственно. Сходство данных элементов в том, что при отправке первого заказа они создают короткую очередь, состоящую из этого продукта. Но условием выхода заказа из добавочного Buff_20 является наличие в нем как минимум 3 заказов одновременно:
Model | Elements | Element parameters
Element 20: Exit condition = elqueue[E]>3
На этом этапе заказы, поступившие в цех через Inou_1 и Inou_19 сортируются по типам и направляются в буфер в соответствии с таблицей «plan», где ячейка берется с номером из списка 3 5, 6 8, а номер столбца равен коду продукта, являющегося в текущем элементе первым в порядке наименьшей очереди:
Model | Elements | Stage parameters
Element 2: Send to = select 1 with plan[L,product[E,1]]=1 from 3 5 order -(elqueue[L]+elqueue[L+6])
Element 20: Send to = select 1 with plan[L,product[E,1]]=1 from 6 8 order -(elqueue[L]+elqueue[L+6])
L – значение в списке
product[E,1] – продукт (заказ), являющийся в текущем элементе первым в очереди
elqueue[L] – текущее число продуктов (заказов) в элементе
Следует отметить, что строки в таблице соответствуют машинам (станкам), а столбцы - типу заказа (вид продукта). Если значение ячейки ij=1, то это означает, что заказ j может быть обслужен машиной i, если же ij=0 - тогда не может.
Например, элемент, находящийся на пересечении 5 строки и 3 столбца, говорит о том, что заказ может обрабатываться только машиной типа С.
Элементы Buff_3, Buff_4, Buff_5, Buff_6, Buff_7, Buff_8 вмещают по 16 заказов каждый (Capacity=16) и направляют их в соответствующие машины (Mach_9 - Mach_14):
Model | Elements | Stage parameters
Element 3: Send to = E+6
Element 4: Send to = E+6
Element 5: Send to = E+6
Element 6: Send to = E+6
Element 7: Send to = E+6
Element 8: Send to = E+6
Данные выражения можно пояснить следующим образом: если к номеру элемента, т.е. буфера прибавить 6, то получим номер машины, которая будет обрабатывать заказ, вышедший из этого буфера.
Таким образом, распределяются все заказы, которые нужно обработать той или иной машиной.
Т.к. среднее время необходимое для выполнения заказа равно 10 единицам времени(включая поломку, и т.п.) и задаётся пуассоновским законом распределения, то оно может сильно меняться.
Это время стоит во времени обработки в элементах Mach_9 - Mach_14.
Model | Elements | Element parameters
Element 9: Time = 10.0 Neg.Exp
Element 10: Time =10.0 Neg.Exp
Element 11: Time = 10.0 Neg.Exp
Element 12: Time = 10.0 Neg.Exp
Element 13: Time = 10.0 Neg.Exp
Element 14: Time = 10.0 Neg.Exp
В настоящий момент времени доступны все машины. У всех 6 машин стоит галочка в поле Element active.
Model | Elements | Element parameters | More
Element 9: Element active = On
Element 10: Element active = On
Element 11: Element active = On
Element 12: Element active = On
Element 13: Element active = On
Element 14: Element active = On