Б1. Основные операторы описания

Б. Операторы описания

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

Оператор присвоения EQU назначает символу, записанному в поле метки, числовое значение и имеет формат:

< символ EQU А, В [,С] ... >

А - числовая константа , В, [С ]-символы типа объектов ( см. табл. 5.4). Например - PHONE EQU 3,F.

Оператор INITIAL используется для задания начальных значений блокам SAVEVALUE, MATRIX SAVEVALUE и логическим ключам. Формат: < INITIAL A, B[/A, B]…>

А- инициализируемый объект X, M, L, В – устанавливаемое значение, например, INITIAL XH$SAM, 25/ XB3,1.5 -установить ячейке SAM формата полуслово значение 25, а ячейке 3 форматом байт значение 1.5.

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

Вариант 1.

< STORAGE A >

Здесь n — номер (имя) памяти; А — объем памяти.

Примеры:

1 STORAGE 100 память 1 объема 100 ед.

РАМ STORAGE 10 память объема 10 ед.

Вариант 2 используется для одновременного описания нескольких памятей, например:

STORAGE S5-S10, 90 памяти 5-10 объемом по 90 ед.

STORAGE S$SKLD1, 10/S$SKLD2, 20

Последний оператор описывает две памяти с символическими именами SKLD1 (10 ЕД.) и SKLD2 (20 ЕД.).

Операторы описания обычно помещаются в начале программы перед первым оператором GENERATE.

Изменение состояния памяти в ИМ осуществляется с помощью операторов ENTER и LEAVE занятия и освобождения памяти (поле операндов для них идентично):

< ENTER A, B >

< LEAVE A, B >

А — номер (имя) памяти;

В — число единиц памяти, занимаемых (освобождаемых) транзактом при входе в блоки (по умолчанию - 1).

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

Пример.

CORE STORAGE 40 описание памяти объемом в 40 единиц

ENTER CORЕ,2 занятие двух единиц памяти

PREEMPT CPU прерывание процесса

ADVANCE 10 процесс записи данных

RETURN CPU конец прерывания

LEAVE CORE, 2 освобождение памяти

Ряд числовых атрибутов, характеризующих функционирование моделируемой системы, а также отдельных ее элементов, можно интерпретировать как показатели эффективности КЦФ. Вычисление КЦФ является важной составной частью имитационных экспериментов. В GPSS/H имеются удобные средства для сбора необходимой статистики. Некоторые виды статистики накапливаются программой автоматически. Другие виды статистических данных могут быть получены с помощью статистических блоков.

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

< QUEUE А,В>

где А — номер (имя) очереди, в которую заносится транзакт при невозможности войти в следующий за блоком QUEUE блок; В — число занимаемых транзактом мест в очереди.

Блок DEPART производит обратное действие: освобождает требуемое число мест в очереди при вхождении в него транзакта. Оператор блока:

< DEPART А, В >

А, В — определяются аналогично блоку QUEUE, с той лишь разницей, что в В указывается число освобождаемых мест в очереди. Статистическая информация об очередях собирается автоматически и выводится в стандартном виде.

Средства GPSS/H позволяют получать эмпирические таблицы абсолютных и относительных частот попадания исследуемой случайной характеристики в заданные интервалы значений, которые могут использоваться для анализа распределений вероятностей данной характеристики. Карта описания таблицы имеет вид:

<n TABLE A, B, C, D >

где n — номер (имя) таблицы; А — табулируемый СЧА (аргумент таблицы); В — верхняя граница первого интервала; С — ширина интервала; D — число интервалов. Желательно так подбирать ширину и количество интервалов, чтобы в полученные интервалы попадало 100% значений аргумента таблицы. Помимо таблицы частот одновременно вычисляются оценки среднего и стандартного отклонения аргумента таблицы. Карты описания таблиц помещаются в начале программы. Занесение информации в таблицу происходит в момент вхождения транзакта в блок TABULATE:

здесь А — номер (имя) таблицы;

В — число добавляемых в соответствующий интервал единиц (по умолчанию — 1).

Примеры:

а) 1 TABLE VI,-100,10,100

б) CORE TABLE S$CORE,0,50,10

а) таблица 1 предназначена для получения частот значений (частотного распределения) переменной VI; таблица содержит 100 интервалов длиной 10 единиц каждый и два крайних интервала (-, -100) и (900, +).

б) таблица CORE предназначена для получения частотного распределения текущего содержимого памяти CORE; таблица содержит 10 интервалов по 50 единиц каждый, а также интервалы (-, 0), (500, +).

Соответствующие операторы занесения в таблицы могут иметь вид:

а) TABULATE 1 добавляется 1

б) TABULATE CORE, 2 добавляется 2

Для табулирования распределения времени пребывания транзактов в очереди можно обойтись без оператора TABULATE, его функции будут выполняться оператором DEPART, если таблица будет описана с помощью карты QTABLE. В отличие от карты TABLE поле А карты QTABLE содержит номер (имя) наблюдаемой очереди.

Пример.

QTIME QTABLE TIME,0,20,75 описание таблицы

QUEUE TIME занятие очереди транзактом

DEPART TIME освобождение очереди транзактом

 

При входе транзакта в блок DEPART время пребывания в очереди автоматически заносится в таблицу QTIME.