ЛистингOrders FUNCTION P$Department,L6 1,Order/2,Frame/3,Saddle/4,Handlebars/5,Wheels/6,Pedals ***************************************************************************** Transit TABLE M1,100,100,20 ***************************************************************************** Clerks STORAGE 2 Framers STORAGE 3 Saddlers STORAGE 1 Handlers STORAGE 1 Wheelers STORAGE 1 Pedalers STORAGE 1 Builders STORAGE 4 Packers STORAGE 3 ***************************************************************************** GENERATE 50,10;Прибывает заказ на велосипед. SPLIT 5,Factory,Department;5 копий заказа. Order ENTER Clerks ADVANCE 80,10;Подготовка счет-фактуры. LEAVE Clerks Invoice MATCH Bicycle;Ждать изготовления велосипеда. TERMINATE;Транзакт завершил работу. ***************************************************************************** Factory TRANSFER FN,Orders;Копия направляется в необходимый отдел. ***************************************************************************** Frame ENTER Framers ADVANCE (Exponential(1,0,65));Изготовление рамы. ADVANCE 12,2;Осмотр рамы. LEAVE Framers TRANSFER,Build;Передается на сборку. ***************************************************************************** Saddle ENTER Saddlers ADVANCE 6,3;Приемка сиденья со склада. ADVANCE 3,1;Осмотр сиденья. LEAVE Saddlers TRANSFER,Build;Передается на сборку. ***************************************************************************** Handlebars ENTER Handlers ADVANCE 4,2;Приемка руля со склада. ADVANCE 3,1;Осмотр руля. LEAVE Handlers TRANSFER,Build;Передается на сборку. ***************************************************************************** Wheels ENTER Wheelers ADVANCE 3,1;Приемка колес со склада. ADVANCE 3,1;Осмотр колес. LEAVE Wheelers TRANSFER,Build;Передается на сборку. ***************************************************************************** Pedals ENTER Pedalers ADVANCE 5,1;Приемка педалей со склада. ADVANCE 3,1;Осмотр педалей. LEAVE Pedalers TRANSFER,Build;Передается на сборку. ***************************************************************************** Build ASSEMBLE 5;Сборка. ENTER Builders ADVANCE (Normal (1,90,10));Время сборки. ADVANCE 35,5;Осмотр. LEAVE Builders Bicycle MATCH Invoice;Ждать оформления документов. ENTER Packers ADVANCE 40,5;Упаковка перед отправкой. LEAVE Packers TABULATE Transit TERMINATE;Транзакт завершил работу. ***************************************************************************** GENERATE 480;Таймер «дня». TERMINATE 1;Транзакт завершил работу. START 5
Пояснения к листингу Сборка велосипеда состоит из нескольких параллельных процессов. Для того чтобы реализовать на GPSS последовательность действий, используется следующий способ – с помощью оператора SPLIT вводятся дополнительные транзакты для процессов 2-6, а после формирования документации на изделие, подготовки комплектующих и сборки, велосипед отправляется на упаковку. Для решения задачи были использованы ранее не знакомые нам операторы. Блок SPLIT используют для создания определенного количества копий входящего в него транзакта. В отличие от введенных при помощи блока GENERATE транзактов, копии, создаваемые блоком SPLIT, образуют семейство с транзактом-оригиналом. Необходимое количество копий указывают в поле A; если A=0, то блок SPLIT не выполняет никаких действий, пропуская транзакт дальше. Копии создаются в момент входа транзакта-родителя в блок SPLIT, затем транзакт-родитель пытается перейти к следующему блоку, указанному в поле B, причем значение аргумента поля B может вычисляться отдельно для каждой копии. В поле C может быть указан номер параметра, используемого для присуждения каждой копии номера в возрастающем порядке и для записи этого номера в соответствующий параметр. Поле D используют для задания количества параметров каждой копии. В случае если D пусто, это количество совпадает с числом параметров транзакта-родителя, а также сохраняются их значения.
Блок ASSEMBLE объединяет заданное количество транзактов одного семейства. Транзакты никогда не задерживаются на входе данного блока. После прибытия необходимого количества транзактов одного семейства (количество указывают в поле A), из блока выходит только первый прибывший транзакт, остальные выводятся из модели. Особенности: 1) для каждого семейства в одном блоке ASSEMBLE выполняется только одна операция объединения; 2) в одном блоке может параллельно выполняться объединение для транзактов различных семейств; 3) для любого семейства объединение может осуществляться параллельно в различных блоках ASSEMBLE; 4) после окончания операции объединения для данного семейства, может начаться новое объединение для того же семейства.
Блок MATCH используют для синхронизации движения двух транзактов одного семейства без их изъятия из модели. Блок MATCH не объединяет транзакты, позволяя им двигаться по своему (одному) маршруту. Синхронизация осуществляется путем выбора пар транзактов одного семейства и их задержки до тех пор, пока оба этих транзакта не достигнут заданных точек блок-схемы. Транзакты никогда не задерживаются на входе данного блока и переходят к следующему блоку при выполнении условий синхронизации. В поле A указывают номер другого блока MATCH, называемого сопряженным (блоки указывают друг на друга). Если в такой блок попадает транзакт, являющийся единственным членом семейства, то генерируется ошибка. Возможно использование блока MATCH сопряженным с самим собой. В этом случае его действие эквивалентно блоку GATHER с операндом в поле A.
Результаты START TIME END TIME BLOCKS FACILITIES STORAGES 0.000 2400.000 46 0 8
NAME VALUE BICYCLE 39.000 BUILD 34.000 BUILDERS 10008.000 CLERKS 10002.000 DEPARTMENT 10010.000 FACTORY 8.000 FRAME 9.000 FRAMERS 10003.000 HANDLEBARS 19.000 HANDLERS 10005.000 INVOICE 6.000 ORDER 3.000 ORDERS 10000.000 PACKERS 10009.000 PEDALERS 10007.000 PEDALS 29.000 SADDLE 14.000 SADDLERS 10004.000 TRANSIT 10001.000 WHEELERS 10006.000 WHEELS 24.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY 1 GENERATE 47 0 0 2 SPLIT 47 0 0 ORDER 3 ENTER 47 0 0 4 ADVANCE 47 1 0 5 LEAVE 46 0 0 INVOICE 6 MATCH 46 2 0 7 TERMINATE 44 0 0 FACTORY 8 TRANSFER 235 0 0 FRAME 9 ENTER 47 0 0 10 ADVANCE 47 1 0 11 ADVANCE 46 0 0 12 LEAVE 46 0 0 13 TRANSFER 46 0 0 SADDLE 14 ENTER 47 0 0 15 ADVANCE 47 0 0 16 ADVANCE 47 0 0 17 LEAVE 47 0 0 18 TRANSFER 47 0 0 HANDLEBARS 19 ENTER 47 0 0 20 ADVANCE 47 0 0 21 ADVANCE 47 0 0 22 LEAVE 47 0 0 23 TRANSFER 47 0 0 WHEELS 24 ENTER 47 0 0 25 ADVANCE 47 0 0 26 ADVANCE 47 0 0 27 LEAVE 47 0 0 28 TRANSFER 47 0 0 PEDALS 29 ENTER 47 0 0 30 ADVANCE 47 0 0 31 ADVANCE 47 0 0 32 LEAVE 47 0 0 33 TRANSFER 47 0 0 BUILD 34 ASSEMBLE 234 1 0 35 ENTER 46 0 0 36 ADVANCE 46 1 0 37 ADVANCE 45 1 0 38 LEAVE 44 0 0 BICYCLE 39 MATCH 44 0 0 40 ENTER 44 0 0 41 ADVANCE 44 1 0 42 LEAVE 43 0 0 43 TABULATE 43 0 0 44 TERMINATE 43 0 0 45 GENERATE 5 0 0 46 TERMINATE 5 0 0
STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY CLERKS 2 1 0 2 47 1 1.566 0.783 0 0 FRAMERS 3 2 0 3 47 1 1.339 0.446 0 0 SADDLERS 1 1 0 1 47 1 0.182 0.182 0 0 HANDLERS 1 1 0 1 47 1 0.130 0.130 0 0 WHEELERS 1 1 0 1 47 1 0.114 0.114 0 0 PEDALERS 1 1 0 1 47 1 0.163 0.163 0 0 BUILDERS 4 2 0 4 46 1 2.319 0.580 0 0 PACKERS 3 2 0 3 44 1 0.726 0.242 0 0
TABLE MEAN STD.DEV. RANGE RETRY FREQUENCY CUM.% TRANSIT 235.517 51.242 0 100.000 - 200.000 11 25.58 200.000 - 300.000 26 86.05 300.000 - 400.000 6 100.00
FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE 284 0 2405.302 277 10 11 DEPARTMENT 2.000 283 0 2407.427 283 0 1 269 0 2417.908 259 41 42 DEPARTMENT 5.000 274 0 2426.765 265 37 38 DEPARTMENT 4.000 277 0 2445.431 277 4 5 DEPARTMENT 1.000 281 0 2464.098 271 36 37 DEPARTMENT 5.000 289 0 2880.000 289 0 45
Анализ результатов Результаты моделирования сведены в табл. 1.
Для экономии на заработной плате можно сократить 2 упаковщиков и 1 сборщика. Также, при условии отсутствия возможности даже малейшего роста производства, можно уволить 1 мастера рам.
График распределения транзитного времени представлен на рис. 2.
|