Задача. В литейном цехе над выполнением заказов, поступающих в среднем каждый час (экспоненциальное распределение), работают 18 литейщиков. Цех работает по пятидневной рабочей неделе с восьмичасовым рабочим днем. Тридцать процентов поступающих заказов представляют собой новые заказы, а семьдесят процентов – повторение старых. Для новых заказов необходимо изготовить новые формы, которые производятся в модельном цеху в течение 72±24 часа (равномерное распределение). Формы для повторных заказов необходимо найти и очистить, что занимает 5±3 часа.
Заказы состоят из компонентов, количество которых колеблется от 6 до 24 (равномерное распределение). Масса каждого компонента изменяется в соответствии со следующей таблицей.
Распределение массы
Частота .05 .08 .12 .25 .20 .15 .10 .05
Масса части 3 6 11 20 28 35 42 50
Формовка занимает 2 минуты на килограмм массы компонента. Срок выполнение каждого заказа определяется общим временем формовки плюс переменное технологическое время, равномерно распределенное от 40 до 160 часов.
Бригадир ждет поступления необходимой для выполнения заказа формы. Затем он выдает наряд на работу в соответствии со сроком выполнения заказа. Весь заказ целиком выполняет один литейщик.
Отливка происходит один раз в день за час до конца рабочего дня. Когда начинается отливка, все литейщики прекращают формовку и помогают выполнить процесс литья.
Необходимо:
1. Написать модель GPSS World, имитирующую работу литейного цеха.
2. Запустить процесс моделирования для периода в 10 дней.
3. Найти распределение транзитного времени всех нарядов.
4. Занести в таблицу ежедневную общую отлитую массу.
Решение.
Weight FUNCTION RN1,C8 ;Вес компонента (кг).
0.0,3/.13,6/.25,11/.50,20/.70,28/.85,35/.95,42/1.0,50
Ordertype FUNCTION RN1,D2 ;Новый заказ P1=1. Повторный заказ P1=2.
0.3,1/1.0,2
Size VARIABLE RN1@19+6 ;Размер заказа.
Ddate VARIABLE V$Mtime#P2+RN1@121+40+C1 ;Срок выполнения.
Mtime VARIABLE (P3#2) ;Время формовки компонента.
Day VARIABLE (C1/480) ;Индикатор рабочего дня.
Total VARIABLE P3#P2 ;Масса заказа.
Times TABLE M1,400,400,20 ;Транзитное время.
Cast TABLE X$Wtmold,400,400,20 ;Отлитая масса.
Molders STORAGE 18 ;Количество работающих литейщиков.
GENERATE (Exponential(1,0,60)) ;Заказы поступают каждый час.
ASSIGN 1,FN$Ordertype ;Тип заказа.
TEST E P1,2,Newjob ;Повторный заказ?
ADVANCE 300,180 ;Поиск формы.
Commence ASSIGN 2,V$Size ;Размер заказа.
ASSIGN 3,FN$Weight ;Масса компонента.
ASSIGN 4,V$Mtime ;Время формовки компонента.
ASSIGN 5,V$Ddate ;Срок выполнения.
ASSIGN 6,V$Total ;Общая масса заказа.
GATE SNF Molders,Wait ;Есть свободные литейщики?
Beg ENTER Molders ;Литейщик приступает к заказу.
ASSIGN 7,P2 ;P7=Количество компонентов в заказе.
Next ADVANCE P4 ;Время формовки компонента.
LOOP 7,Next ;Цикл повторяется для всех компонентов.
LEAVE Molders ;Литейщик освобождается, заказ выполнен.
SAVEVALUE Wtmold+,P6 ;Суммируется масса, отлитая в каждом заказе.
UNLINK 1,Beg,1 ;Выдается следующий заказ.
TABULATE Times ;Табулируется транзитное время.
TERMINATE ;Транзакт уничтожается.
Newjob ADVANCE 4320,1440 ;Время изготовления формы.
TRANSFER ,Commence ;Переход к началу выполнения заказа.
Wait LINK 1,P5 ;Поместить ожидающие выполнения заказы в список 1.
GENERATE 420,,,1,2 ;Начало цикла отливки.
Again SUNAVAIL Molders ;Обозначается начало цикла отливки.
ADVANCE 60 ;Цикл отливки длится 60 минут.
SAVAIL Molders ;Литейщики могут продолжить формовку.
ADVANCE 420 ;420 минут проходит перед началом отливки.
TABULATE Cast ;Записывается общая отлитая масса.
SAVEVALUE Totcast+,X$Wtmold ;Накапливается отлитая до настоящего времени масса.
SAVEVALUE Wtmold,0 ;Каждый день сбрасывается в 0.
TRANSFER ,Again ;Транзакт снова возвращается.
GENERATE 4800,,,,4 ;Транзакт каждые 10 дней.
SAVEVALUE V$Day,X$Totcast ;Записывается общая отлитая масса.
TERMINATE 1 ;Транзакт уничтожается.
START 1
Результаты моделирования.