mmvu_lab_mag
.pdf51
зывает транзакту во входе), то в блок, указанный в поле операнда C. Если и эта попытка неудачна, то транзакт остается в блоке TRANSFER до наступления в модели момента, делающего возмож# ным вход транзакта в один из блоков, указанных в операндах B или C, причем при одновременно возникшей возможности транзакт войдет в блок, указанный в операнде В.
Работу блока TRANSFER с ключевым словом ALL рассмотрим ниже.
Для начала на примере последней задачи рассмотрим модель случайного перераспределения заявок. Предположим, что не все клиенты операционного зала в банке осуществляют кассовые опе# рации, а только в среднем 70% клиентов. То есть после обслужива# ния в операционном окне клиент с вероятностью 0,7 пойдет в кассу и с вероятностью 0,3 выйдет из зала. Построим модель данной сис# темы:
BANK STORAGE 3 |
;указание числа окон |
GENERATE (exponential(1,0,5)) |
;поступление посетителей |
QUEUE QUEUE_BANK |
;очередь посетителей в окно |
ENTER BANK |
;посетитель подходит к окну |
DEPART QUEUE_BANK |
;посетитель выходит из очереди |
ADVANCE (exponential(1,0,12)) |
;время обслуживания в окне |
LEAVE BANK |
;окончание обслуживания в окне |
TRANSFER 0.3,,EXT |
;выбор кассовых операций |
QUEUE QUEUE_CASH |
;очередь в кассу |
SEIZE CASH |
;вход в кассу |
DEPART QUEUE_CASH |
;выход из очереди в кассу |
ADVANCE 4,2 |
;время обслуживания в кассе |
RELEASE CASH |
;окончание обслуживания в кассе |
EXT TERMINATE |
;выход посетителя из банка |
GENERATE 480 |
|
TERMINATE 1 |
|
START 1 |
|
Построение самой модели было подробно рассмотрено выше, поэтому здесь рассмотрим только отличие ее от предыдущей модели (хотя, наверняка, все и так понятно). После блока LEAVE BANK вставлен блок TRANSFER 0.3,,EXT, работающий в режиме случай# ной передачи. Программа сама определит этот режим по числу
52
воперанде А, который с вероятностью 0,7 (1 – 0,3 = 0,7) направит пришедший транзакт в следующий блок QUEUE QUEUE_CASH,
вочередь в кассу, так как операнд В в блоке TRANSFER не задан, а с вероятностью 0,3 направит пришедший транзакт в блок с мет# кой EXT (блок TERMINATE), на выход посетителя из зала.
После процесса моделирования получим следующий отчет (рис. 2.17).
Рис. 2.17. Окно отчета результатов моделирования с использованием
блока случайной передачи транзактов
Укажем отдельно основные результаты моделирования (соот# ветствующие результаты моделирования предыдущей задачи ука# жем в скобках):
•число обслуженных клиентов за рабочий день – 69 (88) чел.; •среднее время ожидания к окнам – 2,7 (5,4) мин; •средняя длина очереди к окнам – 0,4 (1) чел.; •средняя загрузка сотрудников – 0,63 (0,68);
53
•среднее время ожидания в кассе – 1,2 (6,2) мин; •средняя длина очереди к кассе – 0,1 (1,1) чел.; •средняя загрузка кассира – 0,46 (0,71); •среднее время обслуживания в кассе – 4,3 (3,8) мин.
Составим теперь модель двухканальной системы с разным вре# менем обслуживания требований в каждом канале. Например, на вокзале для продажи билетов работает два окна. Обращение поку# пателей за билетами имеет экспоненциальный характер распреде# ления с интенсивностью 10 чел./ч.
Впервом окне работает кассир, имеющий большой опыт рабо# ты, который затрачивает на обслуживание покупателя в среднем 5 мин. Во втором окне работает кассир с небольшим стажем работы, который затрачивает на обслуживание покупателя 10 мин.
Определить коэффициент загрузки каждого кассира, среднее время обслуживания одного покупателя каждым кассиром, среднее время ожидания в очереди за билетом и среднюю длину очереди. За единицу времени принять минуту, общее время моделирования – 12 часов.
Вначало модели традиционно поместим блок GENERATE (exponential(1,0,6)) со средним значением времени поступления, равным 60/10 = 6 мин. Далее поместим блок QUEUE, моделирую# щий очередь, с именем очереди в кассу QUEUE_CASH. Воспользо# ваться блоками ENTER и LEAVE не представляется возможным, потому что необходимо указывать каждый канал отдельно. Поэтому применяем блоки SEIZE и RELEASE, моделирующие отдельные устройства, с именем устройства CASH_1 для первого и CASH_2 для второго кассира. Задержку времени обслуживания клиента смо# делируем с помощью блока ADVANCE (exponential(1,0,5)) для пер# вого кассира и блока ADVANCE (exponential(1,0,10)) для второго кассира.
После блока QUEUE QUEUE_CASH надо распределить поку# пателей по свободным кассам. Это можно реализовать посредством блока TRANSFER в виде:
TRANSFER BOTH,,CASH2.
Указанное в первом операнде ключевое слова BOTH показыва# ет, что блок работает в логическом режиме. В этом случае блок
54
TRANSFER будет направлять транзакты либо в следующий блок (так как он не задан), либо в блок с меткой (именем) CASH2, ука# занный в третьем операнде. Если оба блока заняты, то транзакт ос# танется в блоке TRANSFER, то есть в очереди.
Естественно, метка CASH2 блока должна указывать на блок SEIZE CASH_2. Но это еще не все. По модели видно, что если тран# закт попал в первую кассу, то ничто не препятствует ему после об# служивания в первой кассе пойти на обслуживание во вторую кассу. Поэтому после блока RELEASE CASH_1 необходимо поставить блок TRANSFER,EXT, работающий в режиме безусловной переда# чи и направляющий все транзакты на выход из модели в блок TERMINATE с именем EXT. И последнее, не задан блок выхода из очереди DEPART. Очевидно, что его надо поставить после каждого блока входа в устройство SEIZE CASH_1 и SEIZE CASH_2 с име# нем очереди QUEUE_CASH.
В итоге модель примет вид:
GENERATE (exponential(1,0,6)) |
;поступление покупателей |
QUEUE QUEUE_CASH |
;очередь в кассу |
TRANSFER BOTH,,CASH2 |
;выбор кассы покупателем |
SEIZE CASH_1 |
;поступление покупателя к кассе 1 |
DEPART QUEUE_CASH |
;выход из очереди в кассу |
ADVANCE (exponential(1,0,5)) |
;время обслуживания в кассе 1 |
RELEASE CASH_1 |
;окончание обслуживания в кассе 1 |
TRANSFER,EXT |
;направление покупателя к выходу |
CASH2 SEIZE CASH_2 |
;поступление покупателя к кассе 2 |
DEPART QUEUE_CASH |
;выход из очереди в кассу |
ADVANCE (exponential(1,0,10)) |
;время обслуживания в кассе 2 |
RELEASE CASH_2 |
;окончание обслуживания в кассе 2 |
EXT TERMINATE |
;выход из кассового зала |
GENERATE 720
TERMINATE 1
START 1
Во второй части программы установлено ограничение на время моделирования – 12 часов, или 720 мин.
Запустим процесс моделирования и получим следующие ре# зультаты (рис. 2.18):
55
•коэффициент загрузки первого кассира – 0,71; •коэффициент загрузки второго кассира – 0,61; •среднее время обслуживания покупателя первым кассиром –
5,5 мин; •среднее время обслуживания покупателя вторым кассиром –
11,8 мин; •средняя длина очереди – 1,8 чел.;
•среднее время ожидания в очереди – 9,9 мин.
Рис. 2.18. Окно отчета результатов моделирования двухканальной
системы с разным временем обслуживания в канале
Для построения следующей модели изменим условия предыду# щей задачи. Предположим, что в билетной кассе работают три касси# ра и время обслуживания каждым соответственно равно 5, 7 и 13 мин. Интенсивность поступления покупателей составляет 20 чел./ч.
Проведем моделирование данной системы и найдем те же пара# метры системы, что и в предыдущей задаче.
В данной системе три канала обслуживания, поэтому необходи# мо использовать блок TRANSFER с ключевым словом ALL вместо
56
BOTH в первом операнде блока. В этом случае блок имеет следую# щий формат:
TRANSFER ALL, В, С, D.
Добавляется еще один необязательный операнд D. В режиме логической передачи с ключевым словом ALL пришедший в блок TRANSFER транзакт сначала направляется в блок, указанный в операнде В. Если блок занят, то транзакт направляется в следую# щий блок, расположенный от блока В ниже, через количество бло# ков, указанное в операнде D. Если и он занят, то программа отсчи# тывает то количество блоков вниз, которое указано в операнде D, и пытается направить транзакт в этот блок, и так далее до блока, указанного в операнде C, или до первой удачной попытки входа.
Если операнд D не указан, то транзакт направляется последова# тельно во все блоки между блоками B и C до первой удачной попыт# ки. Если все блоки для входа заняты, то программа проверяет зано# во все блоки по циклу до удачной попытки входа. То есть таким об# разом можно моделировать систему с любым количеством каналов при условии, что количество блоков, моделирующих каждый канал, должно быть одинаковым.
Составим модель данной системы, взяв за основу модель из пре# дыдущей задачи:
GENERATE (exponential(1,0,3 )) |
;поступление покупателей |
QUEUE QUEUE_CASH |
;очередь в кассу |
TRANSFER ALL,CASH1,CASH3,5 |
;выбор кассы покупателем |
CASH1 SEIZE CASH_1 |
;поступление покупателя к кассе 1 |
DEPART QUEUE_CASH |
;выход из очереди в кассу |
ADVANCE (exponential(1,0,5)) |
;время обслуживания в кассе 1 |
RELEASE CASH_1 |
;окончание обслуживания в кассе 1 |
TRANSFER,EXT |
;направление покупателя к выходу |
SEIZE CASH_2 |
;поступление покупателя к кассе 2 |
DEPART QUEUE_CASH |
;выход из очереди в кассу |
ADVANCE (exponential(1,0,7)) |
;время обслуживания в кассе 2 |
RELEASE CASH_2 |
;окончание обслуживания в кассе 2 |
TRANSFER,EXT |
;направление покупателя к выходу |
CASH3 SEIZE CASH_3 |
;поступление покупателя к кассе 3 |
DEPART QUEUE_CASH |
;выход из очереди в кассу |
ADVANCE (exponential(1,0,13)) |
;время обслуживания в кассе 3 |
RELEASE CASH_3 |
;окончание обслуживания в кассе 3 |
EXT TERMINATE |
;выход из кассового зала |
57
GENERATE 720
TERMINATE 1
START 1
В модели после блока QUEUE стоит блок TRANSFER ALL,CASH1,CASH3,5, который направляет транзакт в блок с име# нем CASH1. Если он занят, то программа отсчитывает от него пять блоков вниз и направляет транзакт туда, и так далее до блока CASH3. В остальном логика построения модели не отличается от исходной.
После моделирования получим результат (рис. 2.19): •коэффициент загрузки первого кассира – 0,77; •коэффициент загрузки второго кассира – 0,72; •коэффициент загрузки третьего кассира – 0,71; •среднее время обслуживания покупателя первым кассиром –
4,9 мин; •среднее время обслуживания покупателя вторым кассиром –
7,3 мин; •среднее время обслуживания покупателя третьим кассиром –
10,9 мин; •средняя длина очереди – 1,1 чел.;
•среднее время ожидания в очереди – 3,4 мин.
58
Рис. 2.19. Окно отчета результатов моделирования трехканальной
системы с разным временем обслуживания в каждом канале
Выше было рассмотрено несколько примеров моделирования
впрограмме GPSS World несложных систем массового обслужива# ния. В примерах не использовалось обращение к текущим парамет# рам блоков и транзактов (в программе они называются СЧА). Используя некоторые параметры, можно усложнять модели, на# пример, увеличивать время задержки какого#либо транзакта (одна заявка оказалась сложнее остальных) или изменять приоритеты обслуживания (для СМО с приоритетным обслуживанием). Воз# можно моделирование автоматического изменения числа каналов
вмодели для подбора оптимального решения. Результаты модели# рования можно выводить в виде таблиц и гистограмм. То есть воз# можности программы GPSS World достаточно широки, что и обус# ловливает ее долголетие.
59
Задание для самостоятельной работы и самопроверки
На автомобильной мойке работает два бокса для мойки автома# шин. Время мойки составляет в среднем 15 мин с отклонением ±4 мин и подчиняется нормальному закону распределения. Приезд ав# томашин на мойку является простейшим законом распределения со средним значением 15 автомобилей за два часа. Если все боксы заня# ты, то автомашины встают в общую очередь.
Составить модель системы. Определить среднюю длину очере# ди, время ожидания автомобилей в очереди, число обслуженных ав# томобилей и коэффициент загрузки моечных боксов за 12#часовой рабочий день. За единицу измерения времени принять минуту.
Ответ.
Модель данной системы будет следующей:
BOX STORAGE 2 |
;указание числа боксов |
GENERATE (exponential(1,0,8)) |
;поступление автомашин |
QUEUE QUEUE_BOX |
;очередь автомашин к боксу |
ENTER BOX |
;въезд автомашины в бокс |
DEPART QUEUE_BOX |
;выход автомашины из очереди |
ADVANCE (normal(1,15,4)) |
;время мойки в боксе |
LEAVE BOX |
;окончание мойки в боксе |
TERMINATE |
;выезд автомашины с мойки |
GENERATE 720 |
|
TERMINATE 1 |
|
START 1 |
|
Результаты моделирования показаны на рис. 2.20. Поскольку сам процесс вероятностный, то следует иметь в виду, что последую# щие результаты моделирования могут незначительно отличаться от приведенных на рисунке.
60
LABEL
QUEUE
RETRY QUEUE_BOX
STORAGE
BOX
LOC |
BLOCK TYPE |
ENTRY COUNT CURRENT COUNT RETRY |
||
1 |
GENERATE |
85 |
0 |
0 |
2 |
QUEUE |
85 |
0 |
0 |
3 |
ENTER |
85 |
0 |
0 |
4 |
DEPART |
85 |
0 |
0 |
5 |
ADVANCE |
85 |
1 |
0 |
6 |
LEAVE |
84 |
0 |
0 |
7 |
TERMINATE |
84 |
0 |
0 |
8 |
GENERATE |
1 |
0 |
0 |
9 |
TERMINATE |
1 |
0 |
0 |
MAX CONT. |
ENTRY ENTRY(0) AVE.CONT. |
AVE.TIME |
AVE.(-0) |
|
||||||
8 |
0 |
|
85 |
21 |
1.708 |
14.469 |
|
19.217 |
0 |
|
CAP. REM. |
MIN. MAX. |
ENTRIES AVL. |
AVE.C. UTIL. |
RETRY DELAY |
||||||
2 |
1 |
0 |
2 |
85 |
1 |
1.757 |
0.878 |
0 |
0 |
Рис. 2.20. Результаты моделирования задачи об автомойке
Из результатов моделирования можно получить: •среднее время ожидания в очереди – 14,5 мин; •среднюю длину очереди – 1,7 автомобилей; •число обслуженных автомобилей – 84; •коэффициент загрузки моечных боксов – 0,878.