Моделирование одноканальных устройств

Устройства используются при моделировании систем для имитации работы оборудования единичной емкости, например, процессор, кана­л передачи данных, человек, компьютер. Устройство в любой момент времени может обрабатывать только одно сообщение (транзакт). Если в процесс обслуживания появляется новый транзакт, то он должен:

- либо подождать своей очереди;

- либо направиться в другое место;

- либо прервать обслуживание текущего сообщения.

Для использования одноканального устройства транзакту необходимо выполнить следующие шаги.

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 секунда.

Наши рекомендации