Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Пучкова ( на печать).doc
Скачиваний:
24
Добавлен:
24.09.2019
Размер:
701.95 Кб
Скачать

Управление продолжительностью процесса моделирования

В GPSS продолжительностью процесса моделирования можно управлять двумя способами:

1) завершить моделирование после того, как модель покинет заданное число транзактов определенного типа, заданного оператором generate.

2) завершить моделирование по истечению заданного интервала времени.

(1): а) в команде start операнду А присваивается значение заданного числа транзактов;

б) во всех блоках terminate, через которые транзакты заданного типа покидают модель, операнду А присваивается значение 1 или другое отличное от 0.

в) во всех других блоках terminate используется значение операнда А, равное 0.

Пример: generate 40, 5

terminate 1

start 100

(2). Пусть разработчик выбрал за единицу модельного времени 1 минуту и хочет смоделировать поведение системы на протяжении 8 часов. Это делается так:

а) ввести в модель «таймер-сегмент», состоящий из 2-х блоков:

- generate 480; число минут в 8 часах

- terminate 1.

б) во всех других блоках terminate в модели использовать terminate с А = 0

в) команде start операнд А должен равняться 1.

П ример: generate 480

terminate 1

generate 5, 2

terminate

start 1

Элементы, отображающие одноканальные обслуживающие устройства

Устройства характеризуются двумя основными свойствами:

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

2) Когда транзакт поступает в устройство, он должен пробыть там некоторое время для обслуживания.

Для того, чтобы использовать одноканальные устройства, транзакт выполняет следующие шаги:

  1. Ждать своей очереди, если это необходимо. Интерпретатор автоматически заставляет транзакт ждать очереди, если это необходимо.

  2. Когда подходит очередь, занять устройство.

  3. Устройство находится в состоянии занятости в течение некоторого интервала обслуживания.

  4. Когда обслуживание закончится, освободить устройство в некоторый момент модельного времени.

Шаг 2 реализуется блоком seize А (занять устройство),

где А – символьное или числовое имя занимаемого устройства (результат по умолчанию РПУ – ошибка). При входе в блок состояние устройства изменяется со «свободное» на «занятое».

Шаг 4 реализуется блоком release A (освободить устройство),

где А – символьное или числовое имя освобождаемого устройства (РПУ – ошибка).

Статистическая информация о работе устройства при моделировании собирается автоматически, и для каждого устройства в файле стандартного отчета *.rpt информация собирается автоматически. В этом отчете присутствуют следующие поля:

  • facility – номер или имя устройства;

  • entries – кол-во входов;

  • util – коэффициент использования;

  • ave.time – среднее время пребывания транзакта в устройстве;

  • avail – состояние готовности;

  • owner – номер последнего транзакта, занявшего устройство;

  • pend – количество прерванных в устройстве транзактов;

  • inter – количество прерывающих устройство транзактов;

  • retry – количество транзактов, ожидающих специальных условий;

  • delay – количество транзактов, ожидающих занятие устройства.

Шаг 3 реализуется блоком advance А, [В] (задержать),

где А – среднее время задержки на обслуживание (значение по умолчанию ЗПУ А= 0), В – половина поля допуска равномерно распределенного времени задержки (ЗПУ В = 0)

Пример: seize PRIB

advance 16, 4; задержались на 16 мин., но с допуском 4

release PRIB

Шаг 1 реализуется автоматически, однако система GPSS автоматически не выводит статистику об очереди. Для получения статистики существует регистратор очереди, с помощью которого GPSS средствами СЧА выдает следующую информацию (в стандартном отчете):

  • queue – номер очереди;

  • max – максимальная длина очереди;

  • cont – текущая длина очереди;

  • entry – общее количество входов;

  • entry (0) – количество «нулевых» входов;

  • ave.cont – средняя длина очереди;

  • ave.time – среднее время пребывания транзактов в очереди;

  • ave.(-0) – среднее время пребывания в очереди без учета «нулевых» входов (зашел, но не обслуживается);

  • retry – количество транзактов, ожидающих специальных условий.

В модели может быть несколько регистраторов очередей, различающихся именами. Регистратор очереди вносится в модель парой взаимосвязанных блоков:

queue A, [B]

depart A, [B]

A – имя очереди, в которую становится транзакт (РПУ – ошибка),

В – число единиц, на которые увеличивается (для queue), уменьшается (для depart) длина очереди (ЗПУ = 1).

Пример: Пусть необходимо собрать статистику об ожидании в очереди при обслуживании устройством PRIB.

seize PRIB; заняли устройство

depart QPRIB

advance 16, 4;

release PRIB

Пример: Значение текущей длины очереди хранится в стандартном числовом атрибуте Q $ < имя очереди >.

Увеличение на единицу длины очереди QPR 1 имеет вид: queue QPR 1.

Увеличение на 2 единицы длины очереди QPR 2 имеет вид: queue QPR 2,2

Уменьшение на единицу длины очереди QPR3: depart QPR 3.

Использование регистратора очереди необязательно, т.к. он лишь собирает статистику, и очередь возникает там, где это необходимо. Ожидание является следствием состояния устройства, а не следствием использования регистратора. Один и тот же транзакт может одновременно увеличивать длину нескольких очередей. При выходе транзакта из очереди через блок depart необязательно уменьшать длину на ту же величину, на которую он увеличил ее при входе в блок queue. Но в итоге число входов в очередь должно равняться числу выходов из нее.