- •Белкоопсоюз
- •1.2. Этапы имитационного моделирования
- •1.3. Программное обеспечение имитационного моделирования
- •Тема 2. Основные понятия имитационного моделирования
- •2.1. Пример моделируемой системы
- •Устройство
- •2.2. События и таймер модельного времени.
- •2.3. Механизмы продвижения времени
- •2.4. Организация продвижения времени в системе gpss для моделируемого примера
- •Тема 3. Система моделирования gpss World
- •3.1. Общая характеристика системы gpss World
- •3.2. Объекты языка gpss
- •3.3. Простейшие операторы gpss
- •3.3.1. Введение транзактов в модель
- •3.3.2. Удаление транзактов из модели
- •3.3.3. Управление устройствами
- •3.3.4. Задержка транзактов во времени
- •3.3.5. Сбор статистики при ожидании в очереди
- •3.3.6. Модель работы парикмахерской
- •3.3.7. Изменение маршрутов движения транзактов
- •3.3.8. Моделирование многоканальных устройств
- •Тема 4. Генерация случайных чисел
- •4.1. Общие принципы генерации случайных величин
- •4.2. Линейные конгруентные генераторы
- •4.3. Генерирование непрерывных случайных величин согласно заданному закону распределения
- •Тема 5. Анализ выходных данных
- •5.1. Переходный период стохастического процесса
- •5.2.Оценка средних значений показателей
- •5.3.Получение заданной точности и расчет числа повторных прогонов
3.3.3. Управление устройствами
Объект типа “устройство” является аналогом канала обслуживания в СМО. В каждый момент времени он может быть занят только одним транзактом. Если устройство занято, транзакты ожидают в очереди его освобождения.
Занятие устройства транзактом выполняется блоком SEIZE(Занять) формата:
SEIZEA
Операнд A– символическое или числовое имя устройства. Правила записи всех символических имен вGPSS(будь то имя устройства, имя очереди, имя переменной или метка в модели) следующие:
Первые три символа должны быть буквами.
Имя не должно быть ключевым словом системы GPSS.
Все символы строчных букв преобразуются в прописные.
Вход транзакта в блок SEIZEмоделирует занятие устройства. Если транзакт пытается войти в этот блок, то производятся следующие действия:
Проверяется состояние устройства.
Если устройство свободно, то состояние устройства изменяется на “занято”, а транзакту разрешается дальнейшее продвижение.
Если же устройство занято, то транзакту не разрешается вход в этот блок. Он остается в предыдущем блоке, и на этом этапе его продвижение в модели заканчивается.
Освобождение устройства выполняется блоком RELEASE(Освободить) формата:
RELEASEA
Операнд A– символическое или числовое имя устройства.
Этот блок разрешает вход и выход транзакту в любом случае. Когда транзакт входит в этот блок, состояние устройства изменяется на “свободно”. Попытка входа в блок RELEASE транзакта, ранее не прошедшего блок SEIZE с тем же именем в поле А, что и в блоке RELEASE, приводит к прекращению моделирования из-за нарушения логики процесса.
Если разработчик модели использует пару блоков SEIZE–RELEASEс одним и тем же именем устройства, то тем самым он сообщает системе о наличии такого устройства и необходимости регистрировать статистические данные по нему. По окончании моделирования в отчете выводятся следующие статистические характеристики устройства:
1) Коэффициент использования: доля времени, в течение которого устройство было занято обслуживанием, в общем модельном времени. Рассчитывается как отношение времени занятости устройства к общему модельному времени, в течении которого имитировалась система. В отчете имеет имя (UTIL.)
2) Среднее время обслуживания. В отчете – (AVE.TIME)
3) Количество обслуживаний (число транзактов, входивших в блок SEIZE). Учитывается в том числе и тот транзакт, который в момент окончания моделирования продолжает обслуживание). В отчете – (ENTRIES)
3.3.4. Задержка транзактов во времени
Моделирования обслуживания на транзакта на устройстве выполняется задержкой этого транзакта на случайное (в общем случае) время обслуживания. Реализуется это в GPSSс помощью блокаADVANCE(Задержать) формата:
ADVANCEA,B
A– среднее значение времени задержки (0);
B- половина поля допуска (размах) интервала времени задержки (0).
Блок ADVANCEникогда не препятствует входу транзакта. Любое число транзактов может находится в этом блоке одновременно. Когда транзакт попадает в этот блок, разыгрывается случайное значение времени пребывания в нем, согласно операндамAиB. Далее транзакт будет находиться в блокеADVANCEдо истечения этого времени. Как и в случае блокаGENERATE, для реализации других видов распределений, отличных от равномерного, нужно использовать в качестве аргументов специальные функции.
Примеры.
ADVANCE10,2
Время задержки распределено равномерно в интервале 102.
ADVANCE100
Время задержки любого транзакта равно 100 (неслучайное значение, т.к. параметр Bпо умолчанию равен 0).
SEIZEMASTER
ADVANCE16,4
RELEASEMASTER
Классический пример использования цепочки SEIZE-ADVANCE-RELEASEдля моделирования работы устройства (парикмахера из нашего примера). Транзакт, двигающийся по этой цепочке, займет устройство с символическим именемMASTER, задержится там на 164 единицы времени, и затем покинет его. Когда данный транзакт войдет в блокRELEASE, и отработает процедура этого блока, следующий транзакт сможет использовать устройствоMASTER.