Устройства используются при моделировании систем для имитации работы оборудования единичной емкости, например, процессор, канал передачи данных, человек, компьютер. Устройство в любой момент времени может обрабатывать только одно сообщение (транзакт). Если в процесс обслуживания появляется новый транзакт, то он должен:
- либо подождать своей очереди;
- либо направиться в другое место;
- либо прервать обслуживание текущего сообщения.
Для использования одноканального устройства транзакту необходимо выполнить следующие шаги.
1. ждать очереди, если необходимо;
2. когда подходит очередь занять устройство;
3. устройство находится в состоянии занятости, пока не закончится обслуживание, для обслуживания необходим некоторый интервал времени;
4. когда обслуживание закончится, освободить устройство.
Второй и четвертый шаги реализуются блоками SEIZE и RELEASE.
Блок SEIZE имеет следующий формат:
SEIZE A
Свободный блок SEIZE позволяет вошедшему в него сообщению занять указанное устройство. Блок SEIZE задерживает сообщение, если устройство занято или находится в состоянии недоступности.
В поле А задается номер (имя) занимаемого устройства.
Сообщение, занявшее устройство, затем пытается перейти к следующему по номеру блоку. Устройство остается занятым до тех пор, пока занимающее его сообщение не войдет в соответствующий блок RELEASE. Прежде чем освободить устройство, сообщение может пройти через неограниченное число блоков.
Блок RELEASE имеет следующий формат:
RELEASE A
Блок RELEASE предназначен для освобождения устройства тем сообщением, которым В поле А задается номер (имя) освобождаемого устройства.
Транзакты обслуживаются устройствами в течение некоторого промежутка времени. Для моделирования такого обслуживания, т.е. для задержки транзактов на определенный отрезок модельного времени (реализация шага 3), служит блок ADVANCE (задержать), имеющий следующий формат:
ADVANCE A,B
Операнды в полях A и B имеют тот же смысл, что и в соответствующих полях блока GENERATE. Следует отметить, что транзакты, входящие в блок ADVANCE, переводятся из списка текущих событий в список будущих событий, а по истечении вычисленного времени задержки возвращаются назад, в список текущих событий, и их продвижение по блок-схеме продолжается. Если вычисленное время задержки равно 0, то транзакт в тот же момент модельного времени переходит в следующий блок, оставаясь в списке текущих событий.
Например, транзакты, поступающие в модель из б лока GENERATE через случайные интервалы времени, имеющие равномерное распределение на отрезке [60;140], попадают в блок SEIZE и занимают устройство с номером 1. Далее в блоке ADVANCE определяется случайное время задержки транзакта, имеющее равномерное распределение на отрезке [30;130], и транзакт переводится в список будущих событий. По истечении времени задержки транзакт возвращается в список текущих событий и входит в блок RELEASE и освобождает устройство 1. Заметим, что в списке будущих событий, а значит и в блоке ADVANCE может одновременно находиться произвольное количество транзактов.
GENERATE 100,40
SEIZE 1
ADVANCE 80,50
RELEASE 1
В рассмотренных выше примерах случайные интервалы времени подчинялись равномерному закону распределения вероятностей. Для получения случайных величин с другими распределениями в GPSS используются вычислительные объекты: переменные и функции.
Задания для самостоятельной работы:
- Приведите фрагмент программы, который моделирует обработку детали на станке. Название устройства – MACHINE, время обработки – 10 ед. модельного времени.
- Напишите сегмент программы, который описывает процесс шлифования изделия. Шлифование занимает 3-5 минут, в каждый момент времени может обрабатываться только одно изделие. Единица модельного времени – 1 секунда.