Обычно последним шагом перед началом машинной реализацией модели является проверка достоверности схемы модели, чтобы получить результаты, адекватные тем, которые могли быть получены при проведении натурального эксперимента с реальной системой.
В рассматриваемой задаче проверка достоверности проводится просто, так как блок – диаграмма GPSS однозначно соответствует формализации модели в виде Q-схемы. Для этого достаточно ещё раз сопоставить блок – диаграмму с Q-схемой модели с учётом расширения описания элементов Q-схемы (источников, накопителей и каналов) блоками различных категорий GPSS.
Рис. 2. Блок – диаграмма GPSS исследуемой системы.
Текст программы.
При достаточной подробности схемы программы, отражающей все операции логической схемы модели, можно приступить к программированию модели.
Для данного задания, переход от блок – диаграммы GPSS к программе, является формальным шагом, так как заключается в записи пространственной структуры в линейной виде, что не требует специальных навыков. Следующая GPSS – программа получена из блок – диаграммы.
NN1 STORAGE 10 //выделение 10 памяти для NN1
NN2 STORAGE 10 //выделение 10 памяти для NN2
MET1 GENERATE 5,1 //интервал поступления деталей 1-ого типа
SPLIT 4 //копирование 4 деталей, 5 деталей идет далее.
QUEUEQUE1 //занятие очереди QUE1
ENTERNN1 //вход в накопитель NN1
DEPART QUE1 //освобождение очереди QUE1
SAVEVALUE 1+,1 //увеличивает и сохраняет значение
TESTEQ1,10,MET3 //проверяем условие: если Q1=10, то переход к метке MET3
LEAVENN1,10 //освобождает 10 единиц памяти в накопителе NN1
TERMINATE 9 //уничтожение 9 транзактов
MET2 GENERATE 20.7 //интервал поступления деталей 2-ого типа
SPLIT 19 //копирование 19 деталей 20 деталей идут далее.
QUEUEQUE2 //занятие очереди QUE2
ENTERNN2 //вход в накопитель NN2
DEPARTQUE2 //освобождение очереди QUE2
TESTEQ2,10,MET3 //проверяем условие: если Q2=10, то переход к метке MET3
LEAVENN2,10 // освобождает 10 единиц памяти в накопителе NN2
TERMINATE 9 //уничтожение 9 транзактов
MET3 SEIZEKAN //занятие канала KAN
ADVANCE 10 //обработка в канале KAN
RELEASEKAN //освобождение KAN
TERMINATE //уничтожение транзакта
GENERATE 480 //время работы конвейера
TERMINATE 1 //уничтожение транзакта
START 1
END
Описание текста программы.
Выделяем память под накопитель NN1 равную 10 и NN2 равную 10.
После этого в метке MET 1 начинается генерация транзактов с частотой 5±1. При помощи блока SPLIT создается 4 копии, а 5 транзактов идут далее через очередь в накопитель NN1. Блоком SAVEVALUE увеличиваем значение. При помощи блока TEST проверяем значение, если наличие деталей равно 10, то значение передается в метку MET 3. Далее идет освобождение в памяти NN1 10 единиц памяти уничтожение 9 транзактов.
В метке MET 2 начинается генерация транзактов с частотой 20±7. При помощи блок SPLIT создается 19 копии, а 20 транзактов идут далее через очередь в накопитель NN2. При помощи блок TEST проверяем значение, если наличие деталей равно 10, то значение передается в метку MET 3. Далее идет освобождение в памяти NN2 10 единиц памяти уничтожение 9 транзактов.
В метку MET 3 поступают детали с MET 1 и MET 2 в количестве 10 штук каждого типа и обрабатываются в течение 10 минут и удаляются из системы.
Один транзакт генерируется через интервал 480 минут времени.
Блок TERMINATE удаляет 1 транзакт из системы и вычитается 1 из счетчика числа завершенной карты START.
Результаты моделирования.
Получение и интерпретация результатов исследования – это третий этап моделирования, когда инструментальная ПЭВМ используется для проведения рабочих расчётов по составленной и отлаженной программе. Результаты этих расчётов позволяют провести анализ и сформулировать выводы о характеристиках процесса функционирования моделируемой системы. При реализации моделирующих алгоритмов на ПЭВМ вырабатывается информация о состояниях процесса функционирования исследуемой системы, которая является исходным материалом для приближённой оценки искомых характеристик, получаемых в результате имитационного эксперимента с моделью.
В результате прогона модели были получены следующие результаты:
REAL_TIME START END_TIME BLOCKS FACIL. STORAG. QUEUE
00:00 0 480 23 1 2 2
______________________________________________________
1 | N=96 ¦ W=0 | GENERATE ¦ 5 ¦ 1
2 | N=480 ¦ W=0 | SPLIT ¦ 4
3 | N=480 ¦ W=470 | QUEUE ¦ QUE1
4 | N=10 ¦ W=0 | ENTER ¦ NN1
5 | N=10 ¦ W=0 | DEPART ¦ QUE1
6 | N=10 ¦ W=0 | SAVEVALUE ¦ 1+ ¦ 1
7 | N=10 ¦ W=0 | TEST E ¦ Q1 ¦ 10 ¦ MET3
8 | N=0 ¦ W=0 | LEAVE ¦ NN1 ¦ 10
9 | N=0 ¦ W=0 | TERMINATE ¦ 9
10 | N=24 ¦ W=0 | GENERATE ¦ 20 ¦ 7
11 | N=480 ¦ W=0 | SPLIT ¦ 19
12 | N=480 ¦ W=470 | QUEUE ¦ QUE2
13 | N=10 ¦ W=0 | ENTER ¦ NN2
14 | N=10 ¦ W=0 | DEPART ¦ QUE2
15 | N=10 ¦ W=0 | TEST E ¦ Q2 ¦ 10 ¦ MET3
16 | N=0 ¦ W=0 | LEAVE ¦ NN2 ¦ 10
17 | N=0 ¦ W=0 | TERMINATE ¦ 9
18 | N=20 ¦ W=0 | SEIZE ¦ KAN
19 | N=20 ¦ W=0 | ADVANCE ¦ 10
20 | N=20 ¦ W=0 | RELEASE ¦ KAN
21 | N=20 ¦ W=0 | TERMINATE
22 | N=1 ¦ W=0 | GENERATE ¦ 480
23 | N=1 ¦ W=0 | TERMINATE ¦ 1
______________________________________________________
FACILITY ENTRIES UTIL. AVE.TIME
KAN 20 0,4167 10,0000
______________________________________________________
QUEUE MAX CONT. ENTRIES ENTRIES(0)AVE.CONT AVE.TIME
QUE1 470 470 480 10 231,4063 231,4063
QUE2 470 470 480 10 223,5000 223,5000
______________________________________________________
STORAGE CAP. REMAIN MIN MAX ENTRIES AVE.C. UTIL.
NN1 10 0 10 10 9,8646 0,9865
NN2 10 0 10 10 9,5000 0,9500
______________________________________________________
SAVEVALUE VALUE
1 10
Первый блок содержит общие сведения о модели и ее прогоне
REAL_TIME START END_TIME BLOCKS FACIL. STORAG. QUEUE 00:00 0 480 23 1 2 2 |
Из него можно узнать следующее:
1. Модельное время начала (START_TIME) – 0;
2. Модельное время окончания (END_TIME) прогона – 480;
3. Количество блоков в модели (BLOCKS) – 23;
4. Количество устройств (FACILITIES) – 1;
5. Количество накопителей (STORAGES) – 2;
6. Количество многоканальных устройств или очередей (QUEUE) – 2;
Из второго блока можно получить сведения об устройствах модели.
FACILITY ENTRIES UTIL. AVE.TIME KAN 20 0,4167 10,0000 |
По данному отчету можно сказать следующее:
1. В исследуемой системе использовано одно устройство с именем (FACILITIES)
KAN;
2. Устройства занимались (ENTRIES) 20 раз;
3. Коэффициенты использования (UTIL.) составили 0,4167;
4. Среднее время на одно занятие (AVE. TIME) – 10 минут;
Третий блок содержит сведения о всех очередях, используемых в системе.
QUEUE MAX CONT. ENTRIES ENTRIES(0)AVE.CONT AVE.TIME QUE1 470 470 480 10 231,4063 231,4063 QUE2 470 470 480 10 223,5000 223,5000 |
Третий блок содержит сведения обо всех накопителях, используемых в системе.
STORAGE CAP. REMAIN MIN MAX ENTRIES AVE.C. UTIL.NN1 10 5 5 5 4,9479 0,4948NN2 10 0 10 10 9,5833 0,9583 |
По представленным сведениям можно сказать следующее:
1. Моделируемая система содержит два накопителя (STORAGES) с именами NN1 и NN2;
2. Емкость устройства (CAP.) памяти равна 10, 10 соответственно;
3. Количество свободных каналов в момент завершения моделирования (REMAIN.) - 5, 0 соответственно;
4. Наименьшее (MIN) количество занятых каналов в процессе моделирования – 5, 10 соответственно;
5. Наибольшее (MAX) количество занятых каналов в процессе моделирования – 5, 10 соответственно;
6. Количество занятий МКУ (ENTRIES) – 5, 10 соответственно;
7. Среднее количество занятых каналов в процессе (AVE. C.) – 4,9479 и 9,5833 соответственно;
8. Коэффициент использования (UTIL.) составили – 0,4948, 0,9583 соответственно.
Эксперимент.
Определим целесообразность перехода на секции по 20 деталей с временем комплектации 20 минут.
NN1 STORAGE 20 //выделение 20 памяти для NN1
NN2 STORAGE 20 //выделение 20 памяти для NN2
MET1 GENERATE 5.1 //интервал поступления деталей TIP1
SEIZETIP1 //занятие канала TIP1
SPLIT 4 //копирование 4 деталей, 1 деталь идет далее.
ENTERNN1 //вход в накопитель NN1
TESTEQ1,20,MET3 //проверяем условие: если Q1=20, то переход к метке MET3
TESTLQ1,20,NN1 //проверяем условие: если Q1≠20, то переход в накопитель NN1
LEAVENN1,20 //освобождает 20 единиц памяти в накопителе NN1
TERMINATE 19 //уничтожение 19 транзактов
RELEASETIP1 //освобождение канала TIP1
TRANSFER ,MET3 //переход к метке MET3
MET2 GENERATE 20.7 //интервал поступления деталей TIP2
SEIZETIP2 //занятие канала TIP2
SPLIT 19 //копирование 19 деталей1 деталь идет далее.
ENTERNN2 //вход в накопитель NN2
TESTEQ2,20,MET3 //проверяем условие: если Q2=20, то переход к метке MET3
TESTLQ2,20,NN2 // проверяем условие: если Q1≠20, то переход в накопитель NN2
LEAVENN2,20 // освобождает 20 единиц памяти в накопителе NN2
TERMINATE 19 //уничтожение 19 транзактов
RELEASETIP2 //освобождение канала TIP2
TRANSFER ,MET3 //переходкметке MET3
MET3 SEIZEKAN //занятие канала KAN
ADVANCE 20 //обработка в канале KAN
RELEASEKAN //освобождение KAN
TERMINATE //уничтожение транзакта
GENERATE 480 //время работы конвейера
TERMINATE 1 //уничтожениетранзакта
START 1
END
——————————————————————————————————————————————————————
REAL_TIME START END_TIME BLOCKS FACIL. STORAG. QUEUE
00:00 0 480 26 3 2 0
______________________________________________________
1 | N=1 ¦ W=1 | GENERATE ¦ 5.1
2 | N=1 ¦ W=0 | SEIZE ¦ TIP1
3 | N=5 ¦ W=0 | SPLIT ¦ 4
4 | N=5 ¦ W=0 | ENTER ¦ NN1
5 | N=5 ¦ W=0 | TEST E ¦ Q1 ¦ 20 ¦ MET3
6 | N=0 ¦ W=0 | TEST L ¦ Q1 ¦ 20 ¦ NN1
7 | N=0 ¦ W=0 | LEAVE ¦ NN1 ¦ 10
8 | N=0 ¦ W=0 | TERMINATE ¦ 19
9 | N=0 ¦ W=0 | RELEASE ¦ TIP1
10 | N=0 ¦ W=0 | TRANSFER ¦ MET3
11 | N=1 ¦ W=1 | GENERATE ¦ 20.7
12 | N=1 ¦ W=0 | SEIZE ¦ TIP2
13 | N=20 ¦ W=0 | SPLIT ¦ 19
14 | N=20 ¦ W=0 | ENTER ¦ NN2
15 | N=20 ¦ W=1 | TEST E ¦ Q2 ¦ 20 ¦ MET3
16 | N=0 ¦ W=0 | TEST L ¦ Q2 ¦ 20 ¦ NN2
17 | N=0 ¦ W=0 | LEAVE ¦ NN2 ¦ 20
18 | N=0 ¦ W=0 | TERMINATE ¦ 19
19 | N=0 ¦ W=0 | RELEASE ¦ TIP2
20 | N=0 ¦ W=0 | TRANSFER ¦ MET3
21 | N=24 ¦ W=0 | SEIZE ¦ KAN
22 | N=24 ¦ W=1 | ADVANCE ¦ 20
23 | N=23 ¦ W=0 | RELEASE ¦ KAN
24 | N=23 ¦ W=0 | TERMINATE
25 | N=1 ¦ W=0 | GENERATE ¦ 480
26 | N=1 ¦ W=0 | TERMINATE ¦ 1
______________________________________________________
FACILITY ENTRIES UTIL. AVE.TIME
TIP1 1 0,9896 475,0000
KAN 24 0,9896 19,7917
TIP2 1 0,9583 460,0000