- •Методическая часть
- •Задание № 2 Изучение основных блоков в системе имитационного моделирования gpss World Теоретические сведения
- •Задание № 3 Изучение основных окон и команд в системе gpss World Теоретические сведения
- •Методические указания
- •Функции типовых распределений вероятностей
- •Системные числовые атрибуты в gpss (System Numerical Attributes)
- •Стандартный отчёт
Задание № 3 Изучение основных окон и команд в системе gpss World Теоретические сведения
Назначение Окон
В системе GPSS World используются следующие окна.
• Окно Blocks – просмотр сущностей Block
• Окно Expressions – просмотр любого выражения PLUS, исполняемого в процесс моделирования
• Окно Facilities – просмотр сущностей Facility
• Окно Logicswitches – просмотр сущностей Logicswitch
• Окно Matrix – просмотр сущностей Matrix
• Окно Plots – просмотр графиков выражений PLUS
• Окно Queues – просмотр всех модельных сущностей Queue
• Окно Savevalues – просмотр сущностей Savevalue, определенных в модели
• Окно Storages – просмотр сущностей Storage
• Окно Table – просмотр сущностей Table и Qtable в виде гистограмм
В дополнение к окнам, обновляемым динамически, в системе GPSS World можно сделать статические снимки одного Транзакта, цепей CEC и FEC, группы Транзактов и Чисел, а также пользовательских цепей (Userchains).
Команды системы GPSS World
Команды системы GPSS World предназначены для построения и выполнения моделей, а так же для определения некоторых сущностей GPSS.
Список команд:
• BVARIABLE – определяет сущность Boolean Variable (Логическая Переменная)
• CLEAR – обнуляет статистику и освобождает Транзакты
• CONDUCT – проводит Эксперимент
• CONTINUE – продолжает процесс моделирования
• EQU – присваивает значение пользовательской Переменной
• EXIT – завершает сеанс работы в системе GPSS World
• FUNCTION – определяет сущность Function (Функция)
• FVARIABLE – определяет сущность Fvariable
• HALT – прерывает моделирование и удаляет все Команды в очереди
• INCLUDE – считывает и транслирует вспомогательный файл модели
• INITIAL – инициализирует или модифицирует сущности Logicswitch, Savevalue или Matrix
• INTEGRATE – автоматически помещает разность времени в пользовательскую Переменную
• MATRIX – определяет сущность Matrix
• QTABLE – определяет сущность Qtable
• REPORT – запрашивает текущий отчет
• RESET – обнуляет статистику модели
• RMULT – устанавливает значения для первых 7 генераторов случайных величин
• SHOW – обрабатывает и выводит на экран значение Выражения
• START – устанавливает значение счётчика «Termination Count» и запускает модель
• STEP – пытается входить в Блоки ограниченное число раз
• STOP – устанавливает условие Stop при попытке войти в Блоки
• STORAGE – определяет сущность Storage – многоканальное устройство
• TABLE – определяет сущность Table – таблицу
• VARIABLE – определяет сущность Variable – переменную
Рассмотрим на примерах некоторые команды и окна.
Методические указания
Команда VARIABLE
Создадим новую модель в GPSS и запишем в неё только 1 блок:
**************************************************************
* Пример переменной
**************************************************************
Var1 Variable 3#3/3
Выполним команду Command/Create Simulation.
В первой строке программы Блок Variable задаёт переменную Var1.
Её значение задано с помощью выражения 3#3/3, в котором # означает умножение, / означает деление.
Выражения могут состоять из констант, переменных, состояние которых изменяется в процессе моделирования.
Команда SHOW
Просмотр значений переменных выполняет команды SHOW
ВЫБЕРИТЕ Command / SHOW
В диалоговом окне
ВВЕДИТЕ V$Var1
НАЖМИТЕ OK
Запись V$Var1 содержит V (принадлежность к SNA), $ - соединительный символ, и задаёт выдачу значения переменной Var1.
В статусной строке главного окна видно подсчитанное значение переменной Var1.
В случаях, когда используется имя объекта, система GPSS World назначает этому имени уникальный системный номер.
Если имя используется для обозначения сущности, не надо больше ничего делать. Если имени соответствует определённое значение, надо использовать выражение EQU для того, чтобы присвоить имени значение до того, как сущность будет создана.
В последнем случае система GPSS World присваивает свое собственное значение имени, которое видно в статусной строке.
ВНИМАНИЕ! Если изменить имя после определения сущности, то в дальнейшем нельзя использовать это имя для того, чтобы обращаться к старой сущности. Изменение имени не приводит к переопределению сущности. Любая старая сущность будет иметь номер, отличный от нового значения имени. Нумерацией занимается система GPSS World.
Пример.
Простая телефонная система имеет две внешние линии. Входящие звонки поступают каждые 100±60 секунд. Когда линия занята, звонящий производит повторный набор номера по истечении 5±1 минут. Длительность разговора составляет 3±1 минуты.
Требуется построить таблицу распределения моментов времени, в которые звонящие смогли дозвониться. Сколько времени уйдет на 200 успешных звонков?
Создадим новую модель в GPSS и запишем в неё следующие блоки:
**************************************************************
* Модель телефонной станции с двумя линиями
* Время измеряется в минутах
**************************************************************
Sets STORAGE 2 ; система с 2 каналами (линиями)
Transit TABLE M1,.5,1,20
; создаём таблицу Transit для хранения времени между вызовом и завершением разговора
GENERATE 1.667,1 ; генерируем вызовы в минутах
Again GATE SNF Sets,Occup ; проверка занятости линий
ENTER Sets ; занять линию
ADVANCE 3,1 ; разговор 3+-1 мин.
LEAVE Sets ; освободить линию
TABULATE Transit ; поместить время в таблицу
TERMINATE 1 ; удалить транзакт
Occup ADVANCE 5,1 ; ждать 5+- 1 минут
TRANSFER ,Again ; переход на блок с меткой Again для повтора вызова
Подробно рассмотрим каждый Блок модели.
STORAGE – описывается 2-х канальное устройство, используется для представления двух телефонных линий.
TABLE – определяется таблица Transit для сохранения времени поступающих звонков. В дальнейшем по таблице будет построена гистограмма. Табулирование значения атрибута SNA «time in simulation» происходит перед тем, как Транзакт входит в Блок TERMINATE. Это значение представляет собой интервал времени, проходящий между первой попыткой набора номера и успешным завершением разговора.
GENERATE – Транзакт, представляющий телефонный звонок, создается каждые 100±60 секунд.
GATE – отправляет Транзакт в Блок Occupied, когда обе линии заняты. В этом случае звонящий должен подождать 5+-1 минут перед повторным набором номера.
ENTER – если задействовано 0 или 1 линий, то Транзакт входит в Блок ENTER, занимая линию. После этого остальным Транзактам будем закрыт доступ в Блок GATE. Каждый Транзакт, проходящий в Блок ENTER, означает успешное соединение с вызываемым абонентом.
ADVANCE – Транзакт входит в Блок ADVANCE, который эмулирует звонок длительностью 180±60 секунд. Он будет оставаться в Блоке ADVANCE до тех пор, пока не пройдет указанный интервал модельного времени.
LEAVE – означает освобождение одной линии для других Транзактов.
TABULATE – добавляет время, потраченное на звонок, в таблицу Transit.
TERMINATE – выводит Транзакт из моделирования после того, как звонок был успешно завершён.
ADVANCE – Транзакт приходит в Блок ADVANCE, помеченный Occupied, когда ему не удалось занять линию. В этом случае он представляет звонящего, которому следует подождать перед тем, как произвести повторный набор номера.
TRANSFER – Блок TRANSFER посылает Транзакт к Блоку GATE, помеченному Again. Звонящий пытается повторить набор номера.
Транзакты представляют начатые, но не завершённые звонки. Если обе линии заняты, Блок GATE, помеченный Again, посылает для ожидания в Блок ADVANCE, примерно на 5 минут. После задержки Транзакт возвращается в Блок GATE и пробует пройти ещё раз. Успешный звонок проходит через Блок GATE, задерживается на время разговора и затем покидает модель.
Формирование файла отчёта
Сохраним модель
ВЫБЕРИТЕ File / Save
В диалоговом окне
НАБЕРИТЕ Telephon
Далее необходимо создать объект Simulation
ВЫБЕРИТЕ Command / Create Simulation
Затем
ВЫБЕРИТЕ Command / START
В диалоговом окне заменим значение 1 на 200
ВВЕДИТЕ 200
и
НАЖМИТЕ OK
Моделирование будет завершено после того, как 200 Транзактов войдут в Блок TERMINATE. Они представляют собой 200 успешно завершённых звонков.
GPSS World сохранит отёт в файл Telephon.1.1. Цифры в названии отчёта отражают количество сохранённых объектов Simulation и количество созданных ранее отчётов.
Отчёт автоматически отображается в окне. Если сохранить отчёт, закрыв окно, то позднее его можно открыть, используя команду меню File / Open. Отчёты GPSS World сохраняются в специальном формате, поэтому можно скопировать его в текстовый редактор и отредактировать.
End Time показывает время к моменту успешного завершения 200-го звонка. Прогоны модели будут давать немного различные результаты, в зависимости от распределения случайных величин, например, 359.156 минут.
Исследование модели
Закроем окно Report.
Исследуем значения СЧА с помощью окна Expression. Проверим итоговое модельное время
ВЫБЕРИТЕ Window / Simulation Window / Expression Window
Теперь, в поле Label
ВВЕДИТЕ Time
В поле Expression
ВВЕДИТЕ AC1
Это позволит увидеть текущее время.
ЩЕЛКНИТЕ НА кнопке View
и
ЩЕЛКНИТЕ НА кнопке Memorize
Далее смотрим коэффициент загрузки устройства, представленный числом, которое надо поделить на 1000, чтобы получить истинное значение.
В диалоговом окне заменим текущее значение в поле Label
ВВЕДИТЕ Util
в поле Expression
ВВЕДИТЕ SR$Sets
ЩЕЛКНИТЕ НА кнопке View
ЩЕЛКНИТЕ НА кнопке Memorize
Также добавим среднее время занятости телефонной линии.
В диалоговом окне заменим текущее значение в поле Label
ВВЕДИТЕ Avg.C T
в поле Expression
ВВЕДИТЕ ST$Sets
ЩЕЛКНИТЕ НА кнопке View
ЩЕЛКНИТЕ НА кнопке Memorize
НАЖМИТЕ OK
Телефонные линии используются на 84% от возможной ёмкости. Не смотря на то, что часть времени была не использована, задержки в очереди могут быть недопустимы.
Закроем окно Expression.
Откроем несколько графических окон.
ВЫБЕРИТЕ Window / Simulation Window / Storages Window
Окно Storages в расширенном режиме просмотра. Здесь так же отображается значение занятости устройств, составляющее 84%.
Видно, что в разное время моделирования были заняты 0, 1 или 2 линии.
Окно Table позволяет увидеть гистограмму интервалов времени, потраченных на успешный звонок
ВЫБЕРИТЕ Window / Simulation Window / Table Window
Поскольку в модели только одна таблица, в выпадающем меню по умолчанию будет выбран TRANSIT.
НАЖМИТЕ OK
Данное окно предоставляет ту же информацию, что и таблица в отчёте.
Среднее время разговора составляет 3 минуты в соответствии с атрибутом ST из окна Expression, но общее среднее время, включающее повторный дозвон, составляет 14.27, что видно из окна Table. Звонящие тратят огромное количество времени на повторную попытку позвонить.
Выясним местоположение Транзактов.
ВЫБЕРИТЕ Window / Simulation Window / Blocks Window
Обратите внимание, что 15 человек ждут попытки перезвонить.
В Блок ADVANCE входил 561 Транзакт. Но при этом было произведено только лишь 200 успешных звонков.
Можно проследить за окном Blocks, используя клавишу [F5]. Пошагово отслеживаем процесс моделирования, делая 15-20 шагов. Видно, что большая часть звонящих обнаруживает, что линия занята, и становится в очередь ожидания.
Закроем все окна, кроме Blocks, Journal и Model.
Окно Expression
Откроем Expression, восстановив использованные ранее выражения, а также добавив количество активных Транзактов.
ВЫБЕРИТЕ Window / Simulation Window / Expression Window
В диалоговом окне, в поле Label
ВВЕДИТЕ Call no.
в поле Expression
ВВЕДИТЕ XN1
ЩЕЛКНИТЕ НА кнопке View
ЩЕЛКНИТЕ НА кнопке Memorize
Перед тем как открыть окно, следует вернуть все сохраненные в прошлый раз выражения. Для каждого выражения из списка сохраненных выражений
ЩЕЛКНИТЕ НА кнопке Expression
затем
ЩЕЛКНИТЕ НА кнопке View
Когда все выражения окажутся в списке Window Contents
НАЖМИТЕ OK
Закроем окно Expressions.
Команда моделирования «вручную»
Можно ввести выражение Block, используя диалоговое окно Custom Command, расположенное в меню Command главного окна.
Когда объект Simulation получает выражение Block, он инициирует попытку входа Активным Транзактом во временный Блок, описываемый этим выражением. Этот метод называется моделированием вручную.
Такой Блок не помещается в транслированную модель, поэтому сущность Blocks не становится постоянным членом модели.
Обнулим статистику. В главном меню
ВЫБЕРИТЕ Command / Clear
Проследим за окном Blocks.
Далее
ВЫБЕРИТЕ Command / Custom
ВВЕДИТЕ RMULT1
Т.о. обнулён генератор случайных чисел под номером 1, т.к. команда Clear не делает этого.
НАЖМИТЕ OK
Обратите внимание на записи в Журнале!
В окне Blocks подводим курсор мыши к последнему Блоку модели (Блок TRANSFER)
ЩЕЛКНИТЕ НА Блоке Transfer
и
ЩЕЛКНИТЕ НА кнопке Place панели Debug
Расположим окна Blocks, Journal и Expression таким образом, чтобы все они были видны.
ВЫБЕРИТЕ Command / START
В диалоговом окне заменим значение 1 на 200,
НАЖМИТЕ OK
Моделирование будет приостановлено при первой же попытке войти в Блок TRANFSER. Это означает, что клиент не смог дозвониться. Продолжаем моделировать.
НАЖМИТЕ [F2]
ещё 4 раза после того, как модель будет приостановлена по условию Stop.
Модель будет приостанавливаться каждый раз, когда клиенту необходимо подождать.
В окне Journal видны отладочные сообщения, обозначающие номер остановившегося Транзакта.
Поскольку в модели присутствует только один Блок GENERATE, можно по номеру Транзакта увидеть, как часто клиенту необходимо ждать и есть ли в очереди клиенты, повторно ожидающие освободившейся линии.
Убираем условие Stop. В окне Blocks
ЩЕЛКНИТЕ НА Блоке Transfer
ЩЕЛКНИТЕ НА кнопке Remove панели Debug
Закрываем окна Blocks и Expression.
Окно Storages
Открываем окно Storages в упрощенном режиме просмотра.
ВЫБЕРИТЕ Window / Simulation Window / Storages Window
В главном меню
ВЫБЕРИТЕ View / Entity Details
для того чтобы включить упрощённый режим.
Одновременно смотрим построение гистограммы задержек
ВЫБЕРИТЕ Window / Simulation Window / Table Window
НАЖМИТЕ OK
Продолжим работу модели
НАЖМИТЕ [F2]
Таблица Transit является динамической гистограммой, состояние которой можно посмотреть в любой момент. Она показывает, что большое количество клиентов не обслуживаются в данный момент.
Команды CLEAR, Custom
Теперь моделируем 4 линии связи вместо двух.
Команда CLEAR необходима для переопределения многоканального устройства
ВЫБЕРИТЕ Command / CLEAR
затем
ВЫБЕРИТЕ Command / Custom
В диалоговом окне
ВВЕДИТЕ Sets Storage 4
НАЖМИТЕ [Enter]
На следующей строке
ВВЕДИТЕ RMULT1
НАЖМИТЕ OK
Эта последовательность команд переопределит количество телефонных линий. Действие будет зафиксировано в журнале.
Запускаем моделирование
ВЫБЕРИТЕ Command / START
В диалоговом окне заменим значение 1 на 200,
НАЖМИТЕ OK
Коэффициент занятости телефонных линий значительно меньше, чем виденный ранее в секции Storages отчёта.
Изучаем гистограмму продолжительности звонков
ВЫБЕРИТЕ Window / Simulation Window / Table Window
НАЖМИТЕ Ok
Здесь положение улучшилось: ни одному клиенту не приходилось перезванивать. Четыре линии работают лучше, чем две.
Но такое решение проблемы может оказаться неоправданно дорогим.
Смотрим, как будут работать 3 телефонных линии:
ВЫБЕРИТЕ Command / CLEAR
затем
ВЫБЕРИТЕ Command / Custom
В диалоговом окне
ВВЕДИТЕ Sets Storage 3
НАЖМИТЕ [Enter]
ВВЕДИТЕ RMULT1
НАЖМИТЕ OK
Моделируем
ВЫБЕРИТЕ Command / START
В диалоговом окне заменим значение 1 на 200
НАЖМИТЕ OK
Наблюдаем за графическими окнами, затем их закрываем, ждём окончания моделирования.
Три линии справляются достаточно эффективно.
В отчёте следует выяснить, какому числу клиентов пришлось перезвонить.
STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY
SETS 3 1 0 3 202 1 1.845 0.615 0 0
TABLE MEAN STD.DEV. RANGE RETRY FREQUENCY CUM.%
TRANSIT 3.397 1.936 0
Статистика Table показывает, что среднее время Transit составляет всего лишь 3.397 минуты. Если не ожидается увеличение количества звонков, то данные показатели можно считать вполне удовлетворительными.
ПРИЛОЖЕНИЕ 1
Блок GENERATE предназначен для создания потока транзактов и может содержать до 5 операндов:
GENERATE A, B, C, D, E
A – временной интервал появления транзакта;
B – половина интервала возможного отклонения времени появления;
C – начальная временная задержка;
D – максимальное число транзактов, которое должно быть сгенерировано;
E – приоритет генерируемых транзактов.
Примеры:
GENERATE 14
означает, что каждый новый транзакт появляется непрерывно через каждые ровно 14 единиц времени и имеет приоритет 0.
GENERATE 14,5
означает, что каждый новый транзакт появляется непрерывно через каждые 14±5 единиц времени (с равномерным распределением времени появления в интервале от 9 до 19 единиц времени) и имеет приоритет 0.
GENERATE 14,5,100
означает, что первый транзакт появится через 100 единиц времени, а каждый последующий новый транзакт будет появляться непрерывно через каждые 14±5 единиц времени (с равномерным распределением времени появления в интервале от 9 до 19 единиц времени) с приоритетом 0.
GENERATE 14,5,100,86
означает, что первый транзакт появится через 100 единиц времени, а каждый последующий новый транзакт будет появляться непрерывно через каждые 14±5 единиц времени (с равномерным распределением времени появления в интервале от 9 до 19 единиц времени), всего будет сгенерировано 86 транзактов, каждый - с приоритетом 0
GENERATE 14,5,100,86,47
означает, что первый транзакт появится через 100 единиц времени, а каждый последующий новый транзакт будет появляться непрерывно через каждые 14±5 единиц времени (с равномерным распределением времени появления в интервале от 9 до 19 единиц времени), всего будет сгенерировано 86 транзактов, каждый - с приоритетом 47.
Любой из указанных операндов может быть опущен: если опускаются все последние операнды, то они не записываются; если опускается промежуточный операнд, то вместо него ставится запятая, например:
GENERATE 14,,,,7
означает, что каждый новый транзакт появляется непрерывно через каждые ровно 14 единиц времени и имеет приоритет 7.
Операндами могут быть числа, переменные, в качестве которых могут выступать СЧА, функции FUNCTON и переменные VARIABLE.
GENERATE (Exponential(1,0,60))
в поле операнда А используется встроенное экспоненциальное распределение вероятностей, причём
1 – номер генератора случайных чисел,
0 – параметр λ экспоненциального распределения,
60 – параметр β экспоненциального распределения.
GENERATE (Normal(1,22,3))
в поле операнда А используется встроенное нормальное распределение вероятностей, причём
1 – номер генератора случайных чисел,
22 – параметр a нормального распределения,
3 – параметр σ нормального распределения.
Generate (Exponential(1,0,65))
генерирует тракзакты по экспоненциальному закону распределения, в среднем 65 тракзактов.
Блок TERMINATE предназначен для вывода транзакта из модели (с освобождением занимаемых им ячеек памяти) и уменьшения значения Счётчика завершения может содержать до 1 операнда или ни одного:
TERMINATE A
A – число, на которое уменьшается значение Счётчика завершения, задаваемое перед началом моделирования командой START, при вхождении транзакта в блок TERMINATE.
В модели может быть много блоков TERMINATE.
В сложных моделях, как правило, большинство блоков TERMINATE не имеют операнда, а потому только уничтожают транзакты.
Если не будет ни одного блока TERMINATE с ненулевым операндом, то программа сможет работать бесконечно с возможностью прерывания её командой HALT. Возможна также работа в пошаговом режиме STEP. Но в этом случае не появляется автоматически Стандартный отчёт. Для автоматического окончания работы хотя бы один блок TERMINATE должен иметь ненулевой операнд с воздействием на уменьшение значения Счётчика завершения.
Блок TRANSFER предназначен для измененения направления движения транзактов, может работать в 9 режимах и имеет следующий синтаксис:
TRANSFER A,B,C,D
Операнды:
A – указатель режима, который может иметь значения (ключевые слова):
пробел – безусловный переход;
число с точкой – статистический режим;
BOTH – выбор незанятого устройства из двух;
ALL – выбор незанятого устройства из нескльких;
PICK – случайный выбор направления из нескольких;
P – переход по значению параметра;
FN – переход по значению функции;
SIM – переход по индикатору задержки;
SBR – переход на подпрограмму с возможностью возврата;
B,С,D – параметры режимов (для каждого режима – свои).
Режим безусловного перехода
В этом режиме входящий в блок TRANSFER транзакт направляется на указанную метку:
TRANSFER ,met
Список операндов начинается с запятой; это означает, что вместо операнда A записан пробел как указатель режима безусловного перехода. На месте операнда B размещается метка met, на которую перенаправляется транзакт.
Статистический режим
Входящий в блок TRANSFER транзакт направляется на одну из двух меток с заданной вероятностью:
TRANSFER A,met1,met2
Здесь:
A – десятичная дробь (число с точкой), показывающее, какую долю транзактов необходимо направить на метку met2; на метку met1 направляется (1-A) доля транзактов;
met1 – метка, на которую направляется (1-A) транзактов;
met2 – метка, на которую направляется A транзактов.
Режим BOTH – выбор незанятого устройства из двух
Входящий в блок TRANSFER транзакт направляется на один из двух блоков модели, готовых принять транзакт:
TRANSFER BOTH,met1,met2
Здесь:
met1 – первая метка;
met2 – вторая метка.
В режиме BOTH при входе транзакта в блок TRANSFER начинается просмотр меток (вначале первая, затем вторая) и проверяется, может ли транзакт войти в блок, помеченный проверяемой меткой. Эти метки могут соответствовать различным типам блоков. Некоторые блоки (SEIZE, ENTER) могут находиться в режиме "свободно" или "занято". Именно в этом случае целесообразно применение блока TRANSFER в режиме BOTH. Если блок с проверяемой меткой свободен (в блоке SEIZE нет транзактов, в блоке ENTER транзактами заняты не все каналы), то активный транзакт направляется в этот блок. Если блок с проверяемой меткой занят транзактами (в блоке SEIZE присутствует 1 транзакт, в блоке ENTER транзактами заняты все каналы), то транзакт остаётся в блоке TRANSFER и начинает проверяться блок, помеченный второй меткой. Если и второй блок занят, то транзакт остаётся в блоке TRANSFER до следующей проверки, пока не освободится какой-либо блок из помеченных метками.
Блок TRANSFER может удерживать любое количество транзактов, которые внутри него выстраиваются в очередь с учётом приоритетов.
Режим ALL – выбор незанятого устройства из нескольких
Входящий в блок TRANSFER транзакт направляется на один из нескольких блоков модели, готовых принять транзакт:
TRANSFER ALL,met1,met2,N
Здесь:
met1 – метка первого целевого блока в диапазоне;
met2 – метка последнего целевого блока в диапазоне;
N – приращение (в строках).
Режим PICK – случайный выбор направления из нескольких
Входящий в блок TRANSFER транзакт направляется на один из блоков модели, выбранный случайным образом:
TRANSFER PICK,met1,met2
Операнды:
met1 – метка первого целевого блока в диапазоне;
met2 – метка последнего целевого блока в диапазоне
Режим P – переход по значению параметра
Входящий в блок TRANSFER транзакт направляется на один из блоков модели, выбранный по параметру:
TRANSFER P,Param,met
Операнды:
Param – номер или имя параметра активного транзакта, содержащего целые число;
met – метка: к номеру строки с этой меткой прибавляется значение Param, чтобы получить номер строки, на которую направляется транзакт.
Режим FN – переход по значению функции
В этом режиме входящий в блок TRANSFER транзакт направляется на один из блоков модели, выбранный по значению функции:
TRANSFER FN,Fun,N
Операнды:
Fun – номер или имя функции, в которой заданы метки для перехода транзактов;
N – целое число, прибавляемое к строке с меткой, определённой с помощью Fun, чтобы получить номер строки, на которую направляется транзакт.
Режим SIM – переход по значению индикатора задержки
В этом режиме входящий в блок TRANSFER транзакт направляется на один из блоков модели, выбранный в зависимости от состояния Индикатора задержки:
TRANSFER SIM,Loc1,Loc2
Операнды:
Loc1 – строка, на которую транзакт направляется, если Индикатор задержки выключен;
Loc2 – строка, на которую транзакт направляется, если Индикатор задержки включен.
Режим SIM (одновременный) обеспечивает возможность передачи транзакта с учётом того, был ли он задержан.
ПРИЛОЖЕНИЕ 2
