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

Лабораторная работа № 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 создает и вводит в модель Транзакты в некоторые случайные моменты времени. Каждый из этих транзактов в процессе моделирования продвигается через все блоки от блока GE­NERATE до блока TERMINATE, где уничтожается и выводится из модели. При входе транзакта в блок SEIZE моделируется занятие обслуживающе­го прибора, а если он уже занят, то транзакт задерживается перед блоком SEIZE. Блок ADVANCE моделирует задержку обслуживания в при­боре, а блок RELEASE - освобождение прибора по окончании обслужива­ния. Блоки QUEUE и DEPART моделируют вход в очередь перед прибором и выход из нее при поступлении заявки в прибор на обслуживание. Блоки SEIZE и RELEASE управляют взаимодействием транзактов с аппа­ратным объектом - одноканальным устройством с именем SYSTEM; блоки QUEUE и DEPART - со статистическим объектом - очередью с именем LI­NE. Последовательность блоков такова, что взаимодействие транзактов с одноканальным устройством SYSTEM и очередью LINE полностью соот­ветствует тому, что происходит в одноканальной системе массового обслуживания с ожиданием.

Продвижение транзактов через блоки происходит на фоне модельного времени, для поддержания которого в GPSSW имеется специаль­ный таймер. Например, блок GENERATE в рассмотренной выше модели создает поток транзактов, входящих в модель, через случайные интервалы времени, которые принимают с равной вероятностью значения из отрезка [100-50;100+50]).

В GPSS-модели одновременно может находиться произвольное коли­чество транзактов, и каждый из них является элементом одного из двух списков: списка текущих событий (СТС) или списка будущих собы­тий (СБС). В СБС находятся транзакты, продвижение которых заплани­ровано на моменты времени большие текущего модельного времени (бу­дущие моменты времени). При этом транзакты в списке упорядочены по возрастанию запланированного времени продвижения. В СТС находятся транзакты, продвижение которых запланировано на текущий момент мод­ельного времени или должно было произойти ранее, но было заблокиро­вано из-за невозможности продвижения. Например, в рассмотренной вы­ше модели в СБС может находиться не более двух транзактов: один, который должен в ближайшем будущем войти в модель через блок GENE­RATE, и другой, который должен выйти из блока 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 и в окно для соответствующей клавиши ввести соответствующую команду.