Блок генерации GENERATE генерирует транзакт и направляет его к следующему блоку программы, поэтому следующим за GENERATE должен быть блок, который всегда может принять транзакт.
Формат блока:
GENERATE <A>,<B>,<C>,<D>,<E>
Интервалы времени между транзактами, поступающими в модель, определяются содержимым полей операндов:
<A> – среднее время между поступлениями транзактов в модель, по умолчанию, среднее время равно 0;
<B> – модификатор времени (описан ниже);
<C> – начальная задержка, т.е. момент времени появления в модели первого транзакта, по умолчанию начальная задержка равна 0;
<D> – общее число транзактов, которые должны быть введены в модель, по умолчанию, в модель вводится неограниченное число транзактов;
<E> – приоритет транзакта (0..127), чем больше значение, тем выше приоритет транзакта, по умолчанию приоритет транзакта равен 0.
В поле <B> может быть задан модификатор времени одного из двух типов:
Модификатор-интервал – определяет целочисленную случайную величину T, принимающую равновероятные значения в диапазоне [<A> - <B>.. <A> + <B>]. Значение <B> должно быть меньше <A>. Например, блок GENERATE 9,2 определяет, что интервал времени между поступлением транзактов в модель, с равной вероятностью принимает значения 7, 8, 9, 10, 11.
Модификатор-функция – определяет интервал времени между поступлением транзактов в модель как целочисленную случайную величину T = <A> * <B>. В поле операнда <B> записывается СЧА – значение функции. Например, блок GENERATE 2, FN$EXPON определяет, что интервал времени между поступлениями транзактов в модель вычисляется как значение функции с именем EXPON, умноженное на 2.
В модели может быть несколько блоков GENERATE в соответствии с тем, какое количество паралелльных процессов имитирует модель.
Блок уничтожения транзакта TERMINATE
Формат блока:
TERMINATE <A>
Транзакты, попадающие в этот блок, выводятся из модели и больше не участвуют в процессе моделирования. В поле операнда <A> записывается либо целое число, либо ничего. Каждый раз, когда транзакт входит в блок TERMINATE, целое число, стоящее в поле операнда <A> вычитается из счетчика завершений, который устанавливается управляющей командой START. Как только значение счетчика завершений обнулится, моделирование закончится. Например, конструкция
TERMINATE 1
START 100
обеспечивает такую длительность моделирования, при которой через программу модели пропускается 100 транзактов.
Если в поле операнда <A> ничего не указано, счетчик завершений не уменьшается и моделирование продолжается бесконечно.
Блок задержки движения транзакта ADVANCE
Формат блока:
ADVANCE <A>,<B>
Задержка движения транзакта во времени имитируется при попадании транзакта в блок ADVANCE, для которого в полях операндов <A> и <B> указываются соответственно среднее время задержки и модификатор времени, использование которого аналогично блоку GENERATE. Например,
ADVANCE 9, 2
ADVANCE 2, FN$EXPON
Управление продолжительностью моделирования. Организация таймеров
Длительность моделирования в программе на GPSS можно задать двумя способами.
1. Определить в управляющей команде START количество транзактов, которые необходимо обработать в модели (этот способ используется для простых моделей, содержащих единственный процесс):
GENERATE…
<программа модели>
TERMINATE 1
START 100
2. С помощью процесса-таймера определить отрезок модельного времени, в течение которого должно осуществляться моделирование. Процесс-таймер должен быть единственным на всю модель, поэтому только в нем в блоке TERMINATE задается непустое поле операнда <A>. Во всех остальных процессах поле операнда <A> в блоке TERMINATE должно быть пустым:
; 1-й процесс
GENERATE…
<программа модели>
TERMINATE
…
; n-й процесс
GENERATE…
<программа модели>
TERMINATE
; процесс-таймер
GENERATE,,,1
ADVANCE 100
TERMINATE 1
START 1
Процесс-таймер реализуется транзактом, который вводится в модель в начале моделирования, задерживается на 100 единиц модельного времени, затем выводится из модели, что приводит к завершению всех процессов модели.
Группа элементов, имитирующих оборудование
В группу элементов, имитирующих оборудование, входят одноканальное устройство, многоканальное устройство, логический переключатель.