d9e5a92d

Операторы управления

D - не имеет значения по умолчанию, определяет формат параметра PF(fullword), PH(halfword), PB(byte), PL(floating point) (по умолчанию PH ). Если функция отсутствует ( операнд С), то формат параметра сдвигается влево на место операнда С.
Рассмотрим несколько примеров :

  1. ASSIGN 3+,5,,PB
  2. ASSIGN 1-7,3
  3. ASSIGN 5,2.5,,PL

В первом примере производится прибавление к значению параметра 3 5 единиц. Во втором примере параметрам с 1 по 7 приписывается значение 3 форматом полуслово.

В третьем примере задаётся значение параметру форматом плавающая точка.
PRIORITY
В процессе моделирования иногда приходится менять как дисциплину обслуживания, так и приоритет транзакта. Для этой цели используется ОБ PRIORITY, формат ОБ имеет вид :
PRIORITY A ,
A - не имеет значения по умолчанию, определяет новое значение приоритета для Хакт. Транзакты удаляются при этом из СТС и возвращается обратно с новым приоритетом, становясь последним в список данного приоритета. Уровень приоритета в последней версии GPSS/H может изменяться от - 2147483632 до + 2147483632 .
Приведём пример использования ОБ
1. PRIORITY 5
В примере у транзакта переназначается приоритет.
TABULATE (Создать таблицу )
Этот ОБ используется для сбора дополнительной информации, которая не выводится в стандартном отчёте. Структура таблицы задаётся ОУ TABLE (см. параграф 3.3.2). МФ может содержать несколько таблиц, которые описываются в отчёте и каждая содержит размер выборки, стандартное выборочное отклонение, относительные и накопленные частоты Каждая таблица имеет свои СЧА, формат ОБ имеет вид:
TABULATE A,[B]
A - не имеет значения по умолчанию, определяет имя или номер таблицы, в которую вносятся желаемые наблюдения, описание таблицы даётся в модуле описания с помощью ОУ TABLE .
В - по умолчанию равен 1, является не обязательным и служит в качестве весового коэффициента при создании взвешенных таблиц.
Рассмотрим примеры применения ОБ
1. TABULATE BLACK

  1. TABULATE 2
  2. TABULATE BLACK,2

В первом примере заполняется таблица с именем BLACK, во втором примере, таблица за номером 2, в третьем примере все данные вносятся с коэффициентом 2.
LOGIC( проверить логику ), GATE ( запирать )
Эта комбинация ОБ LOGIC(Проверить логику) GATE (Запирать) и ОУ INITIAL может находиться в одном из двух состояний включено - выключено и служит для сигнализации о состоянии моделируемой системы по отношению к сложившимся условиям. По терминологии GPSS/H логический переключатель может быть в установочном состоянии (set) - код состояния LS, либо свободен (clear)- код состояния LC. ОУ INITIAL задаёт начальное состояние или изменение состояния логического переключателя, а также сохраняемых величин ( Savevalue ) и матричных величин ( Matrix Savevalue ), его формат имеет вид:
INITIAL А(n)/ A(n)/,
А - не имеет значения по умолчанию и обозначает один из кодов состояния LS, LС, содержимое скобок указывает на имя инициализируемого устройства, слэш "/" символизирует возможный набор устройств, например:
INITIAL LS(KEY)/LC(KNOB).
В этом примере начальное состояние логического переключателя KEY в положении "установить", а начальное состояние логического переключателя KNOB в положении " свободен ".
ОБ LOGIC изменяет состояние логического переключателя. Кроме кода действия, ОБ имеет дополнительные коды: S- установлен, C- свободен или переустановлен -R (reset ) и инвертирован I, т.е. изменил состояние на противоположное, ОБ имеет формат:
LOGIC X A ,
X - дополнительный код S ,C( R ), I
A - не имеет значения по умолчанию и обозначает имя или номер логического переключателя, устанавливаемого в одно из состояний, задаваемых дополнительным кодом, например :
1. LOGIC S SWCH
2. LOGIC I KL1
В первом примере проходит команда на установку переключателя SWCH
Во втором примере инвертируется переключатель KL1.
Существуют два СЧА, относящихся к логическому переключателю, введённые выше, а именно LS и LC , которые обозначают следующее:
LC (имя или номер )- истинно, когда логический переключатель свободен, если это так, то СЧА равен 1, в противном случае СЧА равен 0.
LS ( имя или номер )- истинно, если логический переключатель установлен, если это так, то СЧА равен 1, в противном случае СЧА равен 0.
Используемый в этой цепочке ОБ GATE, препятствует входу следующего транзакта, если определяемые условия ложны, что делается с помощью дополнительных кодов ОБ, отличающихся от условий применения ОБ GATE. Вначале рассмотрим его использование в общем виде, формат ОБ GATE в этом случае имеет вид:
GATE XXX A[,B ] ,
XXX - дополнительный код.
Для логического переключателя это LS и LC.
Для устройств:

  • I- прервано, NI не прервано, U - захвачено или прервано, NU ни захвачено и ни прервано, FV- доступно, FNV - не доступно, FS готово к захвату, FNS - не готово к захвату.


Для памятей:

  • SE пуста, SNE - не пуста, SF- полна,SNF- не полна, SV-доступна, SNV не доступна.

Для транзактов, имеющих одинаковые характеристики (групп, ансамблей):

  • M- является членом группы, NM - не является членом группы.

А - не имеет значения по умолчанию ни для одного объекта, представляет собой имя или номер логических переключателей, устройств, памятей или ОБ, проверяющих наличие транзактов, отвечающих заданным условиям. ( К числу таких ОБ относятся ASSEMBLE ,GATHER , MATCH ).
В - при умолчании 0, в режиме перехода относится ко всем формам ОБ и указывает на имя или номер дополнительного , не последовательного блока к которому направится Х акт при ложности дополнительного кода , т.е указывает альтернативный адрес.
Приведём несколько примеров :
1. GATE LS 1
2. GATE FNV 7
3. GATE SF 16
4. GATE FNI 21,ALTR
В первом примере транзакт блокируется до установки ключа 1 .
Во втором примере транзакт блокируется пока устройство 7 занято .
В третьем примере транзакт блокируется до заполнения памяти 16 .
В четвёртом примере транзакт после прерывания устройства 21 переходит к ALTR.
В данном параграфе рассмотрены только те операторы блоков, которые потребуются для выполнения курсового проекта, на самом деле ОБ в языке больше и они участвуют в разделении транзактов, их группировании, выделении необходимых и т.д. Кроме того, в последней версии появилось 12 операторов управления с первой буквой В (индекс блока), которые могут включаться в модуль исполнения, упрощая функции управления моделью.

Подробнее см. (Л.1,2).

Операторы управления

Как было указано выше, эти операторы используются для управления выполнением программы языка GPSS/H и описания других объектов, встречающихся в программе. Вначале рассмотрим три главн х ОУ, без которых процесс моделирования не может быть осуществлен.
А. Главные операторы управления
SIMULATE (моделировать, воспроизвести)
Этот оператор указывает, что программа на языке GPSS/H должна быть выполнена после успешной компиляции. Располагается в начале модели, меток не имеет по определению, операндов при практической работе не имеет, хотя иногда используется операнд А, задающий лимит времени моделирования.

При курсовом проектировании операнд не используется.
START (начать)
При исполнении этого ОУ происходят следующие события:
- счетчик завершений устанавливается в начальное значение,
- инициализируется процесс поступления транзактов в модель,
- начинается последовательное движение транзактов от ОБ к ОБ.
Формат ОУ имеет вид:
START А,
А начальное значение счетчика завершений, от 1 и выше.
Метка у ОУ отсутствует по определению.
ЕND (окончить)
ОУ выполняет две функции, во первых, его наличие свидетельствует о физическом окончании модельного файла, а во вторых, его исполнение останавливает процесс моделирования и передает управление ОС.
ОУ не имеет операндов и меток.
Б. Операторы управления процессом моделирования
Далее рассмотрим ряд операторов управления, приводимых в алфавитном порядке, подробнее см.(Л.1,2).
CLEAR (очистить)
Этот ОУ позволяет провести от двух и более последовательных прогонов модели. Исполнение ОУ происходит после окончания одной реплики и началом другой, таким образом осуществляется связь между репликами.

ОУ CLEAR всегда располагается в модуле управления между первым ОУ START и последним ОУ END, появление ОУ CLEAR требует обязательного парного ему ОУ START, т.е. при наличии в модуле управления нескольких ОУ CLEAR, обязательно должно быть столько же ОУ START, не считая первого, стоящего в начале модуля. Исполнение ОУ CLEAR приводит к следующим последствиям :

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

Повторение нового прогона необходимо для сбора статистических данных о модели, однако при этом нельзя забывать того обстоятельства, что при простом повторении прогона генераторы случайных чисел -ГСЧ Yтартуют с одной и той же позиции и выходная статистика от прогона к прогону не будет изменяться. Для того, чтобы прогоны сделать статистически независимыми необходимо, чтобы ГСЧ не возвращались в исходное положение. ОУ CLEAR позволяет, дополнительно к вышесказанному, сделать это за счёт реализации следующих положений :

  • ГСЧ остаются в том положении, в котором они находились на момент окончания предыдущего прогона, т.е. начальное положение ГСЧ следующего прогона отличается от предыдущего, что позволяет сделать результаты прогонов статистически независимыми.
  • Счётчик ИН транзактов также не обнуляется и номера транзактов нового прогона являются продолжением после последнего номера транзакта предыдущего прогона ( например, если предыдущий прогон кончился ИН 104, то новый начинается с ИН 105).

Формат ОУ CLEAR имеет вид :
CLEAR
Необходимо отметить , что ОУ никогда не имеет ни меток (ярлыков), ни операндов. Пример применения ОУ CLEAR будет приведен непосредственно при рассмотрении примера в 3.7.
FUNCTION ( функционировать )
Этот ОУ используется для определения характера функции, связывающей независимую переменную с рядом зависимых величин. Эта связь может иметь непрерывный или дискретный вид.

Кроме того функция может быть представлена в символьном виде, когда значение функции вычисляется из выражения, приводимого в списке. Формат ОУ FUNCTION имеет вид:
label FUNCTION A,B,[C] основной формат
X1,Y1/X2,Y2/,/Xn,Yn точки функции
Label ярлык употребляется в обязательном порядке и служит для идентификации функции .
А - не имеет значения по умолчанию, определяет независимую переменную функции (аргумент), например, если используется равномерное распределение и БСВ берётся с 3-го генератора, то запись будет иметь вид RN3 (random number). Операнд может кодироваться дополнительным выражением.

Единственным ограничением является то, что аргумент не может прямо или косвенно ссылаться на функцию для которой он является независимой переменной. Значения функции могут задаваться числом с плавающей точкой.
B - не имеет значения по умолчанию, состоит из двух символов ( без пробела), первый из которых представляет собой обозначение типа функции, вида: C- непрерывная числовая, D дискретная числовая, L - список числовых значений, E - дискретная символьная, M список дискретных символов, S- селектор объектов; второй символ представляет собой целое число связанных пар значений функции, которые представляют собой точки функции и приводятся во торой строке описания формата. Если используется символ S, то он уточняется операндом С, используемым только в этом случае .
С - по умолчанию равен 0, применяется для перечисления типов объектов, если используются объекты разных типов, то приводятся их символы, разделяемые запятой без пробелов.
Рассмотрим пример записи функции :
SERVTIME FUNCTION RN7,D5
.2,4/.55,7.5/.7,10.5/.8,13.5/1,16.5
В примере описывается ОУ FUNCTION, имеющая ярлык SERVTIME, равномерно распределённое время обслуживания берётся с ГСЧ 7, распределение времени дискретно, функция имеет 5 пар точек, х - представляет собой накопленную частоту, а у- время обслуживания. Необходимо отметить, что начало и конец записи точек функции не выделяется никакими символами, пары точек отделяются слэшем, значения внутри пары разделяются запятой, 0 не пишется, а запись начинается с точки.
INITIAL( Начальное значение )
Этот ОУ используется для установления начальных значений сохраняемым величинам ( Savevalue ), матричным величинам и логическим переключателям . Формат ОУ INITIAL имеет вид :
INITIAL символ инициализации[ / символ инициализации ].
В формате под символом инициализации понимается обозначение величины, представляемое как символ величины отделённый от имени величины знаком $, например X$SAM,25 - что значит полнословная сохраняемая величина SAM, имеющая значение 25. Если в качестве начального значения используется выражение, то оно представляется в скобках.

При нескольких символах инициализации, они отделяются друг от друга слэшем, который не ставится в начале и конце наименований. Например :
1. INITIAL XH1-XH10,13/XB$SAM-XB$JOE,(5+XH$INIT)
2. INITIAL LS10/LR1-LR5
Из первого примера следует, что в первом символе полусловные сохраняемые величины с 1-ой по 10-ю имеют значение 13, а во втором сохраняемые величины SAM JOE имеют значение, указанное в скобках, т.е. к полусловному значению сохраняемой величины INIT добавляется 5. Во втором примере, относящимся к логическим переключателям устанавливается, что логический переключатель 10 находится во включённом состоянии, а переключатели с1-го по 5-ый выключены.
RESET(установить, сбросить в нуль)
Этот ОУ похож на ОУ CLEAR, также используется для целей сбора статистических данных, но имеет ряд отличительных черт, так при исполнении ОУ RESET не происходит разрушения транзактов, абсолютное время не обнуляется (обнуляется только относительное время). Использование ОУ RESET эффективно при определении момента времени, когда процесс ИМ становится установившимся .
RMULT (Переустановить )
Этот ОУ используется для управления текущей позицией ГСЧ, вводя данные с помощью ОУ RMULT можно переназначать положение любого ГСЧ, что позволяет достигать статистической независимости ИМ и избегать корреляции между отдельными потоками БСВ. Формат ОУ RMULT имеет вид :
[label] RMULT A,B,C,D,.
label - отсутствует по определению, наличие ярлыка приводит к ошибке.
А- по умолчанию текущее значение ГСЧ1, появление операнда А устанавливает новую текущую позицию для ГСЧ1 (RN1),
В по умолчанию текущее значение ГСЧ2, появление операнда В устанавливает новую текущую позицию для ГСЧ2 и т.д.
Приведём несколько примеров использования ОУ RMULT :
1. RMULT 50000
2. RMULT ,125000
3. RMULT 25000,,100000
В первом примере устанавливается значение ГСЧ1 равное 50000, остальные остаются неизменными. Во втором примере начальные значения всех ГСЧ остаются неизменными, а новое текущее значение ГСЧ2 равняется 125000 . В третьем примере все ГСЧ сохраняют неизменное положение , кроме первого и третьего .
Положение занимаемое ОУ RMULT в МФ зависит от задач, стоящих перед исследователем. Если необходимо, c целью исключения корреляции, разнести потоки заявок от потоков обслуживания, то ОУ RMULT помещается в первом модуле описания, если нужно провести переназначение между прогонами, то ОУ RMULT помещается в модуле управления после ОУ START.
STORAGE (Запомнить )
Этот ОУ используется для определения ёмкости одной или нескольких памятей. Исполнение ОУ STORAGE (впрочем, как и всех рассмотренных ОУ) происходит только после успешного завершения процесса компиляции, при этом вводится в действие оговорённое число ресурсов ОУ STORAGE . ОУ STORAGE в силу своей специфики должен располагаться в модуле описания, до того как началось движение транзактов, так как после компиляции программа последовательно исполняет все ОУ, стоящие до первого ОУ START. Формат ОУ STORAGE может быть представлен двумя способами :
1. label STORAGE A ,
Label - не имеет значения по умолчанию, отсутствие ярлыка приводит к ошибке компиляции. Ярлык является идентификатором памяти, ёмкость которой определяется.

При этом формате можно определить только одну память.
А - не имеет значения по умолчанию, отсутствие приводит к ошибке компиляции. Операнд определяет ёмкость памяти, т.е. число моделируемых устройств обслуживания.

Необходимо иметь в виду, что в этом формате можно использовать одну единицу ёмкости в заданный момент времени.
Приведём примеры записи:
1. SAM STORAGE 10,
2. 3 STORAGE 5.
В первом примере памяти SAM определяется ёмкость 10 , во втором примере памяти за номером 3 определяется ёмкость 5.
Используя многоканальное обслуживание можно не определять ОУ STORAGE, в этом случае ёмкость по умолчанию практически равна бесконечности ( а именно , 2147483647 ).
При записи во втором формате :
2. STORAGE Sname1,A/Sname2, B/Sname3,C
можно определять несколько памятей сразу. Определитель памяти представляет пары обозначений, разделённых запятой, между собой пары отделяются слэшем. Вначале пишется символ памяти, а затем её имя первый член пары, после запятой пишется операнд А,В, , характеризующий ёмкость памяти- второй член пары.

Символ S может быть отделён от имени памяти символом $ или имя может быть включено в круглые скобки, памяти одинаковой ёмкости могут записываться через тире.
Приведём комбинированный пример записи ОУ STORAGE
STORAGE S1,10/S$CORE,5/S(SAM)-S(JOE),15
Комментарий : все виды записей воспринимаются программой одинаково и могут комбинироваться.
В примере памяти S1 приписывается ёмкость 10, памяти S с именем CORE приписывается ёмкость 5, а ряд памятей с именами S(SAM) S(JOE) имеют одинаковую ёмкость 15.
В случае если память имеет ёмкость равную единице, то она полностью аналогична устройству, осуществляющему одноканальное обслуживание. Отсюда следует, что в GPSS/H одноканальное обслуживание можно моделировать двумя способами.

Поэтому имеет смысл кратко рассмотреть разницу между этими двумя возможностями . Во первых, обслуживание в устройствах может быть прервано (PREEMPT ) транзактом с более высоким приоритетом, чего не допускается при обслуживании с памятями. Во вторых, у устройств поддерживается понятие готовности - не готовности ( рабочее состояние - состояние ожидания), для памятей их состояния имеют другой смысл , что будет рассмотрено ниже . В- третьих, при исполнении ОБ SEIZE программа записывает ИН Хакт и при исполнении ОБ RELEASE проверяет тот ли транзакт вышел из устройства обслуживания . При исполнении ОБ ENTER ИН Хакт не записывается . Предупреждение: в GPSS/H чётко разделены функции устройств и памятей и необходимо соблюдать внутренние правила программы .
Выше были высказаны замечания в адрес не очень чёткого определения STORAGE, необходимо помнить, что этот термин прежде всего относится к устройству, моделирующему группу идентичных серверов, а не определяет физическое расположение или объём. Следует обратить внимание на обязательность идентичности, как только серверы не идентичны их следует моделировать устройствами, а не памятями!

Для определения числа идентичных серверов используется термин ёмкость ( который, впрочем, также не удачен, кк и память, так как сразу возникает ассоциация с конкретным местом куда что-то можно положить и соответственно забрать). Для определения состояния памятей в GPSS/H используется несколько терминов:

  • Память считается заполненной (Full), если каждая единица ресурса

( сервер ) занята в момент обращения к ней,

  • Память считается пустой (Empty), если каждая единица ресурса свободна .
  • Текущее содержание (Current Contents) памяти определяется числом единиц ресурса, занятых на текущий момент времени.
  • Остающаяся ёмкость (Remaining Capacity) памяти, число единиц ресурса свободных на текущий момент. Так например, при заполненности памяти остающийся объём равен 0.

Следует иметь в виду, что все перечисленные термины имеют отношение только к GPSS/H.
TABLE ( составить таблицу )
Этот ОУ позволяет получить дополнительную, по сравнению со стандартным отчётом, статистическую информацию. Например, исследователя интересует текущее содержание памяти в различных репликах. Полученное значение математического ожидания, может использоваться для выбора числа серверов в проектируемой системе.

ОУ TABLE позволяет получить математическое ожидание (среднее значение), стандартное отклонение и относительные частоты попадания в заданный интервал. Формат ОУ TABLE имеет вид:
label TABLE A,B,C,D,[E] ,
label - не имеет значения по умолчанию, отсутствие ярлыка приводит к ошибке компиляции, определяет имя или номер таблицы,
А не имеет значения по умолчанию, определяет вид операций с таблицей. Существует 4 вида возможных таблиц, задаваемых операндом А:
1.Операнд А определяется выражением, на основе которого определяется статистика, помещаемая в таблицу. Эта статистика для совместимости с другими версиями должна представлять собой только простой СЧА и не должна быть представлена в матричных форматах типа MX,MH,MB,ML.
2. Операнд А определяется также как в случае 1, но впереди стоит знак минус. В этом случае таблица называется дифференциальной, т.е. берётся разница между текущим значением и предыдущим и результат помещается в таблицу, текущее значение сохраняется для последующих вычислений.
3. Операнд А имеет впереди символы IA (interarrival ), что обозначает определение промежутков между последовательными входами. При этом определяется разность между текущим значением абсолютного времени и значением абсолютного времени в предыдущий момент, результат помещается в таблицу, текущее значение времени сохраняется для последующих вычислений.
4. Операнд А имеет впереди символы RT (arrival rate), что обозначает определение доли приходов (относительной частоты) в какой то интервал. При этом варианте операндом Е оговаривается интервал времени являющийся шагом таблицы.

Этот вид используется для определения такой статистики как приход в течении часа . Счётчик приходов ОБ TABULATE при каждом исполнении ОУ TABLE увеличивается на единицу. После того как определена таблица, управление осуществляется с помощью контролёра транзактов , располагающегося в СБС, где к текущему значению абсолютного времени прибавляется значение времени, стоящее в операнде Е. При этом каждый раз производятся следующие действия: накопленное время записывается в таблицу, счётчик приходов обнуляется, контролируемый транзакт включается в СБС со временем равным текущему значению абсолютного времени плюс значение операнда Е.
В - не имеет значения по умолчанию, определяет собой верхнее значение первого ( нижнего ) интервала частот, в GPSS/H допускается использование числа с плавающей точкой. Первый интервал может простираться до минус бесконечности.
С не имеет значения по умолчанию, представляет собой ширину интервала и постоянен для всех интервалов кроме первого и последнего. Естественно, что ширина интервала должна быть больше нуля и может представляться числом с плавающей точкой. (Для лучшего восприятия таблицы следует использовать целочисленные значения).
D не имеет значения по умолчанию, определяет число частотных интервалов таблицы. Если первый символ операнда D буквенный - а именно W, то такая таблица является взвешенной . При этом ОБ TABULATE, используя свой операнд В создаёт взвешенные значения средних величин, стандартных отклонений, количества наблюдений.
При построении таблицы используются следующие правила :

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

Рассмотрим примеры запPси ОУ TABLE :



Содержание раздела