Основы языка системы gpss
Блок GENERATE (ГЕНЕРИРОВАТЬ)
Это блок, через который транзакты входят в модель. В одно модели может быть несколько разных блоков GENERATE.
Формат блока:
GENERATE [A],[B],[C],[D],[E]
Операнд |
Значение |
Описание |
Значение по умолчанию* |
А |
Средний интервал времени (число, СЧА)
|
среднее значение интервала поступления |
0 |
В |
Половина поля допуска равномерно распределенного интервала (число, СЧА) |
величина разброса возможных значений относительно среднего значения. (Если операнд В не задается, то интервал времени поступления - детерминированная величина) |
0 |
С |
Смещение интервалов |
момент времени, в который в блоке GENERATE должен появиться первый транзакт. (После этого первого прихода все остальные приходы транзактов возникают в соответствии с распределением, заданным операндами А и В) |
Смещение отсутствует |
D |
Ограничитель транзактов |
ограничитель общего числа транзактов, которое может войти в модель через данный блок GENERATE на протяжении времени моделирования. (Если это число достигнуто, данный блок GENERATE перестает быть активным) |
оо |
Е |
Уровень приоритета транзакта. Возможные значения 0 - 127 |
уровень или класс приоритета каждого из транзактов, которые вводятся в модель через данный блок GENERATE. (Всего существует 128 разных уровней, которые задаются с помощью чисел от О до 127. Чем больше число, тем выше приоритет) |
0 |
Удаление транзактов из модели. Блок TERMINATE
Транзакты удаляются из модели, попадая в блок TERMINATE (ЗАВЕРШИТЬ). В этот момент освобождается память, выделенная под транзакт. Эти блоки всегда позволяют выйти всем транзактам, которые пытаются это сделать. В модели может быть любое количество блоков TERMINATE.
Формат блока:
TERMINATE [A]
Операнд А является величиной уменьшения специального счетчика, который называется счетчиком завершения. Этот операнд задает величину, которая вычитается из счетчика каждый раз, когда транзакт входит в блок TERMINATE. По умолчанию А = 0. Вход транзакта в блок TERMINATE с нулевым значением операнда А не вызывает уменьшения счетчика завершения.
Начало моделирования. Команда START
Интерпретатор начинает моделирование по команде START.
Ее формат:
START A,[B],[C],[D]
В операнде А задается начальное значение счетчика завершения.
Элементы, отображающие одноканальные обслуживающие устройства
Рассмотрим элементы, которые используются для представления обслуживания. Аналогами обслуживающих элементов могут быть люди, механизмы, линии связи и другие объекты реальных систем. В GPSS такие объекты моделируются с помощью устройств, МКУ, логических ключей.
Устройство характеризируется двумя основными свойствами:
1. Каждое устройство в любой момент времени может обслуживать только один транзакт. Если в процессе обслуживания появляется новый транзакт, то он должен:
1) либо подождать своей очереди,
2) либо направиться в другое место,
3) либо, если вновь пришедший транзакт имеет больший приоритет, устройство прерывает текущее обслуживание и начинает обслуживать новый транзакт.
2. Когда транзакт поступает в устройство, он должен пробыть там необходимое для обслуживания время.
Всем устройствам необходимо задавать имена. Они могут быть или числовыми (числа должны быть положительными целыми), или символьными. Во время трансляции символьным именам сам транслятор присваивает числовые значения.
Для того, чтобы использовать одноканальное обслуживающее устройство (прибор), транзакту необходимо выполнить следующие шаги.
Первый шаг. Ждать своей очереди, если это необходимо. Ожидание длится в течение некоторого интервала времени.
Второй шаг. Когда подходит очередь, занять устройство. Событие «занятие устройства» происходит в некоторый момент модельного времени.
Третий шаг. Устройство находится в состоянии занятости до тех пор, пока не закончится обслуживание. Для обслуживания необходим некоторый интервал времени.
Четвертый шаг. Когда обслуживание закончится, освободить устройство. Событие «освобождение устройства» происходит в некоторый момент модельного времени.
Эта последовательность шагов выполняется GPSS при моделировании использования устройства. Второй и четвертый шаги реализуются блоками SEIZE (ЗАНЯТЬ) и RELEASE (ОСВОБОДИТЬ).
Формат блока:
SEIZE A
Операнд |
Значение |
Результат по умолчанию |
А |
Имя (символьное или числовое) занимаемого устройства |
Ошибка |
Предназначением блока RELEASE является изменение состояния ранее занятого устройства с ЗАНЯТОГО на СВОБОДНОЕ. Блок RELEASE никогда не запрещает вход транзакта.
Формат блока:
RELEASE A
Операнд |
Значение |
Результат по умолчанию |
А |
Имя (символьное или числовое) освобождаемого устройства |
Ошибка |
В то время, как транзакты находятся в модели временно, устройства, используемые в модели, существуют в ней в течение всего периода моделирования.
Реализация задержки во времени. Блок ADVANCE
Этот блок осуществляет задержку продвижения транзакта в течение некоторого интервала времени. Обычно этот интервал задается случайной величиной.
В GPSS возможны следующие варианты распределения времени обслуживания:
1) детерминированное (постоянное);
2) равномерное распределение;
3) другие распределения.
Формат блока:
ADVANCE A[,B]
Операнд |
Значение |
Значение по умолчанию |
А |
Среднее время задержки на обслуживание (число, СЧА) |
0 |
В |
Половина поля допуска равномерно распределенного времени задержки (число, СЧА) |
0 |
Блоки ADVANCE можно располагать в любых местах программы, а не только между блоками SEIZE и RELEASE.
Сбор статистики об ожидании. Блоки QUEUE, DEPART
Эти блоки обеспечивают в GPSS возможность автоматического сбора статистических данных, описывающих вынужденное ожидание, которое может происходить время от времени в различных точках модели.
Система моделирования GPSS обеспечивает возможность сбора статистики с помощью такого средства, как регистратор очереди.
При использовании регистратора очереди в тех точках модели, где число ресурсов ограничено, интерпретатор автоматически начинает собирать различную информацию об ожидании с помощью СЧА, а именно:
1) число входов транзактов в очередь;
2) количество транзактов, которые фактически присоединились к очереди и сразу ее покинули, т.е. имели время ожидания равное нулю;
3) максимальная длина очереди;
4) среднее число ожидавших транзактов;
5) среднее время ожидания тех транзактов, которым пришлось ждать.
В модели может быть несколько регистраторов очередей, различающихся именами. Правила присвоения имен те же, что и для устройств. Разработчик вносит регистратор очереди в модель с помощью пары взаимодополняющих блоков:
QUEUE А[,В]
DEPART А[,В]
Операнд |
Значение |
Результат по умолчанию |
А |
Имя очереди, в которую необходимо стать транзакту или которую надо покинуть (числовое или символическое имя, СЧА) |
Ошибка |
В |
Число единиц, на которое увеличивается (уменьшается) длина очереди (число, СЧА) |
1 |
При входе транзакта в блок QUEUE (СТАТЬ В ОЧЕРЕДЬ) выполняются четыре действия:
1) счетчик входов для данной очереди увеличивается на В;
2) длина очереди (счетчик текущего содержимого) для данной очереди увеличивается на В;
3) значение текущей длины очереди хранится в стандартном числовом атрибуте q$<имя очереди>;
4) транзакт присоединяется к очереди с запоминаем ее имени и значения текущего модельного времени.
Транзакт перестает быть элементом очереди только после того, как он переходит в блок DEPART (ПОКИНУТЬ ОЧЕРЕДЬ) соответствующей очереди. Когда это происходит, интерпретатор выполняет такие операции:
1) длина очереди соответствующей очереди уменьшается на В;
2) используя привязку к значению времени, определяет: является ли время, проведенное транзактом в очереди, нулевым; если да, то такой транзакт по определению является транзактом с нулевым пребыванием в очереди и одновременно изменяется счетчик нулевых вхождений;
3) ликвидируется «привязка» транзакта к очереди.
Переход транзакта в блок, отличный от последующего. Блок TRANSFER
В GPSS блок TRANSFER (ПЕРЕДАТЬ) может быть использован в девяти разных режимах. Рассмотрим три основных.
