
mmvu_lab_mag
.pdf
41
няется экспоненциальному закону распределения со средним значе# нием 8 чел./ч.
Составить модель работы операционного зала и определить среднее время ожидания, среднюю длину очереди и среднюю за# грузку сотрудников банка в течение 8#часового рабочего дня. За единицу измерения времени принять минуту.
При составлении модели необходимо сразу указать количество каналов и дать имя системе для ее идентификации. Назовем систе# му BANK и укажем количество каналов с помощью оператора STORAGE:
BANK STORAGE 2.
Далее укажем блок GENERATE для генерации заявок. В блоке для реализации экспоненциального закона распределения восполь# зуемся встроенной функцией exponential, в которой укажем среднее время поступления заявок в минутах: Тпост= 60/12 = 5 мин (exponential(1,0,5)):
GENERATE (exponential(1,0,5)).
Далее укажем блок, формирующий очередь QUEUE, и назовем очередь QUEUE_BANK. Ниже поставим блок ENTER, моделиру# ющий каналы обслуживания, с идентификатором BANK. Далее по# ставим блок DEPART, моделирующий выход из очереди посетителя с именем очереди QUEUE_BANK (имена у парных блоков должны совпадать).
После этого необходимо задать задержку транзакта на время обслуживания (моделируется блоком ADVANCE с экспоненциаль# ным законом распределения со средней величиной Тоб = 60/8 = 7,5 мин). Далее ставим парный блок LEAVE с именем BANK и в конце первой части модели блок уничтожения транзактов TERMINATE. Во вто# рой части программы поставим уже известный нам блок по модели# рованию 8#часового рабочего дня.
Составляем модель в GPSS World:
BANK STORAGE 2 |
;указание числа каналов |
GENERATE (exponential(1,0,5)) |
;поступление посетителей |
QUEUE QUEUE_BANK |
;очередь посетителей |
ENTER BANK |
;посетитель подходит к окну |

|
42 |
DEPART QUEUE_BANK |
;посетитель выходит из очереди |
ADVANCE (exponential(1,0,7.5)) |
;время обслуживания |
LEAVE BANK |
;окончание обслуживания |
TERMINATE |
;выход посетителя из зала |
GENERATE 480 |
|
TERMINATE 1 |
|
START 1 |
|
После составления модели запускаем ее на выполнение (меню
Command – Create Simulation) и получаем результат в окне REPORT (рис. 2.14).
Рис. 2.14. Окно отчета результатов моделирования REPORT
двухканальной системы

43
В отчете по моделированию добавилась новая строка, показы# вающая результаты работы каналов, где каждый из показателей определяет:
STORAGE – имя или номер многоканального устройства; САР. – емкость устройства, заданную оператором STORAGE; REM. – количество единиц свободной емкости устройства в кон#
це периода моделирования;
MIN. – минимальное количество используемой емкости за пери# од моделирования;
МАХ. – максимальное количество используемой емкости за пе# риод моделирования;
ENTRIES – количество входов за период моделирования; AVL. – состояние готовности в конце периода моделирования:
1 – готов, 0 – не готов;
AVE.C – среднее значение занятой емкости за период моделиро# вания;
UTIL. – коэффициент использования устройств в каналах; RETRY – количество транзактов, ожидающих специальных ус#
ловий, которые зависят от состояния устройства;
DELAY – количество транзактов, ожидающих возможности входа в блок ENTER.
Из результатов моделирования видно, что:
•число обслуженных клиентов за рабочий день равно 92; •среднее время ожидания обслуживания составляет 8,2 мин; •средняя длина очереди – 1,6 чел.; •средняя загрузка сотрудников – 0,71.
Сравним, как и в случае с одноканальной системой, результаты имитационного моделирования с теоретически рассчитанными данными. Так как интервалы времени поступления заявок и время обработки заявки подчиняются экспоненциальному закону, то мож# но получить аналитическое решение. Коэффициент использования (загрузки) каналов обслуживания можно определить по формуле:
k , n
где ,
λ – интенсивность поступления заявок;

44
μ – интенсивность обслуживания заявок; n – число каналов обслуживания.
Для данного примера при λ = 12, μ = 8 и n = 2
|
12 |
1,5, |
k |
1,5 |
0,75. |
|
|
82
Среднее число заявок в очереди:
|
|
|
|
|
|
|
|
|
|
|
|
|
n 1p |
|
|
|
|
|
|||||
|
|
|
|
|
|
|
Lоч |
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
nn! 1 |
n |
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
где |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
n |
|
|
|
|
|
n 1 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
p |
1 |
|
|
|
... |
|
|
|
|
|
|
, |
||||||||||
|
|
|
|
|
|
|
|||||||||||||||||
|
0 |
|
|
1! 2! |
|
|
|
|
n! n!(n ) |
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1,5 |
|
|
|
1,52 |
|
|
|
1,53 |
|
|
|
1 |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
p |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0,14285, |
||||
1 |
|
2 |
|
|
2(2 1,5) |
||||||||||||||||||
0 |
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
L |
|
|
|
1,53 0,14285 |
1,9285. |
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
оч |
|
|
|
|
|
|
|
|
|
|
1,5 |
2 |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
2 2 |
1 |
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Среднее время пребывания заявок в очереди и среднее время пребывания заявок в системе вычисляется по формулам Литтла:
T |
|
Lоч |
|
1,9285 |
|
60 9,6424 мин, |
|||
|
|
|
|||||||
оч |
|
|
12 |
|
|
||||
T |
|
L сист |
|
3,4285 |
60 17,1425 мин. |
||||
сист |
|
|
|
12 |
|
|
|||
|
|
|
|
|
Немного изменим модель после блока LEAVE, а точнее, заком# ментируем блоки TERMINATE и GENERATE 480, в команде

45
START поставим число 100 000, чтобы смоделировать прохождение через модель 100 000 заявок:
Запустим выполнение модели (меню Command – Create Simulation) и получим результат. Затем, меняя число транзактов в модели в команде START на 1 000 000 и 10 000 000, получим ре# зультат моделирования соответственно при 1 000 000 и 10 000 000 заявок (в последнем случае придется немного подождать, так как выполнение модели уже ощутимо по времени). Полученные резуль# таты представим в табл. 2.3.
|
|
|
|
|
Таблица 2.3 |
|
|
|
|
|
|
|
|
|
Теоретиче- |
|
Данные моделирования |
|||
Показатель |
|
при числе транзактов |
||||
|
ские данные |
|
|
|
|
|
|
10 000 |
100 000 |
1 000 000 |
|
10 000 000 |
|
|
|
|
||||
k |
0,750 |
0,760 |
0,750 |
0,750 |
|
0,750 |
Lоч |
1,929 |
2,439 |
1,942 |
1,914 |
|
1,926 |
|
|
|
|
|
|
|
Точ |
9,642 |
12,267 |
9,753 |
9,580 |
|
9,628 |
Как видно из табл. 2.3, при увеличении числа испытаний ре# зультаты имитационного моделирования сходятся к теоретиче# ским. Таким образом, можно сделать вывод об адекватности модели и системы моделирования.
Очевидно, что для моделирования многофазных многоканаль# ных устройств с одинаковым временем обработки требований в каждой фазе обслуживания можно использовать несколько пар блоков ENTER и LEAVE с указанием числа каналов и идентифика# тора фазы в операторе STORAGE.
Построим модель многофазной многоканальной системы, не# сколько изменив предыдущий пример. Количество окон для обслу# живания клиентов примем равным трем, изменим интенсивность обслуживания клиентов в окне сотрудниками банка на 5 чел./ч (за# кон распределения оставим прежним) и примем, что все клиенты должны подойти к кассе для оплаты. Количество касс будет две с равномерным законом распределения времени обслуживания со средним значением 8 ± 3 мин. Естественно, необходимо предус# мотреть, что к кассе может быть очередь.

46
Составить модель и определить среднее время ожидания клиен# тов к окну и кассе, среднюю длину очередей и среднюю загрузку со# трудников банка в течение 8#часового рабочего дня. За единицу из# мерения времени принять минуту.
За основу выберем модель из предыдущего примера, немного ее изменив.
В первом операторе BANK STORAGE поменяем количество каналов с двух на три. Введем новый оператор STORAGE с иденти# фикатором CASH и количеством каналов, равным двум:
CASH STORAGE 2.
Далее в блоке ADVANCE (exponential(1,0,7.5)) укажем новое время обслуживания Тоб = 60/5 = 12 мин (exponential(1,0,12)). После блока LEAVE BANK введем новый блок входа клиентов в очередь к кассе QUEUE с именем очереди QUEUE_CASH:
QUEUE QUEUE_CASH.
Затем введем новый блок ENTER с именем CASH (таким же, как и в операторе STORAGE). Этот блок будет моделировать вход клиентов в одну из касс. За ним необходимо поставить блок выхода клиента из очереди в кассу DEPART с именем очереди в кассу QUEUE_CASH. Время обслуживания клиентов в кассе моделиру# ется блоком ADVANCE с указанием среднего времени обслужива# ния и отклонения ADVANCE 8,3. По окончании обслуживания кли# ент выходит из кассы (это моделируется блоком LEAVE CASH) и из банка (блок TERMINATE). Для моделирования рабочего дня используем известные нам блоки GENERATE 480 и TERMINATE 1.
Получим следующую модель:
BANK STORAGE 3 |
;указание числа окон |
CASH STORAGE 2 |
;указание числа касс |
GENERATE (exponential(1,0,5)) |
;поступление посетителей |
QUEUE QUEUE_BANK |
;очередь посетителей в окно |
ENTER BANK |
;посетитель подходит к окну |
DEPART QUEUE_BANK |
;посетитель выходит из очереди |
ADVANCE (exponential(1,0,12)) |
;время обслуживания в окне |
LEAVE BANK |
;окончание обслуживания в окне |
QUEUE QUEUE_CASH |
;очередь в кассу |
ENTER CASH |
;вход в кассу |

|
47 |
DEPART QUEUE_CASH |
;выход из очереди в кассу |
ADVANCE 8,3 |
;время обслуживания в кассе |
LEAVE CASH |
;окончание обслуживания в кассе |
TERMINATE |
;выход посетителя из банка |
GENERATE 480 |
|
TERMINATE 1 |
|
START 1 |
|
После ввода модели в GPSS World запускаем ее на выполнение и получаем результат в окне REPORT (рис. 2.15).
Рис. 2.15. Окно отчета результатов моделирования многоканальной
многофазной системы
В результате моделирования получили:
•число обслуженных клиентов за рабочий день равно 87; •среднее время ожидания в очереди к окну составляет 10,9 мин; •средняя длина очереди к окнам – 2,3 чел.; •средняя загрузка сотрудников – 0,85;
•среднее время ожидания в очереди к кассе – 2,9 мин;

48
•средняя длина очереди к кассе – 0,5 чел.; •средняя загрузка кассиров – 0,75.
Вданной задаче теоретические оценки (при большом числе по# сетителей) можно получить только для первой фазы обслуживания клиентов (для окон), причем теоретический коэффициент загрузки окна равен 0,8.
Если в многофазной системе присутствуют фазы обслуживания
содним каналом, то для моделирования этой фазы можно восполь# зоваться уже известными нам блоками моделирования устройств SEIZE и RELEASE. Например, взяв за основу условия предыду# щей задачи, предположим, что в операционном зале банка работает только одна касса, причем время обслуживания составляет 4 ± 2 мин и оно распределено по равномерному закону. Тогда при составле# нии модели оператор CASH STORAGE 2 не используется, а блоки ENTER CASH и LEAVE CASH заменяются на блоки SEIZE CASH и RELEASE CASH (по аналогии с задачей по моделированию ра# боты магазина).
Вблоке моделирования времени обслуживания клиента ADVANCE необходимо поставить новые значения времени обслу# живания 4,2.
Новая модель:
BANK STORAGE 3 |
;указание числа окон |
GENERATE (exponential(1,0,5)) |
;поступление посетителей |
QUEUE QUEUE_BANK |
;очередь посетителей в окно |
ENTER BANK |
;посетитель подходит к окну |
DEPART QUEUE_BANK |
;посетитель выходит из очереди |
ADVANCE (exponential(1,0,12)) |
;время обслуживания в окне |
LEAVE BANK |
;окончание обслуживания в окне |
QUEUE QUEUE_CASH |
;очередь в кассу |
SEIZE CASH |
;вход в кассу |
DEPART QUEUE_CASH |
;выход из очереди в кассу |
ADVANCE 4,2 |
;время обслуживания в кассе |
RELEASE CASH |
;окончание обслуживания в кассе |
TERMINATE |
;выход посетителя из банка |
GENERATE 480 |
|
TERMINATE 1 |
|
START 1 |
|

49
Полученный результат после моделирования представлен на рис. 2.16.
Рис. 2.16. Окно отчета результатов моделирования трехканальной
двухфазной системы
В результате моделирования получили:
•число обслуженных клиентов за рабочий день равно 88; •среднее время ожидания обслуживания к окнам составляет
5,4 мин; •средняя длина очереди к окнам – 1 чел.;
•средняя загрузка сотрудников – 0,68; •среднее время ожидания в кассе – 6,2 мин; •средняя длина очереди к кассе – 1,1 чел.; •средняя загрузка кассира – 0,71; •среднее время обслуживания в кассе – 3,8 мин.
При разработке модели может возникнуть ситуация, когда не все заявки должны проходить через все блоки модели. Например, очевидно, что не всем клиентам потребуется кассовое обслужива#

50
ние: клиент может покинуть операционный зал, не заходя в кассу. Таким образом, в модели должно быть предусмотрено перенаправ# ление заявок (с некоторой вероятностью) после обслуживания в операционном окне сразу на выход из модели.
Также возможна ситуация, когда время обслуживания каждого канала различно (например, у сотрудников разный стаж работы). Кроме того, в результатах моделирования двух последних задач не указывалось среднее время обслуживания клиентов в окнах.
Для решения этих проблем в системе GPSS World используется блок TRANSFER. Блок TRANSFER предназначен для перенаправ# ления транзактов и может работать в девяти различных режимах. Для наших задач рассмотрим три основных режима работы. Их формат:
TRANSFER А, В, С.
Первый режим работы – это режим безусловной передачи. В этом режиме операнды А и С не задаются, а в операнде В нахо# дится ссылка (метка, имя) на блок, куда направляются все транзак# ты, попавшие в этот блок. Например, при записи TRANSFER,EXT все транзакты из блока TRANSFER направляются в блок, на кото# рый указывает ссылка EXT. Данный режим часто используется для моделирования многоканальной системы.
Второй режим работы – это режим случайной передачи. В этом режиме транзакты направляются из блока TRANSFER в блок, ука# занный в операнде С, с вероятностью α, указанной в операнде А, и, соответственно, с вероятностью 1 – α в блок, указанный в операнде В, а если он не задан, то в следующий блок. При этом режиме опе# ранды А и С обязательны. Причем вероятность задается десятич# ной дробью. Например, блок TRANSFER 0.62,,EXT направит тран# закты с вероятностью 0,62 в блок с меткой EXT и с вероятностью 0,38 в следующий блок.
Третий режим работы – режим логической передачи. Для рабо# ты в этом режиме в операнд A записывается ключевое слово BOTH или ALL. Если в блоке записано ключевое слово BOTH, то тран# закт, поступивший в блок TRANSFER, сначала пытается войти в блок, указанный в поле операнда B (или в следующий блок, если операнд B не задан), а если это не удается (блок в операнде В отка#