- •Имитационное моделирование Содержание
- •5 Некоторые приёмы программирования в gpss World 127
- •6 Задания для самостоятельной работы 138
- •Введение
- •1Установка и работа программы gpss World
- •1.1Установка студенческой версии программы gpss World
- •1.2Вызов готовой программной модели
- •1.3Пояснения к тексту примера программной модели
- •1.4Запуск программы на счёт
- •2Примеры разработки моделей организационных объектов
- •2.1Модель предприятия обслуживания
- •2.2Модель учебного процесса в вузе
- •2.2.1Общая характеристика рассматриваемого примера
- •2.2.2Разработка программной модели на языке gpss World
- •2.3Модель движения автобуса по маршруту
- •3Элементы языка gpss World
- •3.1Блоки и команды gpss World
- •Блоки, изменяющие порядок прохождения блоков транзактами
- •Блоки для обработки сообщений, принадлежащих одному семейству
- •Транзакта, прерванные во время пребывания в блоке assemble
- •Вход прерванных сообщений в блок assemble
- •Транзакта, прерванные во время пребывания в блоке match
- •3.2Системные числовые атрибуты (System Numerical Attributes)
- •Системные Числовые Атрибуты — спецификаторы устройств (sna Entity Specifiers)
- •Доступные системные числовые атрибуты
- •3.3Математические операции в gpss World
- •4Визуализация результатов имитационного моделирования
- •4.1Общие принципы визуализации результатов имитационного моделирования
- •4.2Журнал Journal
- •4.3Стандартный отчёт Standard Report
- •4.4Окна gpss World
- •4.4.1Обзор Окон gpss World
- •4.4.2Окно блоков Blocks Window
- •4.4.3Окно выражений Expression Window
- •4.4.4Окно обслуживающих устройств Facilities Window
- •4.4.5Окно логических ключей Logicswitches Window
- •4.4.6Окно матриц Matrix Window
- •4.4.7Окно графиков Plot Window
- •4.4.8Окно очередей Queues Window
- •4.4.9Окно сохраняемых величин Savevalues Window
- •4.4.10Окно Многоканальных устройств Storages Window
- •4.4.11Окно гистограмм Table Window
- •4.5Совместное использование нескольких окон
- •5Некоторые приёмы программирования в gpss World
- •5.1Общая характеристика программирования
- •5.2Использование имён и номеров блоков
- •6Задания для самостоятельной работы
- •Заключение
- •Библиографический список
Транзакта, прерванные во время пребывания в блоке match
Допустим, что транзакт, переведенное в состояние синхронизации в блоке MATCH, ранее заняло некоторое устройство. Может случиться так, что во время пребывания этого транзакта в блоке MATCH, другое транзакт войдет в блок PREEMPT и вызовет прерывание первого транзакта на занимаемом им устройстве. Для прерванных в блоке MATCH сообщений выполняются точно такие же операции, как для сообщений, прерванных в блоке ASSEMBLE.
Вход прерванных сообщений в блок MATCH
В момент, когда транзакт входит в блок PREEMPT и генерирует прерывание на каком-либо устройстве, транзакт, которое занимало это устройство, может находиться в списке текущих событий. В этом случае выполняются операции, как и при входе прерванных сообщений в блок ASSEMBLE.
Стандартным числовым атрибутом, связанным с описываемым оператором является:
МВ<номер блока> — флаг синхронизации. Возвращает 1, если транзакт, находящееся в блоке <номер блока> принадлежит к тому же семейству, что и текущее.
Блоки GATE М и GATE NM
Блоки GATE М и GATE NM проверяют значения логических условных операторов M и NM и, в зависимости от результатов проверки, управляют движением сообщений одного семейства. Блок GATE может задержать транзакт на входе, если не задан альтернативный выход. Логические условные операторы, записываемые во вспомогательном поле операции имеют следующие значения:
М — имеет значение "истина", если другое транзакт, принадлежащее к тому же семейству, что и транзакт, вошедшее в блок GATE или находящееся в блоке GATE, находится в состоянии синхронизации в блоке, номер которого определяется полем А блока GATE;
NM — имеет значение "истина", если в блоке с номером, определяемым значением поля А блока GATE, нет сообщений, принадлежащих к тому же семейству, что и транзакт, вошедшее в блок GATE или находящееся в блоке GATE.
Поле А задает номер блока, в котором проверяется выполнение условия синхронизации. Считается, что транзакт находится в состоянии синхронизации, если индикатор синхронизации установлен в единицу. Условие синхронизации выполняется в следующих трех случаях:
1) другое транзакт, принадлежащее к тому же семейству, что и транзакт в блоке GATE, является исходным транзактм в блоке ASSEMBLE, номер j которого является аргументом поля А блока GATE;
2) одно или более сообщений, принадлежащих к тому же семейству, что и транзакт в блоке GATE, участвует в процессе накопления в блоке GATHER, номер j которого является значением аргумента поля А блока GATE;
3) другое транзакт из того же семейства, что и транзакт в блоке GATE, находится в блоке MATCH, номер j которого является значением аргумента поля А блока GATE и ожидает поступления транзакта в сопряженный блок MATCH.
Для выполнения условия синхронизации необходимо, чтобы индикаторы синхронизации сообщений, участвующих в проверке условия, были установлены в 1. Поэтому для сообщений, которые закончили сборку, накопление или дождались поступления транзакта в сопряженный блок MATCH, но не могут войти в следующий по номеру блок, условия синхронизации не выполняются, т.к. индикаторы синхронизации этих сообщений установлены в "0".
Наличие в поле В блока GATE аргумента, определяющего номер следующего блока, указывает на то, что транзакта не задерживаются на входе блока GATE. Если логический условный оператор (M или NM) имеет значение "истина", то транзакта переходят к следующему по номеру блоку; если значение атрибута — "ложь", то транзакт переходит к блоку, номер которого определяется значением аргумента поля В. Если номер следующего блока не задан, блок GATE будет задерживать транзакт на входе до тех пор, пока указанный логический условный оператор не примет значение "истина". Тогда транзакт может перейти к блоку, следующему по номеру за блоком GATE.
Транзакта, которые не могут войти в блоки GATE M и GATE NM, работающие в режиме условного входа, не удаляются из списка текущих событий, и интерпретатор пытается продвинуть эти транзакта при каждом просмотре. Таким образом, применение блоков GATE M и GATE NM в режиме условного входа может привести к увеличению времени счета. Следует отметить, что состояние других членов семейства, к которому принадлежит транзакт, не меняется, когда это транзакт входит в блоки GATE M и GATE NM, проверяющие одно из условий синхронизации.
