- •Введение
- •Лабораторная работа № 1 ознакомление c интерфейсом пользователя системы gpssw
- •1. Редактирование в среде gpssw
- •2. Блоки (операторы) gpss-модели
- •4. Лабораторное задание
- •Лабораторная работа № 2 Практическая работа в gpssw. Первая программа. Лабораторное задание
- •Лабораторная работа № 3 Изучение средств наблюдения за процессом моделирования в среде gpssw Лабораторное задание
- •Лабораторная работа № 4 Изучение средств отладки моделей в среде gpssw Отладка модели
- •Лабораторное задание
- •Лабораторная работа № 5 Изучение средств отображения и обработки результатов моделирования в среде gpssw Лабораторное задание
- •Лабораторная работа № 6
- •Содержание отчета
- •Методические указания к выполнению работы
- •Лабораторная работа № 7
- •Содержание отчета
- •Методические указания к выполнению работы
- •Лабораторная работа № 8
- •Содержание отчета
- •Методические указания к выполнению работы
- •Лабораторная работа № 9 моделирование сетей массового обслуживания
- •Приложение 1.Содержимое окон Окно блоков
- •Окно устройств
- •Окно многоканальных устройств
- •Окно очередей
- •Окно таблиц
- •Окно графиков
- •Окно параметров сча
- •Окно отчета
- •Приложение 2.Системные числовые атрибуты (сча)
- •Список литературы
Лабораторная работа № 4 Изучение средств отладки моделей в среде gpssw Отладка модели
В данной работе изучим и практически освоим команды и операторы GPSSW , позволяющие производить пошаговую отладку моделей.
Отладкой программы называется процесс поиска и устранения ошибок в ней. Это определение в полной мере относится к программным имитационным моделям на языке GPSS.
Под отладкой GPSS-модели мы будем понимать процесс поиска и устранения логических ошибок, которые могут быть обнаружены на этапе трансляции, либо проявляются при выполнении модели, либо искажают результаты моделирования.
Отладка сложной GPSS-модели представляет собой длительный и трудоемкий процесс, требующий хорошего знания языка моделирования и принципов работы моделирующей программы GPSSW, владения средствами отладки, которые имеются в среде GPSSW, и определенного искусства, приходящего вместе с опытом разработки и отладки GPSS-моделей. Данная лабораторная работа посвящена лишь одной из этих составляющих - средствам отладки GPSS-моделей, реализованным с помощью специальных команд интегрированной среды GPSSW.
Чтобы понять действие этих команд и уяснить возможности отладки с их использованием, надо иметь представление о внутреннем механизме работы GPSSW. Так как этот вопрос будет подробно рассмотрен на лекциях, приведем здесь лишь самые общие сведения, необходимые для понимания содержания работы.
Функционирование любой GPSS-модели заключается в продвижении транзактов через блоки модели. Транзакты - это динамические объекты модели, соответствующие заявкам в моделируемой системе массового обслуживания. Блоки - это операционные объекты модели, управляющие взаимодействием транзактов с аппаратными объектами (одноканальными и многоканальными устройствами), соответствующими обслуживающим приборам моделируемой системы, и статистическими объектами (очередями и таблицами), служащими для сбора статистики о поведении модели.
Рассмотрим, например, GPSS-модель одноканальной системы массового обслуживания с неограниченной длиной очереди:
GENERATE 100,50
QUEUE LINE
SEIZE SYSTEM
DEPART LINE
ADVANCE 80,40
RELEASE SYSTEM
TERMINATE 1
В этой модели блок GENERATE создает и вводит в модель Транзакты в некоторые случайные моменты времени. Каждый из этих транзактов в процессе моделирования продвигается через все блоки от блока GENERATE до блока TERMINATE, где уничтожается и выводится из модели. При входе транзакта в блок SEIZE моделируется занятие обслуживающего прибора, а если он уже занят, то транзакт задерживается перед блоком SEIZE. Блок ADVANCE моделирует задержку обслуживания в приборе, а блок RELEASE - освобождение прибора по окончании обслуживания. Блоки QUEUE и DEPART моделируют вход в очередь перед прибором и выход из нее при поступлении заявки в прибор на обслуживание. Блоки SEIZE и RELEASE управляют взаимодействием транзактов с аппаратным объектом - одноканальным устройством с именем SYSTEM; блоки QUEUE и DEPART - со статистическим объектом - очередью с именем LINE. Последовательность блоков такова, что взаимодействие транзактов с одноканальным устройством SYSTEM и очередью LINE полностью соответствует тому, что происходит в одноканальной системе массового обслуживания с ожиданием.
Продвижение транзактов через блоки происходит на фоне модельного времени, для поддержания которого в GPSSW имеется специальный таймер. Например, блок GENERATE в рассмотренной выше модели создает поток транзактов, входящих в модель, через случайные интервалы времени, которые принимают с равной вероятностью значения из отрезка [100-50;100+50]).
В GPSS-модели одновременно может находиться произвольное количество транзактов, и каждый из них является элементом одного из двух списков: списка текущих событий (СТС) или списка будущих событий (СБС). В СБС находятся транзакты, продвижение которых запланировано на моменты времени большие текущего модельного времени (будущие моменты времени). При этом транзакты в списке упорядочены по возрастанию запланированного времени продвижения. В СТС находятся транзакты, продвижение которых запланировано на текущий момент модельного времени или должно было произойти ранее, но было заблокировано из-за невозможности продвижения. Например, в рассмотренной выше модели в СБС может находиться не более двух транзактов: один, который должен в ближайшем будущем войти в модель через блок GENERATE, и другой, который должен выйти из блока ADVANCE по истечении задержки обслуживания. В СТС может находиться произвольное количество транзактов: один (активный) может при этом продвигаться через блоки, а остальные (образующие очередь к прибору) - заблокированы перед блоком SEIZE и находятся в блоке QUEUE.
Система имитационного моделирования GPSS, продвигая транзакты через блоки, переносит их при необходимости из одного списка в другой. Например, в рассмотренной модели при входе транзакта в блок ADVANCE он переносится из СТС в СБС, а по истечении времени задержки транзакт переносится из СБС в СТС и выходит из блока ADVANCE.
В более сложных моделях возникает необходимость в организации списков еще одного вида: списков пользователя. Перенос транзактов в эти списки из СТС и обратно производится в результате входа транзактов в определенные блоки (LINK и UNLINK).
Ниже приведена модель одноканальной системы массового обслуживания с неограниченной длиной очереди, сконструированная с использованием списка пользователя.
GENERATE 100,50
QUEUE LINE
GATE NU SYSTEM,WAIT
ENT1 SEIZE SYSTEM
DEPART LINE
ADVANCE 110,40
PRIORITY PR,BU
RELEASE SYSTEM
UNLINK BUFER,ENT1,1
TERMINATE 1
WAIT LINK BUFER,FIFO
Здесь транзакты, ожидающие освобождения одноканального устройства SYSTEM, находятся не в списке текущих событий, а в списке пользователя с именем BUFER. Они помещаются туда с помощью блока LINK в порядке поступления (операнд FIFO), а возвращаются в СТС с помощью блока UNLINK после освобождения устройства. Изменив в блоке LINK операнд FIFO на LIFO можно поменять дисциплину очереди на обратную порядку поступления.
При моделировании в автоматическом режиме продвижение транзактов через блоки происходит весьма быстро. Мощным методом отладки является моделирование в пошаговом режиме, когда вы можете, прервав моделирование в автоматическом режиме и вводя определенные команды, вызывать продвижение транзакта в следующий блок и наблюдать за изменением состояния списков и объектов модели.
Для прерывания моделирования в произвольный момент времени можно воспользоваться горячей клавишей, на которую назначена команда Halt. Для такого назначения предназначена вкладка Function Keys (Edit/Setting/Function Keys). Часто при отладке необходимо прервать моделирование в определенный момент времени: при активизации некоторого транзакта или при входе любого транзакта в некоторый блок. Для этой цели может быть использована команда STOP, задающая условия прерывания и имеющая следующий формат:
STOP A,B,C
В поле A указывается номер транзакта, при активизации которого происходит прерывание моделирования. Если операнд A опущен, то прерывание происходит при активизации любого транзакта. Поле B содержит номер или имя блока, при входе в который происходит прерывание. Если операнд B опущен, то прерывание происходит при входе транзакта в любой блок. В поле C указывается ON для включения условия прерывания или OFF для его выключения. Если операнд C опущен, то по умолчанию предполагается ON. Команда STOP без операндов вызывает прерывание при первой попытке продвижения активного транзакта, а команда STOP ,,OFF отменяет все установленные другими командами STOP условия прерывания.
Для возобновления моделирования после его прерывания служит команда CONTINUE, не имеющая операндов.
Для моделирования в пошаговом режиме служит команда STEP, имеющая следующий формат:
STEP A
В поле A указывается количество входов в блоки активного транзакта, инициируемое командой. Обычно в поле A содержится 1, и при выполнении такой команды STEP происходит продвижение активного транзакта в следующий блок.
Остановить моделирование, назначить останов в момент вхождения в указанный блок, организовать пошаговое моделирование можно из окна блоков или из других открываемых окон.
Прервав моделирование, можно просмотреть содержимое СТС, СБС или списков пользователя, войдя в меню Window / Simulation Snapshot.
В окне соответствующего списка можно увидеть содержимое СТС (заголовок CEC) и СБС (заголовок FEC) в порядке расположения транзактов в них, причем для каждого транзакта выводится:
номер транзакта (XACT NUMBER, XN)
его приоритет (PRIORITY)
время пребывания в модели для СТС (M1) или запланированный момент выхода из СБС (BDT)
номера текущего (CURRENT) и следующего (NEXT) блоков
содержимое (VALUE) параметров транзакта (PARAMETER).
Прервав моделирование, можно также воспользоваться командой SHOW, позволяющей отобразить на экране значение некоторого атрибута модели (стандартного числового атрибута какого-либо объекта) или выражения, связывающего несколько атрибутов. Команда имеет единственный операнд A, содержащий любое допустимое выражение GPSSW. Например, команда SHOW C1 выводит на экран текущее модельное время.
Часто используемые команды и управляющие операторы можно "записать" на функциональные клавиши F1 - F12. Для этого необходимо выполнить Edit /Setting / Function Keys и в окно для соответствующей клавиши ввести соответствующую команду.
