Краткое практическое руководство по GPSS


"Пример моделирования 2В. Расширение системы обслуживания с одним прибором и очередью"


Постановка задачи. В парикмахерскую с одним креслом могут приходить клиенты двух типов. Клиенты первого типа желают только стричься. Распределение интервалов их прихода 35 ± 10 мин. Клиенты второго типа желают постричься и побриться. Распределение интервалов их прихода 60 ± 20 мин. Парикмахер обслуживает клиентов в порядке "первым пришел - первым обслужен".

Такая ситуация может быть изображена на рис.2В.1, на котором кружками представлены клиенты, желающие только стричься, а квадратами обозначены клиенты, желающие и постричься и побриться. В момент, который изображен на рис. 2В.1, в кресле парикмахера сидит клиент, который только стрижется, а в очереди сидят только стригущийся, стригущийся и бреющийся и снова только стригущийся клиенты. На стрижку уходит 18 ± 6 мин, а на бритье 10 ± 2 мин.


Рис.2В.1. Дисциплина обслуживания "первым пришел- первым обслужен"
при наличии клиентов 2-х типов.

Необходимо написать модель парикмахерской на GPSS вместе с картами, обеспечивающими сбор данных об очереди, образуемой ожидающими клиентами.

Метод построения модели. Сначала возникает желание попытаться построить такую модель с одним прибором и очередью в виде единственной последовательности блоков, но возникают вопросы: "Как один блок GENERATE можно использовать для моделирования двух типов приходов?" и "Как реализовать различие в обслуживании только стригущихся и бреющихся клиентов?" Довольно быстро можно прийти к выводу, что у нас пока нет средств для разработки такой модели в виде единственной последовательности блоков.

Однако такую систему легко промоделировать с помощью двух независимых сегментов или последовательностей. Одна из последовательностей моделирует обслуживание только стригущихся клиентов, а вторая - стригущихся и бреющихся. В каждой из двух последовательностей пара блоков QUEUE - DEPART описывает одну и ту же очередь, поэтому клиенты, проходящие в этих последовательностях, обеспечивают совместный сбор статистики. Таким же образом пара блоков SEIZE - RЕLEASE описывает в каждой из двух последовательностей один и тот же прибор и моделирует самого парикмахера.
В сегменте только стригущихся блок ADVANCE используется для моделирования времени стрижки; в сегменте стригущихся и бреющихся пара последовательных блоков ADVANCE используется для моделирования затрат времени на бритье и далее на стрижку соответственно. При таком подходе моделировать систему довольно легко. Таблица определений. Единица времени: 1 мин. Таблица 2B.1.

Таблица определений примера моделирования 2B

Элементы GPSS Интерпретация
Транзакты:
1-й сегмент модели
2-й сегмент модели
3-й сегмент модели
&nbsp
Только стригущиеся клиенты
Стригущиеся и бреющиеся клиенты
Таймер
Приборы:
JOE
&nbsp
Парикмахер
Очереди:
JOEQ
&nbsp
Очередь, используемая для сбора статистики ожидания клиентов обоих типов
Обсуждение. Логика моделирования. Блок-схема, соответствующая разработанному подходу, представлена на рис.2В.2. Сегмент 1 моделирует обслуживание только стригущихся клиентов. Сегмент 2 моделирует обслуживание стригущихся и бреющихся клиентов. Сегмент 3 определяет логику для таймера.

Рис.2В.2. Блок-схема примера моделирования 2В. Заметьте, что сегменты 1 и 2 содержат пару блоков QUEUE - DEPART, использующую одну и ту же очередь (JOEQ). Заметьте также, каким образом каждый из этих сегментов вклю- чает пару блоков SEIZE - RELEASE, использующую один и тот же прибор (JQE). Возможность ссылки на один и тот же прибор или очередь из нескольких пар блоков нами еще не была рассмотрена, но не существует причин, из-за которых этого нельзя было бы сделать. В самом деле, гибкость, достигаемая многократными ссылками на заданные элементы GPSS, становится из этого примера очевидной. Распечатка результатов. (Полное время, необходимое для моделирования на IBM 360/67, равно 1,8 с. Обсуждение проблемы временных затрат при моделировании на GPSS смотри в гл. 4). Статистические данные, описывающие производительность прибора в модели, показаны на рис. 2В.4, б. Эти данные показывают суммарный эффект от обслуживания парикмахером клиентов обоих типов.


Из NUMBER ENTRIES ( ЧИСЛО ВХОДОВ) видно, что парикмахер был занят всего 20 раз. Не делается никаких указаний, сколько из этих 20 клиентов относятся к типу только стригущихся, а сколько к другому типу. Выходные данные показывают, что парикмахер был занят 89,7% времени, но не указано, какая часть этого времени потрачена на обслуживание только стригущихся, а какая на стригущихся и бреющихся клиентов. Аналогичным образом, статистические данные, показанные на рис. 2В.4, в, описывают поведение очереди модели также в агрегированном виде. Не делается различия между только стригущимися и стригущимися и бреющимися клиентами. В модели ничего не предпринято, чтобы такое различие сделать. Для того чтобы можно было осуществить такое различие, необходимо соответствующим образом переделать модель. Рис.2В.3. Распечатка программы примера моделирования 2В.
BLOCK NUMBER *LOC 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 * 16 GENERATE 480 TlMER ARRIVES AT TIME 480 17 TERMINATE 1 SHUT OFF THE RUN * * CONTROL CARDS * START 1,,,1 START THE RUN: GET CHAIN PRINTOUT AT END END RETURN CONTROL TO OPERATING SYSTEM
Рис. 2В.4. Часть распечатки выходных данных примера моделирования 2В: а - значения времени и список блоков; б - статистические данные по прибору; в - статистические данные по очереди; г - цепь текущих событий; д - цепь будущих событий. а)
RELATIVE CLOCK 480 ABSOLUTE CLOCK 4ВО BLOCK COUNTS BLOCK CURRENT TOTAL BLOCK CURRENT TOTAL 1 0 13 11 0 8 2 1 13 12 0 8 3 0 12 13 1 8 4 0 12 14 0 7 5 0 12 15 0 7 6 0 12 16 0 1 7 0 12 17 0 1 8 0 8 9 0 8 10 0 8
б)
FACILITY AVERAGE NUMBER AVERAGE SEIZING PREEMPTING UTILIZATION ENTRIES TIME/TRAN TRANS. NO. TRANS. NO. JOE .697 20 21.549 1



в)
QUEUE MAXIMUM AVERAGE TOTAL ZERO PERCENT AVERAGE SAVERAGE CONTENTS CONTENTS ENTRIES ENTRIES ZERGS TIME/TRANS TIME/TRANS JOEQ 2 .524 21 4 19,0 12.000 14.823 SAVERAGE TIME/TRANS = AVERAGE TIME/TRANS EXCLUDING ZERO ENTRIES
г)
CURRENT EVENTS CHAIN TRANS ВОТ BLOCK PR SP NBA SET MARK-TIME P1 Р2 P3 P4 SI TI CI... 6 457 2 3 6 457 0 0 0 0 1 1 2 0 0 0 0 0 0 0 0
д)
FUTURE EVENTS CHAIN TRANS ВОТ BLOCK PR SP NOA SET МАRК-ТIМЕ P1 P2 P3 P4... CI... 1 490 13 14 1 457 0 0 0 0 4 0 0 0 0 0 0 0 0 4 502 1 4 -13 0 0 0 0 4 0 0 0 0 5 504 8 5 -9 0 0 0 0 0 0 0 0 4 6 960 16 2 -1 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0
Предположим, что необходимо собрать статистику и по каждому типу клиентов (т. е. дифференцированным образом), и по обоим типам клиентов (т. е. агрегированным образом). Для сбора дифференцированной статистики рис. 2В.2 модели должен быть дополнен введением дополнительной очереди в сегмент 1 и в сегмент 2. Когда это будет сделано, модель сможет одновременно обслуживать три раздельные множества записей характеристик ожидания. На рис. 2В.5 показана блок-схема рис. 2В.2 после ее модификации в соответствии со сделанными предложениями. Дополнительные очереди, названные ТYРЕ1 и ТYРЕ2, введены соответственно в сегмент 1 и в сегмент 2. Заметим, что когда клиент входит в сегмент 1, он присоединяется к очереди JOEQ, затем к очереди TYPE1, а уже затем пытается занять прибор. Если попытка успешна, то клиент уходит из очередей ТYРЕ1 и JOEQ, и начинается обслуживание блоком ADVANCE.

Рис.2В.5.Пример моделирования 2В с раздельными и общей очередями для пользователей 2-х типов. При ожидании обслуживания, следовательно, только стригущиеся клиенты одновременно имеют запись в двух разных очередях. Одно из множеств записей существует только для стригущихся клиентов; другое множество обслуживает всех клиентов, ожидающих освобождения прибора, независимо от типа. То же самое можно сказать относительно стригущихся и бреющихся клиентов, моделирование обслуживания которых осуществляется в сегменте 2. Важно отметить, что логика, присущая модели рис. 2В.5, не отличается от логики рис. 2В.2.Все равно существует только одна очередь клиентов, ожидающих парикмахера. Дисциплина выбора из очереди, реализуемая парикмахером, по-прежнему "первым пришел - первым обслужен". Хочет разработчик собирать статистику порознь или нет, не так важно. Как было показано в параграфе 2.15, присутствие в очереди - это не более чем простая запись. Заметим, что на рис. 2В.3 в качестве операнда D карты START используется единица. В результате этого распечатались цепи текущих и будущих событий по завершении моделирования. Эти цепи показаны на рис. 2В.4, г, д.
Главная Содержание главы 1


Содержание раздела