Программирование в GPSS - Сбор статистики с помощью очередейНекоторые виды статистических данных накапливаются симулятором автоматически. Другие виды данных могут быть получены при помощи блоков для сбора статистики . Эти блоки связаны с объектами типа очередь и таблица . Очередь - это множество, в которое транзакты включаются в момент прохождения ими блока QUEUE (войти в очередь) и из которого они исключаются в момент прохождения блока DEPART (выйти из очереди). В поле A этих блоков задается номер очереди. Очередь характеризуется стандартным числовым атрибутом, называемым длиной очереди. В начальный момент времени, когда очередь пуста, ее длина равна нулю. Длина очереди меняется в моменты входа транзактов в блоки QUEUE и DEPART. Если поле В пустое, то при входе транзакта в блок QUEUE длина соответствующей очереди увеличивается на единицу, а при входе в блок QUEUE - на единицу уменьшается. Следовательно, при использовании пустого поля В длина очереди равна текущему числу транзактов в этой очереди. В поле В блоков QUEUE и DEPART можно задавать произвольное число единиц, на которое должна увеличиваться или уменьшаться длина очереди. Транзакты могут проходить любое число блоков QUEUE и DEPART с произвольными значениями полей A и В, чередующихся в любом порядке, лишь бы это не приводило к отрицательным длинам образуемых очередей. Симулятор следит за очередями в модели и подсчитывает для них определенную статистику, которую можно рассмотреть на следующем примере.
Пример. Модель, построенную в условиях примера о работе кассира, изменим путем добавления блока QUEUE 1 перед блоком SEIZE 1 и блока DEPART 1 после блока SEIZE 1. В результате эта модель примет вид:
* МОДЕЛЬ РАБОТЫ КАССИРА SIMULATE GENERATE 20,10,0,200 ;ПРИХОД ЗРИТЕЛЕЙ ADVANCE 15,15 ;ЗНАКОМСТВО С ОБСТ-КОЙ QUEUE 1 ;ВКЛЮЧЕНИЕ В ОЧЕРЕДЬ SEIZE 1 ;ОБРАЩЕНИЕ К КАССИРУ DEPART 1 ;ВЫХОД ИЗ ОЧЕРЕДИ ADVANCE 20,5 ;ПОКУПКА БИЛЕТА RELEASE 1 ;ОСВОБОЖДЕНИЕ КАССИРА TERMINATE 1 ;УХОД ЗРИТЕЛЯ START 200 ;СЧЕТЧИК=200
Отчет об исследовании.
START TIME END TIME BLOCKS FACILITIES STORAGES 0.000 4127.389 8 1 0
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY 1 GENERATE 200 0 0 2 ADVANCE 200 0 0 3 QUEUE 200 0 0 4 SEIZE 200 0 0 5 DEPART 200 0 0 6 ADVANCE 200 0 0 7 RELEASE 200 0 0 8 TERMINATE 200 0 0
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY 1 200 0.984 20.302 1 0 0 0 0 0
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY 1 9 0 200 4 2.574 53.113 54.197 0
В этой модели момент включения каждого транзакта в очередь 1 совпадает с моментом обращения его к блоку SEIZE, т.к. блок QUEUE выполняется в модельном времени мгновенно. В очереди каждый транзакт находится до тех пор, пока не займет устройство 1. Момент занятия устройства совпадает с моментом выхода транзакта из очереди. Таким образом, очередь 1 состоит из транзактов, задержанных при обращении к блоку SEIZE из-за занятости устройства 1. Следовательно, в данной модели очередь 1 имеет естественную интерпретацию как очередь зрителей к кассиру, а длина очереди 1 интерпретируется как число зрителей в очереди . При наличии в модели очередей симулятор выдает статистику по очередям в виде таблицы. Применение блоков QUEUE и DEPART в рассмотренном примере является типичным. Другой типичный способ применения этих блоков состоит в обхватывании ими произвольного сегмента модели, по пребыванию транзактов в котором нужна статистика. Так, рассмотренную в примере модель можно расширить еще одной парой блоков QUEUE и DEPART, а именно: блок QUEUE 2 можно вставить непосредственно после блока GENERATE, а блок DEPART 2 - перед блоком TERMINATE.
|
