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

Изменение значений параметров транзактов

Каждый транзакт может иметь любое число параметров. Блок ASSIGN присваивает значение параметру транзакта или модифицирует его. Формат блока:

ASSIGN A, B, [C]

A – номер параметра, которому присваивается значение, может быть числом, СЧА и СЧА$параметр, а также следующим за ним знаком + или -, если нужно увеличить или уменьшить значение параметра.

В – определяет значение, которое нужно добавить, вычесть или которым следует заменить значение в параметре, заданном операндом А.

С – задает номер модификатора-функции, при этом значение операнда В умножается на значение модификатора-функции.

Примеры:

ASSIGN 1,755.3

ASSIGN 4+,Q5

ASSIGN 3-,5.7,7

ASSIGN Tr1-,(Normal(32,sredn,otkl)), Fexp

В 1 примере параметру 1 присваивается значение 755.3,

во 2 примере к значению параметра 4 прибавляется значение длины текущей очереди номер 5,

в 3 примере из значения параметра 3 вычитается произведение 5.7 на предварительно вычисленное значение функции номер 7,

в 4 примере вычисляется выражение в скобках (значение случайной величины, имеющей нормальное распределение с соответствующими параметрами), перемножается на значение функции Fexp и полученное произведение вычитается из значения параметра с именем Tr1.

Для записи текущего модельного времени в заданный параметр транзакта служит блок MARK (отметить), имеющий следующий формат:

MARK A

В поле A указывается номер или имя параметра транзакта, в который заносится текущее модельное время при входе этого транзакта в блок MARK. Содержимое этого параметра может быть позднее использовано для определения  транзитного времени  пребывания транзакта в какой-то части модели с помощью СЧА с названием MP.

Под транзитным временем понимается интервал времени, за который транзакт проходит часть модели от одной заданной точки до другой. Интервал же времени, в течение которого транзакт находится в модели, называется резидентным временем.

Например, если на входе участка модели поместить блок

MARK MARKER , ,

то на выходе некоторого участка СЧА MP$MARKER будет содержать разность между текущим модельным временем и временем, занесенным в параметр MARKER блоком MARK, т.е. транзитное время на этом участке.

Если поле A блока MARK пусто, то текущее время заносится на место отметки времени входа транзакта в модель, используемой при определении резидентного времени транзакта с помощью СЧА M1.

Для изменения приоритета транзакта служит блок PRIORITY (приоритет), имеющий следующий формат:

PRIORITY A, B

В поле A записывается новый приоритет транзакта. В поле B может содержаться ключевое слово BU, при наличии которого транзакт, вошедший в блок, помещается в списке текущих событий после всех остальных транзактов новой приоритетной группы, и список текущих событий просматривается с начала. Использование такой возможности будет рассмотрено ниже.

Числовые и символьные имена. Команда equ

Интерпретатор, встретив символьные имена, ставит им в соответствие числовые – целые числа, следующие подряд и начинающиеся с 10 000. Программист может использовать наряду с символьными именами и числовые, он должен поставить в соответствие символьным именам числовые значения. Для этого рекомендуется использовать целые числа из диапазона от 1 до 9999. Соответствие символьного имени числовому можно определить с помощью команды EQU (ОПРЕДЕЛИТЬ ЭКВИВАЛЕНТНОСТЬ):

Pribor_1 EQU 1

Установлена эквивалентность символьного имени Pribor_1 числовому имени 1.

Еще пример:

Stor EQU 2

Stor STORAGE 100

МКУ требуют явного объявления в модели, поэтому первой командой установлено соответствие имен и лишь потом задается значение емкости.