
- •Тема: Основные понятия языка моделирования gpss. Введение
- •1.1. Пример моделируемой системы.
- •Устройство
- •1.2. События и таймер модельного времени.
- •Модельное время
- •56 Разыгранное значение времени обслуживания (15) 71
- •1.3. Основные объекты языка gpss.
- •1.4. Простейшие операторы gpss
- •1.4.1. Введение транзактов в модель
- •1.4.2. Удаление транзактов из модели
- •1.4.3. Управление устройствами.
- •1.4.4. Задержка транзактов во времени.
- •1.4.5. Сбор статистики при ожидании в очереди.
- •1.5. Модель работы парикмахерской
- •1.6. Расчет статистических характеристик объектов.
- •1.7. Задания для самостоятельной работы
- •Вариант 1.
- •Вариант 2.
- •Вариант 3.
- •Вариант 4.
- •Вариант 5.
- •Вариант 6.
- •Вариант 8.
- •Вариант 9.
- •Вариант 10.
- •Тема: Технология работы в системе gpss World
- •2.1. Работа с файлами
- •2.2. Ввод текста модели
- •2.3. Компиляция и исправление ошибок
- •2.4. Выполнение программы имитации
- •2.5. Структура стандартного отчета
- •2.6. Управляющие операторы gpss World
- •2.7. Задание для самостоятельной работы
- •Тема: Основные приемы программирования моделей
- •3.1. Организация обработки различных типов транзактов
- •Устройство
- •3.2. Использование приоритетов транзактов
- •Устройство
- •3.3. Изменение маршрутов движения транзактов
- •3.4. Моделирование многоканальных устройств
2.4. Выполнение программы имитации
Однократное выполнение программы имитационной модели будем называть прогоном модели. Прогон начинается, когда система встречает управляющий оператор Start. Он может быть в тексте модели, а также его можно задать в интерактивном режиме командой Command/START. Появляется диалоговое окно, в котором следует уточнить значение счетчика завершений. В нашем примере моделирование должно завершаться с приходом транзакта-таймера, который уменьшает счетчик завершений на 1 (см. последнюю строку программы). Поэтому начальное значение счетчика завершений должно быть равно 1, т.е. команда начала моделирования имеет вид START 1.
В ходе выполнения моделирования текущие сообщения выводятся в журнал и отражаются в строке состояния. В случае успешного окончания прогона модели, в Журнале указывается время окончания моделирования и сообщение о формировании отчета. Отчет о результатах моделирования формируется автоматически в окне REPORT (Отчет).
Выполните команду START 1 и изучите сообщения в окне Журнала. Моделирование закончилось в 50 минут модельного времени (Clock is 50.000000). Это же время указано в окне REPORT (Отчет) в столбце END TIME.
Повторные команды START (повторные прогоны) выполняются с текущего значения модельного времени. Учитывается также и накопленная статистика моделирования, т.е. моделирование продолжается с того состояния, в котором модель находилась в момент прекращения предыдущего прогона. Сбросить в 0 модельное время и статистику моделирования можно командой Command/CLEAR.
Выполните еще раз команду START 1. Будет сформирован новый отчет, в котором значение END TIME равно 100 и статистика моделирования учитывает информацию, накопленную во время обоих прогонов. Теперь задайте команду Command/CLEAR выполните еще один прогон модели. Время окончания моделирования будет равно 50, т.е. моделирование было начато сначала (с нулевого момента времени, когда в системе не было еще ни одного транзакта).
Иногда не требуется получать отчет о результатах моделирования при каждом прогоне модели. Подавить формирование отчета можно, если в команде START задать параметр NP (не формировать отчет):
START 1,NP
Обратите внимание, что между запятой и параметром NP не должно быть пробела!
Содержимое окна JOURNAL (Журнал) можно сохранить в файле с расширением .sim. Если закрыть окно Журнала без сохранения его содержимого, то объект Имитация (т.е., откомпилированная программа модели) удаляется из памяти компьютера. Требуется вновь компиляция модели и запуск имитации на выполнение.
Закройте без сохранения окно Журнала и все созданные ранее окна Отчетов.
Рассмотрим пример ошибок, возникающих в ходе имитации. При проявлении любой такой ошибки моделирование аварийно прекращается.
Внесите в текст программы следующие исправления: в блоке DEPART измените имя очереди на QMast. Выполните компиляцию модели. Такая ошибка не будет выявлена в процессе компиляции. Начните выполнение прогона модели командой START 1. Имитация будет остановлена, когда первый транзакт попытается войти в блок DEPART. Система выдаст сообщение, что зафиксирована попытка сделать содержимое очереди отрицательным (рис.2.6). Дело в том, что система считает, что имеется две разные очереди: QMaster и QMast. Транзакт был учтен, как поступивший в очередь QMaster (соответствующий счетчик количества транзактов в этой очереди был увеличен), а покинуть он пытается другую очередь – QMast. Счетчик количества транзактов должен быть уменьшен на единицу, но тогда он станет отрицательным, ведь его начальное значение равно 0! Таким образом обнаруживается ошибка в модели, когда имена очереди в блоках QUEUE и DEPART отличаются.
Рис.2.6. Окно Журнала с ошибкой времени выполнения.
Исправьте ошибку и перекомпилируйте модель. Выполните прогон модели без подавления отчета.
В нашем примере прогон продолжается ровно 50 единиц модельного времени и затем моделирование прекращается (с приходом транзакта-таймера). Напомним (см. лабораторную работу № 1), что для моделирования прохождения определенного количества транзактов (например, 100), нужно изменить программу модели следующим образом:
удалить две последние строки модели, касающиеся транзакта –таймера;
изменить блок TERMINATE для транзактов, изображающих клиентов, задав ему параметр 1:
TERMINATE 1
начать моделирование командой START 100.
В этом случае прохождение каждого транзакта через блок TERMINATE уменьшает счетчик завершений на 1. Поэтому, когда 100 клиентов покинут парикмахерскую, счетчик завершений станет равным 0 и моделирование прекратится.