
- •Лекции по gpss
- •Блоки и транзакты
- •Транзакт входит в блок, функцией которого является удаление транзакта из модели.
- •Транзакт входит в блок, функцией которого является задержка транзакта на некоторое определенное в модели время.
- •Удаление транзактов из модели и завершение моделирования
- •Занятие и освобождение одноканального устройства
- •Когда транзакт поступает в устройство, он должен обслуживаться там некоторое время.
- •Сбор статистики
- •Управление продолжительностью моделирования
- •Логика работы интерпретатора
- •1. Он находится в каком-либо конкретном блоке.
- •2. Он находится (отмечен) в одном или нескольких цепях (списках) gpss.
- •1) Единица модельного времени определяется разработчиком модели, который задает все временные интервалы в одних и тех же, выбранных им, единицах;
- •Занятие и освобождение многоканального устройства (памяти)
- •Абсолютное и относительное время. Команды clear и reset
- •0 Относительное
- •Изменение значений параметров транзактов
- •Числовые и символьные имена. Команда equ
- •Блоки, изменяющие маршруты транзактов
- •Блок transfer
- •Блок test
- •Блок gate
- •Блок loop
- •Команды table и qtable. Таблицы. Блок tabulate
- •Сохраняемые величины и матрицы сохраняемых величин
- •Initial Xj, значение
- •Initial mXj( a,b), значение
- •Арифметические переменные. Команды variable (fvariable)
- •Генераторы случайных чисел
- •1. Разыгрывается случайное число, равномерно распределенное в диапазоне 0;1;
- •2. Полученное число преобразуется в эквивалентное ему значение, но уже принадлежащее интересующей нас выборке.
- •Функции gpssw. Команда function
- •Модель смо
- •Блоки для работы со списками пользователя
- •Моделирование сетей массового обслуживания
- •1,2 Узел – 1 канал,3 узел – 2 канала
- •1,2 Устройства – одноканальные, 3-4 канала
- •Моделирование захвата прибора
- •Логические переключатели
- •Булевские переменные. Команда bvariable
- •Обработка транзактов, принадлежащих одному ансамблю
Сбор статистики
В 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