Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник по ИМ для заочников.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
648.7 Кб
Скачать

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 и моделирование прекратится.