Операторы QUEUEи DEPART
Если транзакт приходит на вход занятого устройства или на вход накопителя с недостаточным объемом свободной памяти, то он задерживается в очереди к этому устройству или накопителю. Слежение за состоянием устройств и очередей выполняет интерпретатор.
Если в модели требуется ссылаться на длину очереди или собирать статистику по ее длине, то нужно явное указание этой очереди в модели. Делается это с помощью операторов входа в очередь (рис. 8.10):
QUEUE А
и выхода из очереди:
DEPART А
согласно этим операторам очередь А увеличивается и уменьшается на единицу соответственно.
Рис. 8.10. Обозначение блока QUEUE
Оператор TEST
Движение транзактов выполняется в естественном порядке, изменение этого порядка производится операторами перехода. Оператор условного перехода (рис. 8.11)
TEST ХХ А,В,С
В соответствии с ним переход к оператору, помеченному меткой С, происходит, если выполняется условие А ХХ В, где ХХ {Е,NE,L,LЕ,G,GE}, Е – равно, NE – не равно, L – меньше, LЕ – меньше или равно, G – больше, GE – больше или равно (ХХ размещается в позициях 13 и 14).
Пример.Приходящие пользователи ожидают обслуживания, если длина очереди не более 4, иначе от обслуживания отказываются. Фрагмент программы:
…
TEST G Q$STR, K4, LBL
QUEUE STR
SEIZE POINT
DEPART STR
ADVANCE 50,16
RELEASE POINT
…
Рис. 8.11. Обозначение блока TEST
Операторы STARTи TERMINATE
Длительность моделирования задается с помощью итогового счетчика. В начале исполнения программы в счетчик заносится число, указанное в операнде А оператора начала исполнения:
START A,,C
Моделирование прекращается, когда содержимое счетчика будет равно или меньше нуля. Операнд С – шаг вывода статистики на печать.
Оператор выхода транзактов из СМО (рис. 8.12):
TERMINATE А
согласно которому из итогового счетчика вычитается число А.
Пример. Общая структура программы на GPSS имеет вид
SIMULATE
<описания, в том числе функций и накопителей >
<операторы, моделирующие движение транзактов>
START A,,C
END.
Рис. 8.12. Обозначение блока TERMINATE
Оператор TRANSFER
Оператор безусловного перехода (рис. 8.13)
TRANSFER, В
Здесь В — метка оператора, к которому следует переход.
Рис. 8.13. Обозначение блока TRANSFER
Используется ряд других разновидностей оператора TRANSFER.
TRANSFER P,В,С
Здесь переход происходит к оператору с меткой, равной сумме значения параметра В транзакта и числа С.
TRANSFER FN,В,С
То же, но вместо параметра транзакта слагаемым является значение функции В.
TRANSFER PICK, В,С
Это оператор равновероятного перехода к операторам, метки которых находятся в интервале [В, С]. Важное место в СМО занимает переход по вероятности
TRANSFER А,В,С
Здесь А — вероятность перехода к оператору с меткой С, переход к оператору с меткой В будет происходить с вероятностью 1 – А.
Оператор ASSIGNE
Оператор изменения параметров транзактов (рис. 8.14)
ASSIGN А, В
Здесь А — номер параметра транзакта, В — присваиваемое ему значение. В операторе
ASSIGN А+, В
параметр А увеличивается на значение В, а в операторе
ASSIGN А–, В
уменьшается.
Рис. 8.14. Обозначение блока ASSIGN