Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум по GPSSW_новый.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
569.86 Кб
Скачать

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), полученный в данной работе с расшифровкой его содержимого.

  • Выводы по работе.