logo
Обработка данных / Томашевский_Имитационное моделирование в среде GPSS_2003

4.14. Стандартные числовые атрибуты, параметры транзактов. Блоки assign, mark, loop

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

Рассмотрим несколько примеров зависимости функционирова­ния элементов модели от системных атрибутов, т.е. СЧА.

1. Интенсивность работы некоторого устройства зависит от дли­ны очереди. Для определения времени обслуживания при каждом по­ступлении транзакта на обслуживание необходимо знать значение та­кого системного атрибута, как длина очереди.

2. Интенсивность обслуживания некоторого устройства зависит от общей продолжительности его функционирования (проявление ус­талости – интенсивность со временем уменьшается, разогрев устройства – интенсивность со временем увеличивается). Время обслуживания – функция, которая зависит от времени, прошедшего c начала ра­боты.

3. Имеются два устройства и диспетчер, который распределяет работы между ними таким образом, чтобы загрузка устройств была равномерной. Для этого в пункте диспетчеризации необходимо иметь информацию о коэффициентах загрузки устройств и возможность выбора пути перемещения транзакта в зависимости от этих двух ве­личин.

Условно атрибуты можно поделить на две категории:

1) атрибуты системы;

2) атрибуты транзактов.

Атрибуты системы – это параметры, которые описывают со­стояние объектов модели. Такие количественные показатели, как «текущая длина очереди» или «коэффициент загрузки устройства» являются типичными системными атрибутами. Стандартный набор атрибутов, подобных указанным, автоматически поддерживается ин­терпретаторомGPSS.

Транзакты также могут иметь некоторые числовые характери­стики (например, уровень приоритета). Кроме того, транзакт снаб­жается некоторым числомпараметров.

В языке GPSSатрибуты (свойства) объектов – это СЧА. Каждый объектGPSSимеет свой набор СЧА. Доступ к СЧА осуществляется при использовании специальных обозначений этих атрибутов. Имя СЧА состоит из двух частей:

1) групповое имя – состоит из одной или двух букв, идентифи­цирует тип объекта и тип информации о нем;

2) имя конкретного члена группы.

Объекты могут идентифицироваться cпомощью числовых и символьных имен. Если объект идентифицируетсяcпомощью номера (числовое имя), то ссылка на его стандартный числовой атрибут за­писывается какCЧAj, гдеj– номер объекта (целое число). При сим­вольной идентификации объекта ссылка на его стандартный число­вой атрибут записывается, как СЧА$<имя объекта> (в приведенных ссылках под «СЧА» понимается групповое имя).

Стандартные числовые атрибуты. В табл. 4.26 показаны СЧА устройств, в табл. 4.27 – СЧА МКУ, в табл. 4.28 – СЧА очередей. Полный список всех СЧА приведен в Приложении А.

Таблица 4.26

Обозначение

Значение

FjилиF$имя

Показатель занятости устройства (0 – если не заня­то, 1 – если занято)

FCjилиFС$имя

Число занятий устройства

FRjилиFR$имя

Нагрузка устройства, выраженная в долях тысячи

FTjилиFТ$имя

Целая часть значения среднего времени задержки транзакта в устройстве

FVjилиFV$имя

Флаг готовности устройства к использованию (1 – готово, 0-в противном случае)

Таблица 4.27

Обозначение

Значение

RjилиR$имя

Емкость незаполненной части МКУ

SjилиS$имя

Емкость заполненной части МКУ

SAjилиSA$имя

Целая часть среднего заполнения МКУ

SCjилиSС$имя

Счетчик числа входов в МКУ. (При каждом выпол­нении блока ENTERзначение счетчика увеличива­ется на значение операндаВэтого блока)

SMjилиSМ$имя

Максимально занятая емкость МКУ. Запоминает максимальное значение Sj(S$имя)

SRjилиSRSимя

Нагрузка МКУ, выраженная в долях тысячи

STjилиST$имя

Целая часть среднего времени пребывания транзактaв МКУ

SVjилиSV$имя

Флаг готовности МКУjк использованию (1 – готово, 0 – не готово)

Таблица 4.28

Обозначение Значение

QjилиQ$имя

QAjилиQA$имя

Текущее значение длины очереди (текущее со­держимое)

Целая часть среднего значения длины очереди

QCjилиQC$имя

Число входов в очередь. При каждом входе в блок QUEUEочереди значениеQCj(QC$имя) увели­чивается на значение операндаВ, при каждом входе в блокDEPARTочереди значениеQCj(QC$имя) уменьшается на значение операндаВ

QMjилиQM$имя

Максимальное значение длины очереди (макси­мальное значение Qj(С)$имя))

QTjилиQT$имя

Целая часть среднего времени пребывания в оче­реди всех транзактов, которые входили в очередь (включая и те, которые не ждали – нулевые вхо­ды)

QXjилиQX$имя

Целая часть среднего времени пребывания в оче­реди для транзактов, которые ждали в очереди (ненулевые входы)

QZjилиQZ$имя

Число нулевых входов в очередь

СЧА блоков и системные СЧА. Блоки имеют два стандартных числовых атрибута (их подсчет ведется автоматически):

Wj (W$<меткa блока>) – счетчик текущего содержимого блока cномеромj(cметкой блока);

Nj (N$<метка блока>) – счетчик входов, т.е. общее число транзактов, вошедших в блокjcмомента последнего действия опера­торовRESET и CLEAR (от начала работы модели, если не было опе­раторовRESET и CLEAR).

Например, W$BL1 – это число транзактов, которые находятся в блокеcметкойBL1; N$QP – число транзактов, вошедших в блокcметкойQP; W210 – значение текущего содержимого счетчика блока, который имеет 210-ю позицию в модели.

Важные системные СЧА:

C1– текущее значениеотносительного модельного времени; автоматически изменяется интерпретатором и устанавливается в 0 при выполнении операторовCLEAR и RESET;

AC1– текущее значениеабсолютного модельного времени; ав­томатически изменяется интерпретатором и устанавливается в 0 при выполнении оператораCLEAR;

TG1– текущее значениесчетчика завершения;

PRприоритет транзакта, обрабатываемого в данный мо­мент;

Mlвремя пребывания в модели транзакта, обрабатываемого интерпретатором в данный момент.

Пример 4.25

Использование СЧА в блоках ENTER и ADVANCE.

ENTER 3,R3

При входе транзакта в блок ENTER, он занимаетR3 каналов устройстваcименем 3. ПосколькуR3 – число доступных каналов МКУ 3, то транзакт занимает все каналы, которые остались свобод­ными до его входа.

ENTER HS,R$SH

Войдя в блок ENTER, транзакт занимаетR$SHканалов МКУcименемHS.

ADVANCE FC$PRIB

Задержка в этом блоке равна числу занятий устройства PRIB.

Параметры транзактов. Параметры транзактов – это свойства транзакта, определяемые пользователем. Множество параметров транзакта – набор стандартных числовых атрибутов, которые при­надлежат транзакту. Параметры транзакта являются локальными пе­ременными, которые доступны только данному транзакту.

В процессе перемещения транзакта по модели, его параметры могут задаваться и модифицироваться в соответствии cлогикой рабо­ты модели.

Особенности параметров транзактов:

1. Доступ к параметрам транзактов осуществляется таким образом:

P<номер> или Р$<имя>,

где P– СЧА транзакта, определяющий его групповое имя, т.е. имя всех параметров транзакта.

2. Номера (имена) конкретных членов множества параметров задаются cпомощью целых чисел 1, 2, ... или символьных имен. На­пример,P22– это 22-параметр транзакта,P$COLORпараметрcименемCOLOR.

3. При входе транзакта в модель начальное значение всех его параметров устанавливается вноль.

4. Значения параметров транзактов и их изменение определяет пользователь.

5. Значениями параметров транзактов могут быть любые числа (в системе GPSS/PC– только целые числа). Параметры могут приоб­ретать отрицательные значения.

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

7. Параметры можно использовать в качестве операндов блоков и в качестве аргументов функций.

8. Параметры позволяют организовать косвенную адресацию блоков. Это дает возможность агрегированного представления объек­тов моделирования в программе.

Пример 4.26

Выполнение подпрограммы блока ADVANCEпредусматривает расчет функцииAAA. Это в свою очередь требует определения зна­чения аргумента функции, т.е. параметраP3. Пусть значение третьего параметра гранзакта, вошедшего в блокADVANCE, равно 4. Соот­ветствующее значение функцииAAAравно 8. Таким образом, время задержки будет равномерно распределено на интервале 8±3.

Пример 4.27

Транзакт занимает устройство, номер которого задан парамет­ром транзакта PRIB. Время обслуживания задается параметромTSERV

Изменение значений параметров. Блок ASSIGN(НАЗНАЧИТЬ). При входе транзакта в этот блок значения парамет­ров могут задаваться или изменяться.

Формат блока:

Таблица 4.29

Операнд

Значение

Результат по умолча­нию

А

Номер или имя модифицируе­мого или задаваемого пара­метра

Ошибка

В

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

Ошибка

С

Имя функции

Не используется

Блок ASSIGNможет быть использован как в режиме замещения значения параметра (начальное значение всех параметров транзактов равно 0), так и в режиме увеличения и уменьшения. В режиме увели­чения предшествующее значение параметра увеличивается на значе­ние, стоящее в операндеВ. В режиме уменьшения оно уменьшается на величину, стоящую в операнде В. Режимы увеличения и уменьше­ния определяются введением соответственно знаков «плюс» и «ми­нус» перед запятой, которая разделяет операнды А иВ.

При использовании операнда Cзначение операндаВумножает­ся на значение функции, указанной в операндеC. Параметр, задан­ный в операндеА, изменяется на величину полученного произведе­ния (в режиме увеличения и уменьшения) или приобретает значение результата (в режиме замещения).

Пример 4.28

Блок ASSIGN в режиме присваивания:

ASSIGN MEST,36

Параметру транзакта cименемMESTприсваивается значение 36.

ASSIGN 3,25

Параметру P3 присваивается значение 25.

ASSIGN P4,FR$BB

Параметру транзакта cномером, записанным в параметреP4, присваивается значение величины загрузки устройстваBB (оба опе­ранда заданы косвенным образом).

Блок ASSIGN в режимах накопления и уменьшения:

ASSIGN 4+,Q5

Параметр 4 увеличивается на значение, равное текущей длин очереди 5.

ASSIGN P2-,7

От значения параметра, номер которого задан параметром P2 вычитается 7.

Отметка времени. При каждом входе транзакта в модель ин терпретатор фиксирует для него текущее значение времени. Это значение времени называетсяотметкой времени. Она может быть интерпретирована как время «рождения» транзакта или время входа транзакта в модель. В явном виде отметка времени недоступна. Однако существует СЧА, который тесно связан со значением времет входатранзакта в модель. Его имяM1,aзначение определяется так:

Значение M1 для каждого транзакта изменяется в процессе мо­делирования. Сразу после входа транзакта в модельM1=0, через 10 единиц модельного времениM1=10 и т.д.

Пример 4.29

Пусть в устройстве, номер которого хранится в параметре CLR_1 транзакта, продолжительность обслуживания зависит от вре­мени, которое прошлоcмомента входа транзакта в модель. Предполагается, что это время не может превышать 1000 ед. времени. Для этого в модели можно использовать такие блоки:

Транзитное время. Блок MARK (ОТМЕТИТЬ). Стандартный числовой атрибутM1 измеряет время, которое прошлоcмомента входа транзакта в модель. Однако очень часто требуется знать время, затраченное на перемещение транзакта между двумя произвольными точками модели. Для этого используется блокMARK.

При входе транзакта в блок MARK значение таймера абсолют­ного времени записывается в качестве одного из его параметров. Та­кую запись называютотметкой транзакта. Формат блокаMARK:

MARK A

Таблица 4.30

Операнд

Значение

Результат по умолчанию

А

Номер параметра, в кото­рый записывается значе­ние абсолютного времени (целое число, СЧА)

При отсутствии операнда А от­метка времени заменяется те­кущим значением абсолютного времени

Пусть необходимо определить интервал времени, на протяже­нии которого транзакт проходит от точки Т1 к точкеТ2. Для этого нужно выполнить два действия:

1) в точку Т1 поместить блокMARK j, гдеjномер параметра, в который записывается значение абсолютного времени в момент за­писи;

2) в точке Т2 обратиться к СЧАcименемMPj, гдеj– номер па­раметра, в котором сделана отметка времени транзакта; СЧАMPj будет иметь такое значение:

Организация циклов. Блок LOOP (ЦИКЛ). Cпомощью пара­метров транзактов в программе можно организовать циклы. Для этого используется блокLOOP. Он управляет количеством повторных прохождений транзактом определенной последовательности блоков модели.

Формат блока:

LOOP A[,B]

Таблица 4.31

Операнд

Значение

Результат по умолча­нию

А

Параметр транзакта, используемый для органи­зации цикла (переменная цикла). Он может быть именем, положительным целым числом, СЧА, C4A*CЧA(косвенная адресация).

Ошибка

В

Метка (имя блока) начального блока цикла

Ошибка

Когда транзакт входит в блок LOOP, параметр, указанный в операндеА, уменьшается на единицу, А затем проверяется его значе­ние на равенство нулю. Если значение не равно нулю, то транзакт переходит в блок, указанный в операнде В. Если значение параметра равно нулю, транзакт переходит в следующий блок.

Переменная блока LOOP может только уменьшаться.

Пример 4.30

Цикл организован по первому параметру транзакта. Его началь­ное значение равно 3. После освобождения устройства проверяется значение первого параметра. Если оно не равно нулю, го транзакт возвращается к блоку, помеченному меткой SIS, т.е. занимает уст­ройствоcименемPC. Всего каждый транзакт будет занимать это уст­ройство три раза.