Построение имитационной модел
По истечении этого времени транзакт переходит в блок RELEASE 1, в котором выполняется освобождение устройства номер 1, и далее поступает в блок TERMINATE, в котором транзакты уничтожаются. Конечно, это не означает, что клиенты после стрижки тоже уничтожаются, просто клиент уходит из системы, значит, транзакт, моделирующий его, больше нам не нужен. Мы уничтожаем транзакт, чтобы не нужно было описывать его дальнейшее движение и чтобы освободить занимаемую им память компьютера.
В тот момент, когда один транзакт освобождает устройство, другой транзакт, стоящий в очереди, занимает это устройство. Оба действия выполняются в один и тот же момент модельного времени. Когда один транзакт находится в блоке ADVANCE, другие транзакты время от времени появляются в блоке GENERATE и становятся в очередь к устройству. Следовательно, в модели одновременно в разных ее местах движутся несколько транзактов, выполняя те или иные операции, и могут влиять друг на друга и на другие объекты модели.
Здесь мы наблюдаем, параллельное выполнение нескольких процессов в одной программе, в которой и заключается существенное отличие языка GPSS от обычных алгоритмических языков, языков программирования. Это отличие делает язык имитационного моделирования GPSS мощным средством описания реальных систем, так как в реальных системах разные процессы в разных частях системы развиваются одновременно и при этом взаимодействуют между собой.
Но нам нужно не просто составить программу, моделирующую работу парикмахерской. Необходимо еще, чтобы при выполнении модели GPSS собирал статистику об очереди транзактов (клиентов). Для этого нужно включить в модель еще два блока - QUEUE (точка входа в очередь) и DEPART (точка выхода). Мы можем расставлять эти точки в своих моделях в принципе произвольным образом. Это зависит от того, о каком участке системы нам нужна статистика по движению через него потока транзактов.
В данной модели парикмахерской эти точки следует выбирать так:
GENERATE 20,10
QUEUE 1; точка входа в очередь номер 1
SEIZE 1
DEPART 1; точка выхода из очереди номер 1
ADVANCE 19,5
RELEASE 1
TERMINATE
При такой расстановке блоков QUEUE и DEPART получается, что транзакт входит в очередь в момент появления его в системе, а выходит из очереди в момент, когда ему удалось занять устройство, то есть пройти блок SEIZE. Следовательно, очередь 1 будет собирать статистику именно об очереди клиентов к парикмахеру, как она изображена на нашей схеме. И в результате выполнения модели мы узнаем ответ на вопрос, поставленный в задаче: найти среднюю длину очереди клиентов и среднее время ожидания клиентами начала обслуживания.
Но можно расставить блоки QUEUE и DEPART иначе:
GENERATE 20,10
QUEUE 1; точка входа в очередь номер 1
20 SEIZE 1
ADVANCE 19,5
RELEASE 1
DEPART 1; точка выхода из очереди номер 1
TERMINATE
В этом случае статистика по очереди номер 1 будет соответствовать числу всех клиентов в парикмахерской вообще, включая клиента, обслуживаемого парикмахером. Таким образом, очереди, по которым мы можем собирать статистику, не обязательно должны совпадать с теми очередями, которые создаются транзактами, ожидающими освобождения устройств и памятей.
Ввести модель необходимо следующим образом.
. Запустить GPSS.
. Ввести текст программы File ® New ® Model
GENERATE 20,10
QUEUE 1; точка входа в очередь номер 1
SEIZE 1
DEPART 1; точка выхода из очереди номер 1
30 ADVANCE 19,5
RELEASE 1
TERMINATE
GENERATE 480; один день - 480 минут
110 TERMINATE 1
. Проверить программу на ошибки, создать симуляцию Command ® Create Simulation
. Запустить программу, моделировать один раз Command ® Start
. Проанализировать отчет.
START TIME END TIME BLOCKS FACILITIES STORAGES
.000 480.000 9 1 0LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
GENERATE 25 0 0
QUEUE 25 3 0
SEIZE 22 0 0
DEPART 22 0 0
ADVANCE 22 1 0
RELEASE 21 0 0
TERMINATE 21 0 0
GENERATE 1 0 0
TERMINATE 1 0 0ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
22 0.894 19.505 1 23 0 0 0 3MAX CONT. ENTRY ENTRY (0) AVE. CONT. AVE. TIME AVE. (-0) RETRY
1 3 3 25 6 0.505 9.694 12.755 0
В колонке CURRENT_COUNT (счетчик текущих) показано число транзактов, задержанных в каждом блоке в момент останова модели.
Статистика по очередям содержит таблицу, в которой по каждой очереди в модели приводятся следующие основные данные.
В колонке QUEUE (очередь) содержится номер или имя очереди.
В колонке MAX (максимум) - максимальная длина очереди, которая достигалась за все время моделирования. В нашей модели длина очереди максимальная длина равна 3.