"Второй пример использования цепей текущих и будущих событий"
Глядя на рис. 2В.2, можно подумать, что прибор JOE и очередь JOEQ использованы неверно. Хочется задать вопрос: "Каким образом можно использовать прибор в двух совершенно различных местах ?"
Вопрос этот возникает из-за существования в модели двух пар блоков SEIZE - RELEASE.
Число пар блоков SEIZE - RELEASE в модели вовсе не должно совпадать с числом обслуживающих приборов моделируемой системы. В примере моделирования 2В существует только один прибор, однако при этом можно использовать две или большее число пар блоков SEIZE - RELEASE.
Рис.2В.2.Блок-схема примера моделирования 2В.
Рассмотрим еще один пример использования интерпретатором GPSS цепей текущих и будущих событий в процессе моделирования.
На рис. 2.32 представлено повторение распечатки программы из примера моделирования 2В.
В табл. 2.16 даны последовательности интервалов времени прихода и времени обслуживания, которые имеют место в блоках GENERATE и ADVANCE модели.
Рис.2.32.
BLOCK NUMBER *LOG OPERATION A,B,C,D,E.F,G COMMENTS SIMULATE * * MODEL SEGMENT 1 * 1 GENERATE 35,10 HAIRCUT-ONLY CUSTOMERS ARRIVE 2 QUEUE JOEQ ENTER THE LINE 3 SEIZE JOE CAPTURE THE BARBER 4 DEPART JOEQ LEAVE THE LINE 5 ADVANCE 18,6 USE BARBER 6 RELEASE JOE FREE THE BARBER 7 TERMINATE LEAVE THE SHOP * * MODEL SEGMENT 2 * 8 GENERATE 60,20 SHAVE-AND-HAIRCUT CUSTOMERS ARRIVE 9 QUEUE JOEQ ENTER THE LINE 10 SEIZE JOE CAPTURE THE BARBER 11 DEPART JOEQ LEAVE THE LINE 12 ADVANCE 10,2 USE BARBER FOR SHAVE 13 ADVANCE 18,6 USE BARBER FOR HAIRCUT 14 RELEASE JOE FREE THE BARBER 15 TERMINATE LEAVE THE SHOP * * MODEL SEGMENT 3 * l6 GENERATE 480 TIMER ARRIVES AT TIME |
Таблица 2.16.
Номер строки | Тип блока | Моделируемое системное событие | Предлагаемая последовательность интервалов времени |
1 | GENERATE | Приход только стригущихся клиентов | 44, 28, 35, 40, ... |
5 | ADVANCE | Обслуживание только стригущихся клиентов | 20, 18, 22, 17, ... |
8 | GENERATE | Приход стригущихся и бреющихся клиентов | 41, 72, 52, 60, ... |
12 | ADVANCE | Бритье стригущихся и бреющихся клиентов | 9, 11, 10, 12, ... |
13 | ADVANCE | Стрижка стригущихся и бреющихся клиентов | 14, 15, 20, 19, ... |
16 | GENERATE | Таймер | 480 |
Вспомним вид пятипозиционной записи, используемой для обозначения информации о транзактах:
[ Номер транзакта; Время движения; Текущий блок; Уровень приоритета; Номер следующего блока ].
На рис. 2.33 показаны состояния транзактов, находящихся в цепях текущих и будущих событий для нескольких первых значений таймера модельного времени.
Рис.2.33.
Номер строки | Модельное время | Цепь текущих событий к началу цепи | Цепь будущих событий к началу цепи |
1 | До фазы ввода | Пусто | Пусто |
2 | После фазы ввода | Пусто | [2,41,НЕТ,0,8] [1,44,НЕТ,0,1][3,480,НЕТ,0,16] |
3 | 41 | [2,KMP,НЕТ,0,8] | [1,44,НЕТ,0,1] [3,480,НЕТ,0,16] |
4 | 41 | Пусто | [1,44,НЕТ,0,1] [2,50,12,0,13] [4,113,НЕТ,0,8] [3,480,НЕТ,0,16] |
5 | 44 | [1,KMP,НЕТ,0,1] | [2,50,12,0,13] [4,113,НЕТ,0,8] [3,480,НЕТ,0,16] |
6 | 44 | [1,KMP,2,0,3] | [2,50,12,0,13] [5,72,НЕТ,0,1] [4,113,НЕТ,0,8] [3,480,НЕТ,0,16] |
7 | 50 | [1,KMP,2,0,3] [2,KMP,12,0,13] | [5,72,НЕТ,0,1] [4,113,НЕТ,0,8] [3,480,НЕТ,0,16] |
8 | 50 | [1,KMP,2,0,3] | [2,64,13,0,14] [5,72,НЕТ,0,1] [4,113,НЕТ,0,8] [3,480,НЕТ,0,16] |
9 | 64 | [1,KMP,2,0,3] [2,KMP,13,0,14] | [5,72,НЕТ,0,1] [4,113,НЕТ,0,8] [3,480,НЕТ,0,16] |
10 | 64 | Пусто | [5,72,НЕТ,0,1] [1,84,5,0,6] [4,113,НЕТ,0,8] [3,480,НЕТ,0,16] |
В процессе выполнения этой фазы оказывается, что блок 1 является блоком GENERATE.
Транзакт 1 выбирается из вершины пассивного буфера и помещается в цепь будущих событий; планируется вход в блок 1 в момент времени, равный 44 (см. табл. 2.16). Далее карта GENERATE будет обнаружена в блоке номер 8.
Теперь транзакт 2 выбирается из буфера и помещается в цепь будущих событий; планируется его вход в блок 8 в момент времени 41, что соответствует табл. 2.16. И, наконец, третья карта GENERATE обнаруживается в позиции 16, Затем уже транзакт 3 помещается в ЦБС; планируется его вход в блок 16 в момент времени 480 в соответствии с табл. 2.16. Главная Содержание главы 1