Лабораторная работа 7
Моделирование в интерактивном режиме в GPSSW
Цель работы: изучить процесс моделирования с применением системы GPSSW в интерактивном режиме.
Теоретическое обоснование
Одна из наиболее интересных диалоговых особенностей системы GPSSW – возможность включения в модель любого оператора в интерактивном режиме в процессе моделирования, кроме оператора GENERATE, который является единственным исключением.
Для моделирования в интерактивном режиме, прежде всего, надо иметь активное требование, которое можно получить несколькими способами:
– использовать команду STOP для прерывания процесса моделирования;
– использовать функциональную клавишу, обеспечивающую вызов команды STOP. Эта команда регистрирует состояние моделируемой системы, когда любое требование пытается войти в любой блок;
– подождать до тех пор, пока процесс моделирования не прекратится.
Общая постановка задачи
Выполните все описанные в примере действия. Выполните индивидуальное задание. Оформите отчет.
Пример выполнения работы
Постановка задачи
Допустим, что нам надо исследовать работу мастерской по ремонту техники. В мастерскую поступают для ремонта те или иные изделия с интервалом 29±3 единицы времени с равномерным законом распределения. Известно время ремонта поступающих в систему изделий. Оно колеблется в пределах 27±6 единиц времени с равномерным законом распределения. Требуется определить параметры функционирования системы.
Создание имитационной модели
Допустим, что имитационная модель выглядит так, как показано на рисунке 1.
Рисунок 1 - Имитационная модель ремонтной мастерской REM_MASTER
Первые четыре строки модели представляют собой комментарии к нашей задаче. Вид этой части модели зависит от вкуса разработчика. Однако желательно представить здесь информацию о том, с помощью какой системы проводится моделирование, в каком файле будет храниться модель и что она выполняет.
Для получения активного требования будет использоваться команда STOP.
Транслирование модели
Для транслирования модели выполните следующие действия:
• щелкните по пункту Command главного меню. Появится контекстное меню;
• щелкните по пункту Create Simulation (Создать выполняемую модель) выпада ющего меню. Появится окно JOURNAL с сообщениями о результатах трансляции. Сообщения будут выглядеть, например, так, как показано на рисунке 2.
Рисунок 2 - Окно JOURNAL для имитационной модели REM_MASTER
Поскольку на данный момент активным становится окно JOURNAL, то оно перекрывает окно модели.
Открытие диалогового окна BLOCK ENTITIES
Для открытия диалогового окна BLOCK ENTITIES выполните следующие действия:
• щелкните по пункту Window главного меню. Появится контекстное меню;
• щелкните по пункту Simulation Window (Окно моделирования) выпадающе- го меню. Появится всплывающее меню;
• щелкните по пункту Blocks Window (Окно блоков) всплывающего меню. Появится диалоговое окно BLOCK ENTITIES (Блочные элементы), показанное на рисунке 3;
Рисунок 3 - Диалоговое окно BLOCK ENTITIES
• щелкните дважды по первому блоку – GENERATE;
• щелкните по кнопке Place (Разместить) на панели инструментов в верхней части диалогового окна BLOCK ENTITIES.
Моделирование системы
Для моделирования системы выполните следующие действия:
• щелкните по пункту Command главного меню. Появится контекстное меню;
• щелкните по пункту START. Появится диалоговое окно Start Command, по- казанное на рисунке 4;
Рисунок 4 - Диалоговое окно Start Command
• вместо 1 введите 1000 – это число изделий, которые предполагается отремонтировать в мастерской;
• щелкните по кнопке OK.
Просмотр сообщений
Чтобы просмотреть сообщения в окне JOURNAL, выполните следующие действия:
• щелкните по пункту Window главного меню. Появится контекстное меню, показанное на рисунке 5.
Рисунок 5 - Контекстное меню пункта Window главного меню
В нижней части выпадающего меню сообщается, что на данный момент в системе GPSSW открыты три окна:
– 1 REM_MASTER – окно модели под именем REM_MASTER;
– REM_MASTER.1.sim – JOURNAL для модели под именем REM_ MASTER. Следует обратить внимание, что сообщения, появляющиеся в окне JOURNAL, имеют расширение.sim;
– REM_MASTER.1:2 – BLOCK ENTITIES для модели REM_ MASTER.
- Перед названием последнего окна стоит галочка. Значит, в данный момент оно является активным. Щелчком левой кнопки мыши можно активизировать любое открытое окно;
• щелкните по названию второго окна – REM_MASTER.1.sim – JOURNAL. Появится окно с сообщением об останове, показанное на рисунке 6.
Рисунок 6 - Окно JOURNAL c сообщением об останове в модели REM_MASTER
Вернемся к диалоговому окну BLOCK ENTITIES, щелкнув по нему на видимой его части. Оно выйдет на передний план. Затем для создания активного требования:
• щелкните по первому блоку – GENERATE (Генерировать);
• щелкните по кнопке Remove (Удалить) на панели инструментов в верхней части диалогового окна.
Таким образом, мы создали активное требование. Теперь можно присвоить ему имя и значение. Для этого:
• щелкните по пункту Command главного меню. Появится контекстное меню;
• щелкните по пункту Custom (Заказать) выпадающего меню. Появится диалоговое окно Simulation Command, в котором введите оператор ASSIGN (Присвоить), например, в виде, представленном на рисунке 7;
•
- Рисунок 7 - Диалоговое окно Simulation Command
• щелкните по кнопке OK.
Активное требование теперь имеет параметр требования по имени Cena, содержащий заданное значение.
Для просмотра всех параметров этого требования, в том числе и вновь введенного параметра под именем Cena, выполните следующие действия:
• щелкните по пункту Window главного меню. Появится контекстное меню;
• щелкните по пункту Simulation Snapshot (Снимок моделирования) выпада- ющего меню. Появится всплывающее меню;
• щелкните по пункту CEC Snapshot. Появится окно CURRENT EVENTS CHAIN SNAPSHOT (Снимок цепи текущих событий);
• щелкните в нем по пиктограммам, расположенным слева, – по всем пиктограммам со знаком +. Тогда окно может выглядеть так, как показано на рисунке 8.
•
Рисунок 8- Снимок цепи текущих событий в модели REM_MASTER
Теперь закройте окно снимка CEC в модели REM_MASTER, щелкнув мышью по кнопке закрытия (с крестиком), расположенной в верхнем правом углу окна. Можно также просмотреть значение параметра активного требование с помощью команды SHOW (Показать). Для этого:
• щелкните по пункту Command главного меню. Появится контекстное меню;
• щелкните по пункту SHOW. Появится диалоговое окно Show Command (Показать команду), в котором введите имя активного требования – P$Cena. Это будет выглядеть так, как изображено на рисунке 9;
Рисунок 9 - Диалоговое окно Show Command
• щелкните по кнопке OK. Значение параметра P$Cena появится в окне JOURNAL и в строке состояния в нижней части главного окна системы GPSSW;
• активизируйте окно JOURNAL с помощью выпадающего меню пункта Window главного меню – об этом говорилось выше. Появится окно с фик- сацией введенного значения нового параметра требования, показанное на рисунке 10.
Рисунок 10 - Окно JOURNAL для модели REM_MASTER
Теперь попробуем использовать оператор TRACE (Трассировать). Для этого:
• щелкните по пункту Command главного меню. Появится контекстное меню;
• щелкните по пункту Custom выпадающего меню. Появится диалоговое окно
Simulation Command, в котором введите оператор TRACE;
• щелкните по кнопке OK. Появится дополнительное сообщение в окне JOUR- NAL (Журнал) с фиксацией времени и номера требования.
Это действие имеет тот же самый эффект, как если бы активное требование пропустили через блок TRACE. Индикатор следа для активного требования те- перь включен. Чтобы продолжить моделирование:
• щелкните по пункту Command главного меню. Появится контекстное меню;
• щелкните по пункту Continue (Продолжить) выпадающего меню. Процесс мо- делирования продолжится. Появится измененное окно JOURNAL, показанное на рисунке 11.
Рисунок - 11. Измененное окно JOURNAL для модели REM_MASTER
Заметьте, что в окне JOURNAL каждый вход в блок TRACE кончается следом, потому что индикатор следа требования включен.
Система GPSSW может также вызывать командные файлы, состоящие из инструкций INITIAL (Инициализировать) или других команд. Это можно делать или в интерактивном режиме, вводя команду INCLUDE (Включить) в диалоговом окне Custom Command (Заказные команды), или помещая инструкции в модель.
Допустим, наша программа под названием REM_TEL2.GPS будет выглядеть так, как изображено на рисунке 12.
Рисунок 12 - Программа моделирования Rem_tel2
Но мы хотим изменить значения двух сохраняемых величин: X1 и X2. Для этого мы должны создать текстовый файл, в котором будут находиться их новые значения:
• щелкните по кнопке New (Создать) – первой кнопке на стандартной панели инструментов с изображением чистого листа. Появится диалоговое окно Новый документ, показанное на рисунке 13;
Рисунок 13 -. Диалоговое окно Новый документ
• щелкните по опции Text File (Текстовый файл), а затем – по кнопке OK. Появится текстовое окно под названием Untitled Text File 1 (Неименованный текстовый файл 1);
• введите в текстовом окне необходимые начальные значения так, как показано на рисунке 14;
Рисунок 14 - Текстовое окно
Untitled Text File 1
Рисунок 15 - Диалоговое окно Сохранить как
• щелкните по кнопке Save (Сохранить) – третьей кнопке с изображением дискеты на стандартной панели инструментов. Появится диалоговое окно Сохранить как, показанное на Рисунок - 18;
• введите в текстовом поле Имя файла: имя файла, например Rem_tel2;
• выберите в раскрывающемся списке Тип файла: – Text File (*.txt);
• щелкните по кнопке Сохранить.
Теперь можно переходить к использованию текстового файла. Для этого:
• щелкните по пункту Command главного меню. Появится контекстное меню;
• щелкните по пункту Create Simulation (Создать выполняемую модель) выпа- дающего меню. Появится окно JOURNAL с сообщениями о результатах трансляции;
• щелкните по пункту Command главного меню. Появится контекстное меню;
• щелкните по пункту Custom выпадающего меню. Появится диалоговое окно
Simulation Command, показанное на рисунке 16;
• щелкните по кнопке OK. Появится окно JOURNAL с сообщением о результатах включения текстового файла. Сообщение будет выглядеть так:
INCLUDE "Rem_tel2.txt"
• щелкните по пункту Command главного меню. Появится контекстное меню;
• щелкните по пункту Retranslate (Перетранслировать).
После этого можно переходить к моделированию процесса с уже новыми начальными значениями исходных величин. Для этого:
• щелкните по пункту Command главного меню. Появится контекстное меню;
• щелкните по пункту START выпадающего меню. Появится диалоговое Start Command;
•
Рисунок16 - Диалоговое окно imulation Command
• введите нужное число заказчиков – пользователей мастерской, – например 100, и щелкните по кнопке OK. Появятся результаты моделирования с новы- ми начальными данными.
Можно текстовый файл ввести непосредственно в исходную модель. Это будет выглядеть так, как показано на рисунке 17.
Рисунок - 17. Имитационная модель Rem_tel2 с новыми начальными значениями
Отладка модели
Рассмотрим на конкретном примере отладку модели под названием REM_TEL1.GPS. Для этого:
• щелкните по пункту File главного меню системы. Появится контекстное меню;
• щелкните по пункту New выпадающего меню. Появится диалоговое окно Новый документ;
• выделите пункт Model и щелкните по кнопке ОК. Появится окно модели, в котором введите программу, показанную на рисунке 18.
Во введенной программе в самом начале добавлен оператор QTABLE, например, с меткой Time_ojid (Время ожидания) для сбора информации и построения соответствующей гистограммы функционирования очереди под именем, скажем, Remont.
Рисунок 18 - Окно имитационной модели ремонтной мастерской Rem_tel1
Чтобы вызвать окно для представления имитационной модели в системе GPSSW, можно также нажать комбинацию клавиш Ctrl + Alt + S.
Предварительно назначим чаще всего используемым командам соответствую- щие функциональные клавиши для данной модели. Для этого:
• щелкните по пункту Edit (Правка) главного меню системы. Появится выпа- дающее меню;
• щелкните по пункту Settings (Установки) выпадающего меню. Появится соответствующее диалоговое окно для данной программы;
• щелкните по вкладке Function Keys (Функциональные клавиши), а затем – по кнопке ОК. Появится соответствующая вкладка;
• введите в текстовые поля F8 и F9 соответственно команды SHOW P$N_zakaz и SHOW X$N_zakaz. Это будет выглядеть так, как показано на рисунке 19;
• щелкните по кнопке OK.
Рисунок 19 - Окно SETTINGS для модели ремонтной мастерской Rem_tel1
Эти действия обеспечили возможность вызова двух команд – SHOW P$N_zakaz и SHOW X$N_zakaz – с помощью соответственно клавиш F8 и F9. Это поможет сэкономить много времени при моделировании и использовании различных исходных данных.
Теперь перейдем к этапу трансляции модели. Для этого:
• щелкните по пункту Command главного меню системы или нажмите комби- нацию клавиш Alt + C. Появится контекстное меню;
• щелкните по пункту Create Simulation (Создать выполняемую модель) выпадающего меню.
Затем откроем окно BLOCK ENTITIES (Блочные элементы). Для этого:
• щелкните по пункту Window главного меню системы. Появится контекстное меню;
• щелкните по пункту Simulation Window выпадающего меню. Появится всплывающее меню;
• щелкните по пункту Blocks Window во всплывающем меню. Появится диалоговое окно BLOCK ENTITIES. В нашей задаче оно выглядит так, как показано на рисунке 20.
Рисунок 20 - Диалоговое окно BLOCK ENTITIES для модели Rem_tel1
Теперь поместим условие остановки требования (заказчика) на блоке 5.
Для этого:
• щелкните по пункту Command главного меню системы. Появится контекстное меню;
• щелкните по пункту Custom (Заказать) выпадающего меню. Появится диалоговое окно Simulation Command;
• введите в текстовом поле STOP 5 (Остановить на блоке 5). Это будет выглядеть так, как изображено на рисунке 21;
• щелкните по кнопке ОК. Появится окно JOURNAL.
Рисунок 21 - Диалоговое окно Simulation Command
Расположите окна JOURNAL и BLOCK ENTITIES так, чтобы можно было видеть каждое из них, а остальные пока скройте, то есть щелкните по кнопке со знаком подчеркивания (Свернуть) – первой в верхнем правом углу окна.
Для перемещения окна наведите курсор мыши на заголовок окна – верхнее си- нее поле, – нажмите левую кнопку мыши и, удерживая ее нажатой, переместите окно в нужное место, затем отпустите кнопку. Для уменьшения или увеличения размеров окна подведите курсор к любой его границе. Указатель мыши преобразуется в двустороннюю стрелку; нажав левую кнопку, перемещайте курсор, а вместе с ним и границу в нужном направлении.
Для показа окон:
• щелкните по пункту Window главного меню системы. Появится контекстное меню;
• щелкните по пункту Tile (Мозаика) выпадающего меню. Окна разместятся друг под другом так, как показано на рисунке 22.
Рисунок 22 - Главное окно системы с двумя окнами – JOURNAL и BLOCK ENTITIES – до начала моделирования для модели Rem_tel1
Теперь перейдем к моделированию системы:
• щелкните по пункту Command главного меню системы или нажмите комби- нацию клавиш Alt + C. Появится контекстное меню;
• щелкните по пункту START выпадающего меню. Появится диалоговое окно Start Command, в котором укажите число прогонов модели, например 100, и щелкните по кнопке ОК. В ранее открытые окна добавится информация, и эти окна будут выглядеть так, как изображено на рисунке 23.
Рисунок 23 - Главное окно системы с двумя окнами – JOURNAL и BLOCK ENTITIES – после начала моделирования для модели Rem_tel1
В окне JOURNAL вы видите сообщение о том, что требование остановилось на блоке 5. В окне BLOCK ENTITIES перед блоком 5 (5 QUE QUEUE …) останови- лось требование (транзакт) в виде маленького прямоугольника.
Теперь мы сделаем один шаг в моделировании с использованием функциональной клавиши F5, которая по умолчанию соответствует команде STEP 1 (см. рисунке 22). В окна JOURNAL и BLOCK ENTITIES снова добавится информация. Поскольку мы назначили функциональные клавиши F8 и F9 соответственно командам SHOW P$N_zakaz и SHOW X$N_zakaz, то в любой момент, нажав на эти клавиши, можем в окне JOURNAL получить численные значения стандартных числовых атрибутов P$N_zakaz и X$N_zakaz.
Теперь, когда мы умеем управлять активным требованием (заказчиком), давайте снимем условие остановки. Для этого:
• щелкните по пункту Window главного меню системы. Появится контекстное меню;
• щелкните по пункту Simulation Snapshot (Снимок моделирования) выпада- ющего меню. Появится диалоговое окно Stop Conditions (Условия останов- ки). Оно будет выглядеть так, как показано на рисунке 24;
Рисунок 24 - Диалоговое окно Stop Conditions
• щелкните по числу 5 для выделения строки;
• щелкните по кнопке Remove – выделенная строка исчезнет;
• щелкните по кнопке OK. Условие остановки в примере будет снято. Об этом появится следующее сообщение в окне JOURNAL:
STOP 5,0,OFF
Можно посмотреть некоторые другие показатели работы моделируемой систе- мы, например текущее содержание очереди, которое выводится с помощью соответствующего стандартного числового атрибута Q$Remont. Для этого:
• щелкните по пункту Command главного меню системы или нажмите комбинацию клавиш Alt + C. Появится контекстное меню;
• щелкните по пункту SHOW (Показать) выпадающего меню. Появится диалоговое окно Show Command, в котором укажите искомый показатель – Q$Remont. Это будет выглядеть так, как представлено на Рисунок - 25;
Рисунок 25 - Диалоговое окно Show Command
• щелкните по кнопке OK. Искомый показатель появится в окне JOURNAL
и в строке состояния в нижней части главного окна системы GPSSW.
Нажимая на функциональную клавишу F5, мы на каждом шаге можем просмот- реть, что же происходит во время работы системы.
Можно просмотреть требования и в другом окне – TABLE WINDOW. Для этого:
• щелкните по пункту Window главного меню системы. Появится контекстное меню;
• щелкните по пункту Simulation Window выпадающего меню. Появится всплывающее меню:
• щелкните по пункту Table Window (Окно гистограммы) во всплывающем меню. Появится диалоговое окно Open Table Window (Открыть окно гистограммы) (рисунок 26).
Рисунок 26 - Диалоговое окно Open Table Window
• щелкните по кнопке OK. Появится окно TABLE WINDOW c соответствующей гистограммой (рисунок 27).
На этой гистограмме можно увидеть распределение времени ожидания заказчиков ремонта. Среднее время ожидания составляет 13,070 мин, стандартное отклонение – 2,912 мин.
Рисунок 27 - Диалоговое окно TABLE WINDOW для модели Rem_tel1