Для объединения заданного количества транзактов в один транзакт используется следующий оператор:
ASSEMBLE A
Где A — количество объединяемых транзактов.
Все транзакты, объединяемые в операторе ASSEMBLE, должны принадлежать одному ансамблю.
Примечание. Оператор ASSEMBLE работает следующим образом: накапливает A транзактов, пропускает первый из них в следующий оператор; остальные транзакты уничтожаются.
Важное (но не единственное) применение оператора ASSEMBLE — имитация процессов сборки изделий и составления комплектов изделий в моделях производственных систем.
Пример 2.26. В цехе производится обработка некоторых деталей. Поток деталей, поступающих на обработку — пуассоновский; детали поступают на обработку в среднем через каждые 8 минут. Сначала детали обрабатываются на станке 1 в течение 5±2 минут. Затем детали (по пять штук одновременно) обрабатываются на станке 2; обработка пяти деталей занимает в среднем 20 минут (экспоненциальная случайная величина). При обработке на станке 1 бракуется примерно 2% деталей, на станке 2 — 3%. Готовые детали укладываются в поддоны по 10 штук.
Разработать GPSS-модель для анализа работы цеха в течение 100 часов. Предусмотреть подсчет количества поддонов с готовыми деталями, а также количества бракованных деталей.
10 SIMULATE
20 XPDIS FUNCTION RN1,C24
… таблица соответствия для экспоненциального распределения…
30 GENERATE,,,1
40 DET ADVANCE 8,FN$XPDIS
50 SPLIT 1,DET
60 QUEUE 1
70 SEIZE STAN1
80 DEPART 1
90 ADVANCE 5,2
100 RELEASE STAN1
110 TRANSFER.020,,BRDET
120 QUEUE 2
130 ASSEMBLE 5
140 SEIZE STAN2
150 DEPART 2,5
160 ADVANCE 20,FN$XPDIS
170 RELEASE STAN2
180 SPLIT 4
190 TRANSFER.030,,BRDET
200 QUEUE 3
210 ASSEMBLE 10
220 DEPART 3,10
230 SAVEVALUE GOT+,1
240 TRANSFER, KON
250 BRDET SAVEVALUE BRAK+,1
260 KON TERMINATE
270 GENERATE 6000
280 TERMINATE 1
Модель работает следующим образом. Требуется имитировать процессы, связанные с накоплением деталей (по пять штук для обработки и по десять — для укладки в поддоны); значит, все транзакты, имитирующие детали, должны принадлежать одному ансамблю. Поэтому в операторе 30 создается один транзакт (исходный для всех транзактов, используемых в модели). Поступление деталей на обработку имитируется группой операторов 40-50. Операторы 60-110 имитируют обработку деталей на станке 1.
Группа операторов 120 — 190 имитирует накопление деталей по пять штук и их обработку на станке 2. Для имитации накопления деталей использован именно оператор ASSEMBLE (оператор 130), а не GATHER, так как на станке 2 обрабатываются одновременно пять деталей. Операторы 180 и 190 имитируют выход обработанных деталей из станка 2 и браковку 3% из них.
Примечание. В операторе 150 очередь 2 уменьшается на 5 единиц, так как детали подаются в станок 2 по пять штук.
Операторы 200-220 имитируют укладку деталей (по 10 штук) в поддоны. Очередь 3 введена для сбора информации о времени заполнения поддонов.