Блоки, связанные с транзактами ( GENERATE, TERMINATE). Сегмент модели. Продолжительность прогона. Сегмент таймера.



 

Блоки, связанные с транзактами ( ASSIGN , MARK , PRIORITY , ADVANCE ).

Функционирование объекта отображается в модели в виде перемещения от блока GENERATE в блок TERMINATE через промежуточные блоки. Транзакты являются абстрактными, подвижными элементами, которые могут моделировать различные объекты реального мира: сообщения, программы, транспортные средства, людей и т.п.

Перемещаясь между блоками модели транзакты вызывают (и испытывают) различные действия. Возможны их задержки в некоторых точках модели, изменения маршрутов и направлений движения, расщепление транзактов на несколько копий и т.п.

С каждым транзактом связан упорядоченный набор данных. Он включает номер транзакта, номер блока, в котором в данный момент находится транзакт, номер следующего блока, время перехода в следующий блок, приоритет, характеризующий очередность обработки транзактов.

С помощью параметров каждому транзакту можно присвоить числовые значения, выражающие желаемые свойства или характеристики моделируемых объектов: вес, скорость, объём, цвет, время обработки и т.п.

Все объекты GPSS имеют числовые характеристики, называемые стандартными числовыми атрибутами (СЧА). Для ссылки на какой-либо СЧА некоторого объекта соответствующий операнд оператора исходной программы записывается одним из следующих способов:

СЧА$name

СЧАj

где СЧА – системное обозначение (название конкретного стандартного числового атрибута данного объекта).

name – имя объекта.

j – номер объекта.

$ - символ-разделитель.

Транзакты имеют следующие СЧА:

Pj( P$ name) – значение параметра с номером j (с именем name) активного транзакта.

PR – приоритет активного транзакта.

M1 – резидентное время транзакта, т.е. время, прошедшее с момента входа транзакта в модель через блок GENERATE.

MPj ( MP$ name) – транзитное время прохождения транзактом некоторого участка модели (разность между текущим модельным временем и временем, занесенным в параметр транзакта с номером j (с именем name) блоком MARK).

XN1 – номер транзакта.

 

В GPSS существует ряд блоков, с помощью которых можно изменить значения параметров транзактов. Блок ASSIGN модифицирует значение параметра транзакта, входящего в этот блок. Блок INDEX изменяет значение параметра с номером 1.

Блок MARK записывает в указанный им параметр текущее модельное время, или, если параметр не указан, заносит на место отметки времени входа транзакта в модель текущее время. Пересылка транзакта в требуемую точку модели осуществляется блоком TRANSFER.

Блок TEST проверяя выполнение определённого условия может также направлять транзакты в заданную точку модели, если условие не выполняется. При этом, его действие аналогично блоку GATE (впустить).

Для организации в модели циклов используется блок LOOP (организовать цикл), с помощью которого можно предусмотреть многократное прохождение транзактом заданной цепочки блоков.

Изменение приоритета транзакта осуществляет блок PRIORITY.

ASSIGN (присвоить)

ASSIGN(присвоить)

Назначение: изменяет значение параметра транзакта.

Формат:ASSIGNA[+,-], B,С

где       А – номер или имя изменяемого или задаваемого параметра,

В – величина, используемая для модификации значения параметра (число или СЧА),

С – номер или имя функции.

 

Если за полем А следует знак [+,-], то значение поля В соответственно добавляется или вычитается из значения параметра, указанного в поле А. Если знаки [+,-] не указаны, то значение поля В становится текущим значением параметра. При использовании операнда С значение операнда В умножается на значение функции, номер или имя которой указан в операнде С. Полученный результат служит для изменения значения параметра, заданного полем А.

MARK (отметить)

MARK (отметить)

Назначение: записывает текущее модельное время в активный транзакт или его параметр.

Формат:MARKA

 

А – номер (или имя) параметра, в который записывается текущее модельное время (необязателен).

 

Если поле А не используется, то текущее модельное время заносится на место отметки времени входа транзакта в модель. Эта отметка используется при определении резидентного времени транзакта с помощью СЧА М1. Если поле А определено, то текущее значение таймера записывается в параметр, указанный в поле А.

 

Полезное замечание: Блок MARK используется для определения времени перемещения транзакта по какому-либо участку модели. Если, например на входе участка модели поместить блок MARK 3, то на выпуске из участка МР3 будет равно разности между текущим модельным временем и временем, занесенным блоком MARK в третий параметр транзакта.


Дата добавления: 2019-02-12; просмотров: 277; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!