Системные числовые атрибуты (System Numerical Attributes)



В процессе работы программы транзакты перемещаются по модели от блока к блоку, в некоторых блоках они задерживаются, в некоторых изменяются их параметры. Одновременно с этим сама программа собирает информацию о процессах в блоках. Например, для всех Очередей собирается следующая информация: число вошедших и вышедших транзактов, а также время нахождения транзакта в очереди. Одновременно производится анализ этой информации и выполняются некоторые простейшие статистические вычисления, определяются: максимальное, минимальное и среднее число транзактов в очереди; минимальное, максимальное и среднее время нахождения транзакта в очереди; всё это — с учётом и без учёта транзактов, которые вошли в очередь, но прошли её без задержки по любым причинам (например, в очереди никого не было или они имели приоритет).

Вся эта информация может быть использована в процессе моделирования для выбора действий в качестве условий формирования тех или иных событий. Для получения доступа к этим статистическим параметрам используются специальные средства — Системные числовые атрибуты (СЧА) (System Numerical Attributes). Они представляют собой особую форму записи подпрограмм-функций, извлекающих необходимую информацию из внутренних массивов данных.

Каждый тип устройств (Очереди, Обслуживающие устройства, Многоканальные устройства, Матрицы и др.) имеют свой набор СЧА. Общий вид записи СЧА: X$Y, где знак доллара является условным обозначением СЧА, слева от которого записывается условное обозначение типа СЧА (в виде одной буквы), а справа — имя конкретного блока, информацию о котором требуется получить. Например, выражение Q$Ochered означает, что требуется узнать текущий размер очереди (Q) с именем Ochered. В этом смысле СЧА можно считать также упорядоченным видом переменных, так как результатом их работы является извлечение и предоставление значения соответствующего параметра. С ними можно работать, как с обычными переменными, т. е. умножать, использовать для определения номера блока (блоки можно задавать именами или номерами или и тем и другим способом одновременно) и т. д. (В современных языках программирования СЧА могли бы записываться, например, в виде функции, тогда это могло бы выглядеть так: Q(Ochered)). При вызове они возвращают числовые или строковые значения указанных переменных и могут быть использованы в GPSS в качестве операндов (в операторах и командах) или в выражениях (например, в Окнах для просмотра результатов).

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

Системные Числовые Атрибуты — спецификаторы устройств
(SNA Entity Specifiers)

Большинство СЧА могут быть представлены в одной из нескольких форм, начинающихся с наименования СЧА-класса. Например, выражение W22 при вызове возвращает номер транзакта, находящегося в блоке № 22 (все блоки имеют наименование, например, очереди с различными именами, или номера). Этот номер присваивается транслятором при трансляции программы по порядку сверху вниз и виден в Стандартном отчёте. СЧА-класс задаётся первой буквой — в данном случае W.

СЧА могут быть записаны в следующих формах (для примера используется класс W):

Wj — где j (положительное целое число) — номер блока в моделировании.

W$Name — где Name — название (обозначение) запрошенного блока, символ доллара $ — знак присоединения к имени блока.

W*j — где j (положительное целое число) — номер параметра активного транзакта, содержащего номер запрашиваемого блока (косвенная адресация); символ * — знак присоединения номера блока при косвенной адресации.

W*Name — где Name — название параметра активного транзакта, содержащего номер запрашиваемого блока (косвенная адресация); символ * — знак присоединения номера блока при косвенной адресации.

W*$Name — где Name — название параметра активного транзакта, содержащего номер запрашиваемого блока. Знак $ не является необходимым, но используется как разделитель. По сути, это выражение эквивалентно выражению W*Name (косвенная адресация).

W*Parameter — означает, что тот или иной вид записи W*j, W*Name или W*$Name может быть использован.

СЧА-класс MX для Матриц является особым случаем. Он содержит 3 косвенных адреса. Например, выражение

MX*Sales(*Partnumber,*January)

определяет Матрицу, чей номер находится в параметре с названием Sales (активного транзакта) и обращается к элементу Матрицы, имеющему номер строки Partnumber и номер столбца January. Обычно для инициализации параметров (в данном случае Sales, *Partnumber и *January) у активного в данный момент транзакта используется блок ASSIGN.

СЧА-классы A1, AC1, C1, M1, MP, PR и TG1 отражают общесистемные переменные, не имеют параметров и используются сами по себе.

При программировании в GPSSW можно использовать подсказку о возможных формах использования СЧА в качестве операндов.

Доступные системные числовые атрибуты

Следующие СЧА могут быть использованы в качестве операндов в операторах (командах) и в выражениях. Во всех случаях Entnum заменяется спецификатором устройства, который может быть именем (располагается справа вплотную от разделителя $) или номером, или (для косвенной адресации) он может быть заменён на символ *, за которым следует имя или номер.

Ниже приведён полный список СЧА в GPSS World:

A1 — номер ансамбля активного транзакта (целое число). Ансамбль появляется, когда в системе находятся родственные транзакты, полученные, например, после создания копий одного из транзактов (родителя) оператором SPLIT.

AC1 — значение абсолютного времени моделирования — начиная с использования последней команды CLEAR (действительное число), а при её отсутствии — с момента начала моделирования. Моделирование может прерываться (командами HALT, в связи с окончанием заданного времени и по другим причинам), а затем продолжаться. Абсолютное время показывает всё время моделирования.

BVEntnum — значение булевой (логической) переменной с именем или номером Entnum (действительное число).

C1 — значение относительного системного времени моделирования с момента последнего использования команды RESET (действительное число).

CAEntnu — среднее число транзактов в Цепи пользователя с названием Entnum (действительное число).

CCEntnum — общее число входов в Цепь пользователя с именем Entnum (целое число).

CHEntnum — текущее значение числа транзактов в Цепи пользователя с именем Entnum (целое число).

CMEntnum — максимальное число транзактов в Цепи пользователя с именем Entnum (целое число).

CTEntnum — среднее время нахождения транзактов в Цепи пользователя с именем Entnum (действительное число).

FEntnum — флаг занятости Обслуживающего устройства. Если Обслуживающее устройство с именем Entnum в настоящее время занято, FEntnum возвращает 1, в противном случае возвращается 0 (целое число).

FCEntnum — число захватов Обслуживающего устройства с именем Entnum с помощью команд SEIZE или PREEMPT (целое число).

FIEntnum — флаг прерывания Обслуживающего устройства. Если Обслуживающее устройство с именем Entnum в настоящее время перехвачено (транзактом с более высоким приоритетом), FIEntnum возвращает 1, иначе возвращается 0 (целое число).

FNEntnum — функция. Возвращает результат выполнения функции с именем Entnum (действительное число).

FREntnum — коэффициент использования Обслуживающего устройства, равный отношению времени занятости транзактами Обслуживающего устройства с именем Entnum. к общему времени моделирования (действительное число).

FTEntnum — среднее время удержания транзактом Обслуживающего устройства с именем Entnum (действительное число).

FVEntnum — флаг готовности Обслуживающего устройства. Если Обслуживающее устройство с именем Entnum готово принять очередной транзакт, то FVEntnum возвращает 1, если не готово — возвращается 0 (целое число).

GNEntnum — счётчик Цифровой группы. GNEntnum возвращает количество членов Цифровой группы с именем Entnum (целое число).

GTEntnum — счётчик Группы транзактов. GTEntnum возвращает количество членов Группы транзактов с именем Entnum (целое число).

LSEntnum — значение Логического ключа с именем Entnum. LSEntnum возвращает 1 или 0 (целое число). Логические ключи — это переменные, которые используются в программе для запоминания какого-то события и выстраивания логики работы программы. Например, можно с помощью Логического ключа фиксировать включенность или выключенность какого-то устройства. Логических ключей может быть много и поэтому они имеют свои уникальные имена.

MBEntnum — проверка принадлежности транзакта в блоке с именем Entnum и активного транзакта одному Ансамблю. MBEntnum возвращает 1, если оба транзакта принадлежат одному ансамблю (целое число). Ансамбли нужны, например, при моделировании сборки сложного устройства из совокупности деталей. Может моделироваться сборка нескольких устройств и тогда будут существовать несколько Ансамблей. Чтобы не перепутать детали, их проверяют на предназначенность соответствующему устройству.

MPParameter — время перехода: текущее абсолютное системное время минус значение параметра с именем Parameter (действительное число).

MXEntnum(m,n) — сохраняемое значение Матрицы. Возвращает значение элемента матрицы в строке m и столбце n матрицы Entnum.

M1 — время перехода. M1 возвращает абсолютное системное время минус "Временная Метка" транзакта (действительное число).

NEntnum — счётчик входов в блок. Сообщает общее число входов транзактов в блок с именем Entnum (целое число).

PParameter или *Parameter — значение параметра с именем Parameter активного транзакта (целое или действительное числа, строка). При косвенной адресации используют форму SNA*Parameter.

PR — приоритет активного транзакта (целое число в диапазоне 0…127).

QEntnum — текущее число транзактов в Очереди с именем Entnum (целое число).

QAEntnum — среднее число транзактов в Очереди с именем Entnum за время моделирования (действительное число).

QCEntnum — общее число входов транзактов в Очередь с именем Entnum (целое число).

QMEntnum — максимальное число транзактов в Очереди с именем Entnum за время моделирования (целое число).

QTEntnum — среднее время нахождения транзактов в Очереди с именем Entnum (действительное число).

QXEntnum — среднее время нахождения транзактов в Очереди с именем Entnum, исключая "нулевые входы", когда транзакт входит в Очередь и тут же её покидает, не теряя на это время (действительное число).

QZEntnum — число "нулевых входов" транзактов в Очередь с именем Entnum, когда транзакты проходят Очередь не задерживаясь (целое число).

REntnum — размер незанятой ёмкости Многоканального Устройства с именем Entnum (целое число).

RNEntnum — случайное число. RNEntnum возвращает числа в диапазоне 0…999 генератора случайных чисел с именем (номером) Entnum (целое число).

SEntnum — количество транзактов, находящихся в данный момент в Многоканальном устройстве с именем Entnum. SEntnum возвращает число транзактов, вошедших в Многоканальное устройство с именем Entnum (целое число).

SAEntnum — среднее значение использованной ёмкости Многоканального устройства с именем Entnum (действительное число).

SCEntnum — число использований транзактами Многоканального устройства с именем Entnum (целое число).

SEEntnum — незанятость Многоканального устройства. SEEntnum возвращает 1, если Многоканальное устройство с именем Entnum полностью доступен, возвращает 0 в ином случае (целое число).

SFEntnum — заполненность Многоканального устройства. SFEntnum возвращает 1, если Многоканальное устройство с именем Entnum полностью заполнено, возвращает 0 в ином случае (целое число).

SREntnum — коэффициент использования Многоканального устройства. Отношение среднего числа использований Многоканального устройства Entnum к общей его ёмкости (действительное число в диапазоне 0…1000).

SMEntnum — максимальное значение использования Многоканального устройства с именем Entnum (целое число).

STEntnum — среднее время удержания на единицу Многоканального устройства с именем Entnum (действительное число).

SVEntnum — готовность Многоканального устройства. SVEntnum возвращает 1, если Многоканальное устройство с именем Entnum в состоянии готовности, возвращает 0 в ином случае (целое число).

TBEntnum — среднее значение невзвешенных аргументов Таблицы Entnum. (действительное число).

TCEntnum — число включений в Таблицу Entnum. (целое число).

TDEntnum — среднеквадратическое отклонение для Таблицы Entnum. (действительное число).

TG1 — число, записанное в Счётчике завершеня. TG1 возвращает число, которое остаётся после работы блока TERMINATE с положительным операндом A. Это значение первоначально задаётся командой START и для продолжения моделирования должно быть больше 0 (целое число).

VEntnum — результат вычисления арифметической или с плавающей точкой переменной с именем Entnum (действительное число).

WEntnum — текущее (на данный момент) число транзактов в блоке с именем Entnum (целое число).

XEntnum — значение Сохраняемой величины с именем Entnum (целое или действительное числа, строка).

XN1 — номер активного транзакта (целое число).

Z1 — размер свободной оперативной памяти компьютера (целое число).


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

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






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