
- •Введение
- •Лабораторная работа № 1 ознакомление c интерфейсом пользователя системы gpssw
- •1. Редактирование в среде gpssw
- •2. Блоки (операторы) gpss-модели
- •4. Лабораторное задание
- •Лабораторная работа № 2 Практическая работа в gpssw. Первая программа. Лабораторное задание
- •Лабораторная работа № 3 Изучение средств наблюдения за процессом моделирования в среде gpssw Лабораторное задание
- •Лабораторная работа № 4 Изучение средств отладки моделей в среде gpssw Отладка модели
- •Лабораторное задание
- •Лабораторная работа № 5 Изучение средств отображения и обработки результатов моделирования в среде gpssw Лабораторное задание
- •Лабораторная работа № 6
- •Содержание отчета
- •Методические указания к выполнению работы
- •Лабораторная работа № 7
- •Содержание отчета
- •Методические указания к выполнению работы
- •Лабораторная работа № 8
- •Содержание отчета
- •Методические указания к выполнению работы
- •Лабораторная работа № 9 моделирование сетей массового обслуживания
- •Приложение 1.Содержимое окон Окно блоков
- •Окно устройств
- •Окно многоканальных устройств
- •Окно очередей
- •Окно таблиц
- •Окно графиков
- •Окно параметров сча
- •Окно отчета
- •Приложение 2.Системные числовые атрибуты (сча)
- •Список литературы
4. Лабораторное задание
Запустите систему GPSS World (GPSSW). Выберите в папке Sample Models файл sample1.gps и откройте его:
; GPSS World Sample File - SAMPLE1.GPS
**********************************************************************
* *
* Barber Shop Simulation *
* *
**********************************************************************
GENERATE 300,100 ;Create next customer.
QUEUE Barber ;Begin queue time.
SEIZE Barber ;Own or wait for barber.
DEPART Barber ;End queue time.
ADVANCE 400,200 ;Haircut takes a few minutes.
RELEASE Barber ;Haircut done. Give up the barber.
TERMINATE 1 ;Customer leaves.
Обсудим данную модель, например, парикмахерской (хотя данная модель может иметь и другую интерпретацию). Клиенты прибывают в среднем каждые 300 +/ - 100 единиц модельного времени. В этом случае говорят, что время между клиентами распределено равномерно в интервале [200-400] единиц. Парикмахер тратит на стрижку в среднем 400 +/- 200 единиц. Следовательно, теоретический коэффициент загрузки системы равен примерно 400/300=1,33, т.е. система явно перегружена.
Вы видите, что операторы программы не содержат номеров строк. Однако GPSSW использует порядковые номера строк для указания места ошибок и других функций. По этим номерам работают команды Search/Go To Line. Попробуйте выполнить этот пункт меню и осуществите, например, переход к строке 10.
Считанный файл с программой непосредственно не готов к прогону – требуется его компиляция.
Рано или поздно вам потребуются дополнительные справочные сведения. Покажем, как получить доступ к ним. Щелкнем дважды по блоку GENERATE, чтобы оно оказалось выделенным, и нажмем F1. Система перечислит разделы вхождения GENERATE в справочник. Выберем строку Block Statements, чтобы видеть определение блока. Прокручивая окно, можно просмотреть раздел.
Аналогично можно получить сведения по командам, процедурам, СЧА – стандартным числовым атрибутам и т.д. Даже если в тексте нет предмета запроса, напечатайте в окне модели нужное слово, выделите его, получите справку и удалите его.
Можно получить справку по разделам главного меню. Для этого установите мышь на соответствующий раздел и, не отпуская нажатой кнопки мыши, нажмите F1. Вы войдете в Help, связанный с данным разделом меню.
После компиляции создается отдельный объект – назовем его Имитация. С этого момента все взаимодействия заносятся в окно журнала (JOURNAL).
Вставим, например, блок BUFFER после блока GENERATE. Для этого, установив курсор на блок GENERATE , через меню Edit/Insert Line добавим пустую строку. Старайтесь размещать блоки один под другим – это сделает программу более читаемой.
Выполним File/Save As… для сохранения модели в файле под другим именем, в окне диалога введем новое имя tmp.gps. Не забудьте удалить этот файл после завершения сеанса, чтобы не засорять рабочую папку.
Выберем Command/Create Simulation. По данной команде выполняется трансляция (компиляция) модели и создается объект Имитация. При этом автоматически открывается окно JOURNAL, в котором записываются все взаимодействия и сообщения GPSSW – в частности, информация о найденных синтаксических ошибках (если они есть). Просмотрите журнал.
Познакомимся с окном блоков. Выберем Window/Simulation Window/Blocks Window. Появится детальный режим окна блоков, переключение в обзорный режим и обратно осуществляется в View/Entity Details. Попробуйте это.
Если процесс компиляции закончился без ошибок, начнем непосредственно моделирование. Выберем Command/Start. Когда откроется диалог, заменим число обрабатываемых сообщений (транзактов) в модели с 1 на 5000 и нажмем ОК. Понаблюдайте за процессом моделирования в окне блоков.
Если это окно закрыть, процесс моделирования быстро закончится – открытые окна замедляют процесс моделирования. Закройте окно блоков и убедитесь в этом.
После завершения моделирования откроется окно отчета (REPORT). Просмотрите отчет, используя ПРИЛОЖЕНИЕ. Обратите внимание на расчетное число заявок, прошедших через блок TERMINATE. и большое скопление заявок (сообщений, транзактов) в очереди (блок QUEUE раздел CURRENT COUNT). Очевидно, что система (парикмахер) не справляется с нагрузкой.
Для завершения сеанса выберите File/Exit и выйдите без сохранения.
Снова запустим GPSSW, откройте файл Sample Models/sample1.gps и откомпилируйте модель.
Перед началом моделирования построим график одной из характеристик модели в окне графиков. Будем рассматривать характеристику Q$BARBER – длину очереди к парикмахеру, т.е. посмотрим, как изменяется длина очереди в течении времени моделирования. Q$BARBER – стандартный числовой атрибут (СЧА), один из множества СЧА, имеющихся в GPSSW. В данном случае его запись вида W$<имя>, где W – класс атрибутов (в данном случае – очередь), а <имя> - имя очереди. Мы можем использовать этот СЧА, поскольку в модели имеется блок QUEUE.
Выполним Window /Simulation Window /Plot Window. Появится диалоговое окно, в которое введем последовательно в поле Label (поле метки) пояснение к графику (ОЧЕРЕДЬ), в поле Expression – выводимая зависимость (Q$BARBER- длина очереди BARBER), в поле Title – наименование графика ДИНАМИКА ОЧЕРЕДИ.
Для каждого графика необходимо ввести интервал времени, на котором строится график рассматриваемой характеристики. Этот интервал времени должен быть достаточно большой, чтобы график не мелькал и его можно было бы успеть разглядеть.
В поле Time Range (ось X – максимальное значение абсциссы – системного времени) введем 40000, в поле Max Value (ось Y – максимальное значение длины очереди) -100. Предельное значение системного времени (временной интервал для оси Х) определяется примерно из расчета обслуживания 100 заявок (дальше введем START 100), приходящих с интервалами 400 единиц времени, т.е. произведением времени (400) на количество сообщений (100).
Закончив ввод, щелкнем по верхней кнопке верхней PLOT (Построить), затем кнопку Memorize (Запомнить) и ОК. На экране увидим координатные оси, сам график появится после начала моделирования. Введем START 100. Отметим, что значение длины очереди (Q$BARBER) меняется скачкообразно.
Сделаем активным окно журнала и просмотрим СЧА и выражения. Выполним Command/SHOW и введем стандартный числовой атрибут С1 относительное системное время. В статусной строке этот СЧА будет выведен на момент окончания моделирования. Аналогичным образом посмотрим СЧА QM$BARBER – максимальную длину очереди.
Откроем окно выражений – Window / Simulation Window / Expression Window и затребуем системное время (АС1), для чего в поле LABEL введем “Время”, а в поле Expression - AC1, после чего нажмем кнопки View, а потом Memorize. Первая из них позволяет видеть значение выражения только в текущем прогоне, вторая – использовать в будущих прогонах. Точно так же затребуем длину очереди (Q$BARBER) и номер активного транзакта (XN1).
Закроем окно графиков и откроем окно устройств (Window / Simulation Window / Facilities Window). Разместим два окна (устройств и выражений) так, чтобы видеть оба. Введем START 20000, NP и, остановим процесс по клавише F4. Просмотрим результаты работы (AC1, Q$BARBER и XN1) сильно загруженного парикмахера (нашего устройства) на момент останова.
Выберите EDIT / SETTING / Function Keys и просмотрите настройки функциональных клавиш GPSSW.
Закроем окно выражений и устройств и откроем окно блоков. Используем это окно для ввода контрольных остановов на траектории транзактов. Для останова выберем блок DEPART. Щелкнем по иконке этого блока, а затем по иконке кнопки Place (Поместить). Сделаем активным окно журнала.
Выберем Command/Custom и введем в окно команду Trace. С этого момента каждый вход активного транзакта в новый блок вызовет появление в журнале трассировочного сообщения. Блок Trace не становится постоянной частью модели.
Выполним START 1000 и убедимся по окну журнала, что выполнение модели остановлено при входе в блок DEPART.
Выполним несколько шагов моделирования (F5) и проследим за сообщениями в окне журнала. Такое пошаговое моделирование позволяет изучить подробно работу модели.
Теперь удалим контрольный останов. Для этого в окне блоков выделим блок DEPART и нажмем на кнопку Remove.
Нажатием F2 продолжим моделирование. Прервем моделирование, нажав кнопку HALT в окне блоков. Выполним Command/Custom и введем команду Report, Now. Немедленно будет создан отчет, отражающий состояние модели на момент прерывания.
Продолжим моделирование, закрыв все активные окна. По завершении моделирования отчет формируется автоматически. Просмотрите отчет и сделайте выводы.
Завершите сеанс работы с GPSSW.
Оформите отчет, который должен содержать следующее:
Название и цель работы.
Индивидуальное задание (в 1 –5 лабораторных работах отсутствует).
Перечень и описание основных блоков и операций, графиков или гистограмм, с которыми вы познакомились в процессе выполнения данной работы.
Тексты моделей, используемых в данной работе.
Стандартный GPSS-отчет (REPORT), полученный в данной работе с расшифровкой его содержимого.
Выводы по работе.