Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
020879_C5238_shpory_po_modelirovaniyu_sistem.docx
Скачиваний:
14
Добавлен:
17.03.2015
Размер:
1.45 Mб
Скачать

50. Gpss. Методы изменения маршрутов движения транзактов. Организация циклов.

Блок LOOP предназначен для организации в модели циклов.

Формат: LOOP A,B

Операнд А – параметр транзакта или параметр цикла, в котором содержится число повторений какого-либо участка модели.

Операнд В – метка блока, с которого начинается цикл.

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

51. Gpss. Работа с таблицами. Работа с оку / мку в режиме прерывания.

Работа с таблицами.

Для сбора и обработки данных о выборочном распределении времени ожидания в очереди служат статистические объекты типа Q-таблица. Для создания в модели такой таблицы она должна быть предварительно определена с помощью оператора определения QTABLE (Q-табли ца), имеющего следующий формат:

Имя QTABLE A,B,C,D

Здесь имя - имя таблицы, используемое для ссылок на нее; A - номер или имя очереди, распределение времени ожидания в которой необходимо получить; B - верхняя граница первого частотного интервала таблицы; C - ширина частотных интервалов; D - количество частотных интервалов.

При прохождении транзакта через блоки QUEUE и DEPART его время ожидания фиксируется, и к счетчику частотного интервала таблицы, в который попало это время, добавляется 1. Одновременно в таблице накапливается информация для вычисления среднего значения и среднеквадратического отклонения (корня из дисперсии) времени ожидания. По окончании моделирования среднее значение и среднеквадратическое отклонение времени ожидания, а также счетчики попаданий в различные частотные интервалы выводятся в стандартный отчет GPSS/PC.

Таблицы в GPSS/PC могут использоваться в более общем случае не только для табулирования времени ожидания в очереди, но и для получения выборочных распределений произвольных СЧА любых объектов модели. Для определения таблиц служит оператор TABLE (таблица), формат которого совпадает с форматом оператора QTABLE. Отличие состоит лишь в том, что в поле A оператора TABLE записывается стандартный числовой атрибут, выборочное распределение которого необходимо по лучить, а операнды B, C и D определяют разбиение на частотные интервалы диапазона всевозможных значений этого СЧА.

Занесение информации в таблицу, определяемую оператором TABLE, уже не может быть выполнено симулятором автоматически, как в случае Q-таблиц. Для этого используется специальный блок TABULATE (табулировать), имеющий следующий формат:

Имя TABULATE A

В поле A указывается номер или имя таблицы, определенной соответствующим оператором TABLE.

При входе транзакта в блок TABULATE текущее значение табулируемого аргумента таблицы, указанного в поле A оператора TABLE, заносится в нее в соответствии с заданным в операторе TABLE разбиением области значений аргумента на частотные интервалы. Одновременно корректируются текущие значения СЧА таблицы: счетчик входов в таблицу TC, среднее время ожидания TB и среднеквадратическое отклонение времени ожидания TD.

Прерывание ОКУ.

Если на входе ОКУ образуется очередь, то выбор транзакта для его занятии после освобождения происходит в порядке поступления (метод FIFO) для тр-тов с равным приоритетом или с учетом приоритета, указанного операндом E блока GENERATE.

Такой режим функционирования ОКУ орагнизуется блоками SIEZE и RELEASE (см. вопрос 45).

Однако может возникнуть необходимость смоделировать ситуацию, когда очередной тр-кт должен занять ОКУ, прервав облуживание предыдущего тр-та. Такое прерывание называется захватом ОКУ и моделируется блоком PREEMPT(захватить).

PREEMPT A,[B],[C],[D]

А – имя или номер захватываемого ОКУ.

Когда ОКУ свободно, блок PREEMPT работает так же, как и блок SIEZE. При занятом ОКУ блок PREEMPT функционирует либо в приоритетном режиме, либо в режиме прерывания. Режим определяется операндом В:

- PR - приоритетный –тр-т может захватить ОКУ, если имеет приоритет выше чем у тр-та занимающего ОКУ.

- по умолчанию – прерывание.

С – имя или номер блока, куда должен быть направлен прерванный транзакт,

Е – если стоит в значении RE,прерванный тр-т удаляется.

D – номер параметра прерванного тр-та, в котором записывается оставшееся до завершения обслуживания время.

Освобождение ОКУ от захвата:

RETURN A

А – имя или номер освобожденного ОКУ.