Транзакты входят в модель через блок GENERATE (генерировать). При этом ограничений на количество разных блоков GENERATE в одной модели не существует. Интервал времени между последовательными появлениями транзактов из блока GENERATE называют интервалом поступления. В момент входа в модель транзакта через блок GENERATE интерпретатор планирует время поступления следующего транзакта путем розыгрыша случайного числа c соответствующим распределением интервалов поступления на время, равное сумме текущего значения часов модельного времени и разыгранного значения. [4, 5] Разработчик задает функцию распределения интервалов поступления транзактов в блоке GENERATE.
Случайные распределения интервалов поступления транзактов в GPSS делятся на равномерное распределение и другие виды распределений. Рассмотрим самое простое из всех случайных нетривиальных распределений – равномерное.
Транзакты не могут входить в блок GENERATE, так как он сам их генерирует. В GPSS World при попытке транзакта войти в блок GENERATE интерпретатор выдает ошибку.
|
|
Блок GENERATE имеет следующий формат записи [4, 5]:
GENERATE [A],[B],[C],[D],[E],
где А – среднее значение интервала поступления транзактов (число, СЧА, по умолчанию – 0);
В – величина разброса возможных значений относительно среднего значения (число, CЧА, по умолчанию – 0); в случае, если операнд В не задан, интервал поступления является детерминированной величиной;
С – смещение интервалов, момент времени, в который в блоке GENERATE должен появиться первый транзакт (по умолчанию – 0);
D – ограничитель числа транзактов, которые могут войти в модель через данный блок GENERATE на протяжении времени моделирования (по умолчанию – ∞);
Е – уровень приоритета транзакта (возможные значения – целые числа от нуля до 127, чем больше значение, тем выше приоритет, по умолчанию – 0).
Если опущено поле операнда, то транслятор проставляет значение по умолчанию или выдает ошибку (в случае обязательности данного поля). Операнды не могут быть отрицательными числами. В GPSS World операнды А, В, C могут быть действительными числами.
П р и м е р ы задания оператора GENERATE:
GENERATE 10,2 – задание равномерного закона распределения. Значение операнда A равно десяти, В – двум. Интервал поступления транзактов – случайное число из отрезка модельного времени [8; 12], т.е. интервал поступления может приобретать с равной вероятностью одно из пяти значений: 8, 9, 10, 11, 12;
GENERATE 4 – задание детерминированного значения интервалов поступления транзактов. Значение операнда A равно четырем, В – нулю (по умолчанию). Транзакты входят в модель каждые 4 единицы модельного времени.
GENERATE,,,1 – генерирование одного транзакта. Значения операндов A, В, С равно нулю (по умолчанию), D – единице. В нулевой момент времени в модель входит один транзакт.
Кроме блока GENERATE для ввода транзактов в модель используется также блок SPLIT, который создает заданное число копий транзактов, вошедших в блок.