Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по самому GPSS - для студентов.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
154 Кб
Скачать
☆

Удаление транзактов из модели и завершение моделирования

TERMINATE [A]

A – число единиц, на которое блок уменьшает содержимое счетчика завершения, определяющего момент окончания моделирования.

Операнд А может быть именем, положительным целым числом, выражением, СЧА. По умолчанию А=0, транзакт уничтожается, а значение счетчика не меняется.

Счетчик завершения – это ячейка памяти, в которой записано число командой START. При достижении счетчика значения нуля моделирование заканчивается. В модели может быть много блоков TERMINATE, но счетчик завершения только один.

Рассмотрим пример, когда блок TERMINATE и команда START используются для управления временем моделирования. Предположим, что единица времени = 1 мин. Необходимо промоделировать 10 часов времени, а затем моделирование должно быть закончено. Время моделирования 10*60=600 единиц.

GENERATE 600

TERMINATE 1

Во всех прочих блоках модели блок TERMINATE использует параметр А по умолчанию. Команда START используется для запуска процесса моделирования.

START A , [B] , C , [D]

A – значение счетчика завершения

В - вывод статистики (NP – стандартный отчет не выводится)

С – не используется

D – если какое-либо число, то списки текущих и будущих событий включаются в стандартный отчет

Занятие и освобождение одноканального устройства

Транзакты в модели требуют обслуживания. Аналогами обслуживающих элементов могут быть люди, механизмы, линии связи и т.д. В GPSS такие объекты моделируются с помощью устройств, памятей, логических переключателей.

Устройство характеризуется двумя свойствами:

  1. Каждое устройство в любой момент времени может обслуживать только один транзакт. Любой новый транзакт либо ждет в очереди, либо направляется в другое место, либо, если новый транзакт с более высоким приоритетом, прерывает текущее обслуживание и занимает устройство.

  2. Когда транзакт поступает в устройство, он должен обслуживаться там некоторое время.

Занятие и освобождение устройства реализуется блоками SEIZE (ЗАНЯТЬ) и RELEASE (ОСВОБОДИТЬ) соответственно, а обслуживание на некоторое время – блоком ADVANCE (ЗАДЕРЖАТЬ)

SEIZE A

RELEASE A

Здесь А – имя (символьное или числовое) занимаемого (освобождаемого) устройства.

Важно – транзакт не может освободить устройство, которое он не занимал !

ADVANCE A, [B]

A – среднее время задержки на обслуживание

В – половина поля допуска равномерно распределенного времени задержки

Пример

ADVANCE (Normal(12,X$Srednee,X$Sreotk))

Время задержки распределено по нормальному закону со средним значением и среднеквадратическим отклонением, предварительно записанным командой INITIAL в сохраняемые ячейки с именами Srednee и Sreotk.

Блок ADVANCE никогда не препятствует входу в него транзакта, в нем может находиться любое число транзактов.

Каждое ОКУ имеет следующие СЧА: F - состояние устройства (0 - свободно,1 - занято); FR - коэффициент использования в долях 1000; FC - число занятий устройства; FT - целая часть среднего времени занятия устройства.

Воспользуемся блоками SEIZE и RELEASE для моделирования одноканальной СМО с ожиданием (рис. ). Теперь блок ADVANCE находится между блоками SEIZE и RELEASE, моделирующими занятие и освобождение устройства с именем SYSTEM, и поэтому в нем может находиться только один транзакт. Транзакты, выходящие из блока GENERATE в моменты занятости устройства, не смогут войти в блок SEIZE и будут оставаться в блоке GENERATE, образуя очередь в списке текущих событий.

GENERATE 100,20

SEIZE SYSTEM

ADVANCE 80,30

RELEASE SYSTEM

TERMINATE 1