135
няет все функции карты CLEAR, а также стирает все описания блоков, функций, переменных, таблиц и памятей. Перед первой работой карта JOB не нужна. Карта JOB возвращает датчик случайных чисел к исходному числу.
Карта END. Эта карта указывает на конец входной колоды, в которой может содержаться несколько работ. Во входной колоде должна быть только одна карта END. Когда симулятор GPSS доходит до этой карты, он автоматически передает управление супервизору системы.
В языке GPSS используется символическая и косвенная адресация. Любым объектам программы (блокам, устройствам, памятям) можно дать символические имена. Нумерацию блоков производит симулятор GPSS. Разным объектам можно давать одно и то же имя. Например:
QUEUE |
CHAN |
SEIZE |
CHAN |
Возможности языка расширяет косвенная адресация и косвенное описание, в которых используются индексы, применяемые в качестве номера п аргумента блока и в качестве индекса п СЧА, указываемого в некоторой из карт описания. Например: Q10— текущее содержимое очереди 10; S9— текущее содержимое памяти 9; FN2— значение функции 2.
Для записи индекса надо использовать знак «*» и число после него. Индекс определяется значением параметра Рn транзакта, номер которого записан после * . Например:
SEIZE * 6
(т. е. занять устройство, индексный номер которого записан в парамет-
ре 6); |
|
Q |
*3 |
(т. е. текущее содержимое очереди, индексный номер которой записан в параметре 3).
Косвенная адресация и косвенное описание могут быть использованы совместно и порознь практически для любых аргументов различных типов блоков. Не могут быть описаны косвенно следующие аргументы: модификатор блока ADVANCE; номер параметра; приращение блока INDEX; мнемонические обозначения нижнего и верхнего предела блока PRINT; режим работы (допустимы только стандартные мнемонические обозначения); а также следующие блоки полей В и С в режиме ALL блока TRANSFER; начальный
136
интервал задержки; счетчик числа генерируемых данным блоком транзактов; приоритет; модификатор блока GENERATE.
7.5. Описание объектов GPSS
Язык GPSS оперирует с тремя типами объектов аппаратной категории: устройствами, памятями и логическими ключами.
У с т р о й с т в а. Эти объекты аппаратной категории GPSS применяются для описания таких элементов, которые могут использоваться только одним транзактом в данный момент времени.
П а м я т и. Эти объекты GPSS описывают такие устройства, которые обслуживают одновременно несколько транзактов.
Емкость каждой памяти определяется в начале процесса испытаний модели с помощью карты STORAGE. Используются два формата — для определения одной или нескольких памятей. Например:
1 |
STORAGE 237 |
(в «поле метки» записывается номер памяти, а в «поле операндов» — объем этой памяти).
STORAGE S1,100/S2,200
(«поле метки» пустое, а в «поле операндов» описываются памяти и их емкости).
К л ю ч и. Эти объекты используются для описания двоичных состояний логического или физического характера. В процессе работы модели один транзакт может установить ключ в определенное положение, другой может изменить его состояние, а третий — использовать это состояние при принятии определенных решений.
В вычислительной категории используются объекты трех типов: арифметические переменные, булевские переменные и функции. При построении модели некоторой системы S необходимо выразить арифметические и логические соотношения между атрибутами. Для этого используются арифметические и булевские переменные, которые представляют стандартными числовыми атрибутами V и ВV.
А р и ф м е т и ч е с к и е п е р е м е н н ы е. Эти объекты GPSS подобны переменным в алгоритмическом языке ФОРТРАН, т. е. представляются посредством арифметических выражений, включающих в себя различные стандартные числовые атрибуты, а также другие переменные. Арифметические переменные бывают с плавающей и фиксированной запятой.
137
Для обозначения алгоритмических операторов используются пять символов: «+» — алгебраическое суммирование; «—» — алгебраическое вычитание; «*» — алгебраическое умножение; «/» — алгебраическое деление; @
— деление по модулю. Все указанные действия в выражении осуществляются по тем же правилам и в том же порядке, как, например, в языке ФОРТРАН. Каждый элемент вычисляется и ограничивается до арифметической операции. Деление на 0 не считается ошибкой (результат при этом равен 0).
В карте описания VARIABLE «поле метки» содержит имя переменной, которое обозначается индексом номера или символом. В «поле операндов» не допускаются пробелы (первый пробел означает конец выражения), нет ограничений на количество чисел, но последнее число должно кончаться в колонке 71. Если выражение не помещается на одной карте, то используют несколько карт с дополнительным определением вспомогательных переменных. Например:
10 VARIABLE |
Q9 + 3 – P7*FN3 |
где переменная 10, которая обозначается V10, вычисляется добавлением к длине очереди 9 (Q9) константы 3 и вычитанием результата произведения параметра 7 (Р7) текущего транзакта на функцию 3 (FNЗ).
При арифметических переменных с плавающей запятой отдельные элементы и промежуточные результаты не округляются. Округляется только конечный результат. Например:
1 |
FVARIABLE |
10(11/3) |
1 |
VARIABLE |
10(11/3) |
где первая переменная с плавающей запятой равняется 36, т.е. произведение 3,67 • 10 = 36,7 ограничивается до 36, а вторая переменная равна 30, т. е. 3,67 ограничивается до 3 и умножается на 10.
Б у л е в с к и е п е р е м е н н ы е. Эти переменные могут быть представлены комбинациями стандартных числовых атрибутов, связанных между собой посредством булевых операторов, включая и другие переменные. Булевские переменные определяются так же, как и арифметические, но вместо арифметических операций проверяются различные логические условия. Существуют три типа операторов: логические, условные и булевские.
Логические операторы используются для определения состояния объектов аппаратной категории и рассматриваются при описании стандартных логических атрибутов «устройств» и «памятей». Например:
|
|
|
138 |
3 |
BVARIABLE |
FN12 |
|
4 |
BVARIABLE |
SF2 |
|
где булевская переменная 3 (ВVЗ) равна 1, если устройство 2 не занимается блоком PREEMPT, а булевская переменная 4 равна 1, если память 3 заполнена.
Условные операторы сравнивают алгебраические операнды, которые могут быть константами либо СЧА: G — больше; L — меньше; Е — равно; NЕ — не равно; LЕ — меньше либо равно; GЕ — больше либо равно. Например:
11 BVARIABLE V2’G’5
(здесь BV11 равна 1, если V2>5).
Булевские операторы обозначают следующее: «+» — ИЛИ; «*» — И. Например:
7 BVARIABLE (V2’6’7) * (FN12 + LR7)
(т. е. ВV7 равна 1, если V2 > 7 при условии, что устройство 2 не занято блоком РREEMPT или логический переключатель LR7 включен).
|
а) FNj |
|
|
|
|
(x6,y6) |
|
б) |
FNj |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
(x2,y2) |
|
(x4,y4) |
|
|
|
|
|
|
(x4,y4) |
||
|
|
|
|
|
|
|
|
(x2,y2) |
|
|
||
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
(x1,y1) |
|
|
|
|
СЧАк |
(x1,y1) |
|
СЧАк |
||||
|
|
(x5,y5) |
|
|||||||||
|
(x3,y3) |
|
|
|
|
|
|
|
(x5,y5) |
|||
|
|
|
|
|
|
|
|
|
(x3,y3) |
|||
|
|
|
|
|
|
|
|
|
||||
Рис. 1. Основные функции GPSS
Ф у н к ц и и. Как и переменные, функции не связаны с определенными блоками. Существует пять типов функций: 1) непрерывные числовые значения Сn; 2) дискретные числовые значения Dn; 3) перечень числовых значений Ln; 4) дискретные значения атрибутов Еn; 5) перечень значений атрибутов Мn. На рис.1 показаны первые три типа функций, являющиеся основными.
139
Каждая функция определяется посредством карты, имеющей вид
Метка |
Операция |
А |
В |
J |
FUNCTION |
Arg |
Cn |
В поле А определяется аргумент функции Аrg, который может быть СЧА. В поле В указываются тип функции и число точек, для которых вычисляется функция.
Каждая карта FUNCTION сопровождается картами, содержащими значения отдельных точек функции (пары Xi и Yi). Каждая из этих карт может содержать шесть пар Xi; и YI (, расположенных на 12 шестисимвольных полях. Например, функции, показанные на рис. 1, а, б, можно представить следующим образом:
а) |
|
|
Метка |
Операция |
|
|
1 |
FUNCTION RN1,C6 |
Х1,У1/Х2,У2/ХЗ,УЗ/Х4,У4/Х5,У5/Х6.У6
б)
Метка Операция
2 FUNCTION PN2,D5
XI ,У1 /Х2,У2/ХЗ,УЗ/Х4,У4/Х5.У5
Значения Xi и YI могут быть нецелыми числами. Значения Х должны удовлетворять условию Хi<Уi+1.
Пользователь может представить координаты функции в свободном формате, а не по шесть на каждой карте. Для этого нужно, чтобы: 1) первое число начиналось с колонки 1; 2) последнее число кончалось до или в 71-й колонке; 3) координаты Xi и YI отделялись друг от друга запятой; 4) пары координат отделялись друг от друга знаком «/». Например:
15 FUNCTION RN8,С4 0,0/.5,12/.68,15/1.0,20
Генерация случайных чисел в GPSS имеет следующие особенности. Все случайные равномерно распределенные числа, используемые в GPSS, получаются в результате расчета, который исходит из набора восьми основ-