
- •Лекции по gpss
- •Блоки и транзакты
- •Транзакт входит в блок, функцией которого является удаление транзакта из модели.
- •Транзакт входит в блок, функцией которого является задержка транзакта на некоторое определенное в модели время.
- •Удаление транзактов из модели и завершение моделирования
- •Занятие и освобождение одноканального устройства
- •Когда транзакт поступает в устройство, он должен обслуживаться там некоторое время.
- •Сбор статистики
- •Управление продолжительностью моделирования
- •Логика работы интерпретатора
- •1. Он находится в каком-либо конкретном блоке.
- •2. Он находится (отмечен) в одном или нескольких цепях (списках) gpss.
- •1) Единица модельного времени определяется разработчиком модели, который задает все временные интервалы в одних и тех же, выбранных им, единицах;
- •Занятие и освобождение многоканального устройства (памяти)
- •Абсолютное и относительное время. Команды clear и reset
- •0 Относительное
- •Изменение значений параметров транзактов
- •Числовые и символьные имена. Команда equ
- •Блоки, изменяющие маршруты транзактов
- •Блок transfer
- •Блок test
- •Блок gate
- •Блок loop
- •Команды table и qtable. Таблицы. Блок tabulate
- •Сохраняемые величины и матрицы сохраняемых величин
- •Initial Xj, значение
- •Initial mXj( a,b), значение
- •Арифметические переменные. Команды variable (fvariable)
- •Генераторы случайных чисел
- •1. Разыгрывается случайное число, равномерно распределенное в диапазоне 0;1;
- •2. Полученное число преобразуется в эквивалентное ему значение, но уже принадлежащее интересующей нас выборке.
- •Функции gpssw. Команда function
- •Модель смо
- •Блоки для работы со списками пользователя
- •Моделирование сетей массового обслуживания
- •1,2 Узел – 1 канал,3 узел – 2 канала
- •1,2 Устройства – одноканальные, 3-4 канала
- •Моделирование захвата прибора
- •Логические переключатели
- •Булевские переменные. Команда bvariable
- •Обработка транзактов, принадлежащих одному ансамблю
Изменение значений параметров транзактов
Каждый транзакт может иметь любое число параметров. Блок 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
МКУ требуют явного объявления в модели, поэтому первой командой установлено соответствие имен и лишь потом задается значение емкости.