Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по самому GPSS - для студентов.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
153.76 Кб
Скачать

Сбор статистики

В GPSS для сбора статистики об очередях используются блоки QUEUE (стать в очередь) и DEPART (покинуть очередь). Эти блоки никогда не препятствуют входу в них транзактов.

Следует заметить, что без этих блоков, предназначенных для регистрации очереди, логика работы модели не нарушается, очередь образуется и существует в соответствии с условиями моделирования, но статистические данные о ней не собираются!

Формат этих блоков:

 QUEUE A,B

  DEPART A,B

В поле A указывается номер или имя очереди, а в поле B – число единиц, на которое текущая длина очереди увеличивается при входе транзакта в блок QUEUE или уменьшается при входе транзакта в блок DEPART. Обычно поле B пусто, и в этом случае его значение по умолчанию принимается равным 1.

Для сбора статистики о транзактах, заблокированных перед каким-либо блоком модели, блоки QUEUE и DEPART помещаются перед и после этого блока соответственно.

При прохождении транзактов через блоки QUEUE и DEPART соответствующим образом изменяются следующие СЧА очередей: Q - текущая длина очереди; QM - максимальная длина очереди; QA - средняя длина очереди; QC - общее число транзактов, вошедших в очередь; QZ - число транзактов, прошедших через очередь без ожидания (число "нулевых" входов); QT - среднее время ожидания с учетом "нулевых" входов; QX - среднее время ожидания без учета "нулевых" входов.

Дополним приведенную на рис. модель одноканальной СМО блоками QUEUE и DEPART (рис. ). Теперь транзакты, заблокированные перед блоком SEIZE из-за занятости устройства SYSTEM, находятся в блоке QUEUE, внося свой вклад в статистику о времени ожидания, накапливаемую в статистическом объекте типа "очередь" с именем LINE. При освобождении устройства первый из заблокированных транзактов войдет в блок SEIZE и одновременно в блок DEPART, прекращая накопление статистики об ожидании этого транзакта.

GENERATE 100,20

QUEUE LINE

SEIZE SYSTEM

DEPART LINE

ADVANCE 80,30

RELEASE SYSTEM

TERMINATE 1

Блок ADVANCE не надо отождествлять с обслуживающим прибором. Этот блок имитирует задержку, где бы он ни стоял. Этот блок не препятствует входу в него транзактов, т.е. перед ним очереди не образуются. В этом блоке может одновременно находиться любое количество транзактов, интерпретатор вычисляет время задержки для каждого отдельно, поэтому выходят транзакты из этого блока не в порядке поступления в него, а по истечении определенных для них интервалов времени задержки.

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

Прогон модели начинается командой START после процесса компиляции и продолжается до тех пор, пока не будет остановлен командой HALT или пока значение счетчика завершения (отдельная ячейка памяти, начальное значение устанавливается равным значению операнда А команды START ) не станет равным 0 или отрицательному числу.

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

Счетчик завершения - это ячейка памяти, в которую с началом моделирования записывается положительное целое число, равное значению операнда A команды START:

START 5

Уменьшение значения счетчика происходит всякий раз, когда транзакт входит в блок TERMINATE c ненулевым значением операнда А. По умолчанию значение операнда А равно 0. Пример:

BREAK TERMINATE

(Транзакт при входе в данный блок удаляется из модели, при этом значение счетчика завершения не уменьшается).

TERMINATE 1

Транзакт удаляется и значение счетчика завершения уменьшается на 1.

В модели может находиться любое количество блоков TERMINATE.

Как только значение счетчика завершения станет равным 0 или отрицательным интерпретатор выводит стандартный отчет.

Исключение:

START 20,NP

По окончанию моделирования отчет не выводится.

Как можно завершить моделирование в определенный момент модельного времени, а не по достижению значения счетчика завершения равного 0 или отрицательного?

Пусть необходимо моделировать работу некоторой системы в течение 48 часов. Если в качестве единицы модельного времени выбрана 1 минута, то время моделирования составит 48 Х 60= 2880 таких единиц. При этом в программе должен быть сегмент:

GENERATE 2880

TERMINATE 1

Команда START 1 размещается в программе после записи всех блоков (или выполняется из меню).

В модели при этом не должны быть другие блоки TERMINATE с ненулевым операндом А.

Пример:

В направлении связи передаются телеграммы, промежутки времени между моментами поступления которых распределены равномерно в диапазоне 15 +/- 5 мин. Передача телеграмм производится в порядке их поступления, время передачи одной телеграммы составляет 10 +/- 4 мин. Построить модель, имитирующую работу направления связи в течение суток и позволяющую получить статистические данные о загрузке телеграфистов и об очередях.

Направление связи может быть представлено в виде одноканальной СМО, обслуживающим прибором можно представить телеграфиста:

* Модель работы направления связи

*

GENERATE 15,5 ; Поступление телеграммы

QUEUE QTLG ; Регистрация телеграммы в очереди

SEIZE TLG ; Занятие телеграфиста

DEPART QTLG ; Исключение телеграммы из очереди

ADVANCE 10,4 ; Задержка на время передачи

RELEASE TLG ; Освобождение телеграфиста

TERMINATE ; Удаление телеграммы из модели

*

* Сегмент управления временем моделирования

*

GENERATE 1440

TERMINATE 1

*

* Далее идет управляющая команда

*

START 1