Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции - Основы GPSSPC.doc
Скачиваний:
74
Добавлен:
02.05.2014
Размер:
425.98 Кб
Скачать

Основы моделирования на языке gpss/pc

Введение.

Одним из эффективных методов исследования сложных систем, а зачастую и практически единственным методом, является метод имитационного моделирования, когда модель имитирует работу реальной системы, воспроизводя во времени процесс ее функционирования. При этом адекватность модели достигается имитацией процесса функционирования каждого отдельного элемента системы с обязательным сохранением логики и правил их взаимодействия и развития, как во времени, так и в пространстве.

При построении имитационной модели и ее реализации предполагается использование средств вычислительной техники и программирования. Построение имитационных моделей с использованием традиционных языков программирования вызывает значительные трудности [1, 2]. В связи с этим возникла необходимость разработки специализированных языков имитационного моделирования.

Одним из наиболее эффективных и распространенных специализированных языков имитационного моделирования сложных дискретных систем является в настоящее время язык GPSS (General Purpose Simulation System – общецелевая система моделирования) [3, 6], относящийся к классу проблемно-ориентированных языков. Проблемной областью GPSS являются системы массового обслуживания (СМО). В качестве объектов этого языка используются аналоги таких стандартных компонентов СМО, как заявки, обслуживающие приборы, очереди и т.д. Достаточный набор подобных компонентов позволяет строить сложные имитационные модели, сохраняя привычную терминологию СМО.

Историю GPSS, которая начинается с 1961 г., можно условно разделить на два больших этапа [6]: 1) GPSS на "больших" ЭВМ (мэйнфреймы) и 2) GPSS на персональных ЭВМ (ПЭВМ). Первые версии системы были разработаны и поддерживались фирмой IBM для ЭВМ типа IBM/360 и ЕС ЭВМ. Последняя версия GPSS V (1971 г.) стала классической.

Появление ПЭВМ и новых идей и подходов взаимодействия человека с ЭВМ не могло не отразиться на GPSS. В 1984 году фирма Minuteman Software разработала систему GPSS/PC – это первая GPSS-система, разработанная специально под новые диалоговые возможности ПЭВМ и в которой к тому же сохранилась "красота" классической GPSS. В нашей стране первые версии GPSS/PC появились в конце 80-х годов. В основном это были копии программ, полученные через третьи страны, и отличались они плохим качеством перевода документации или ее полным отсутствием.

Основной модуль пакета прикладных программ GPSS/PC представляет собой интегрированную среду, включающую, помимо транслятора с входного языка, средства ввода и редактирования текста модели, средства ее отладки и наблюдения за процессом моделирования, графические средства отображения атрибутов модели, а также средства накопления результатов моделирования в базе данных и их статистической обработки. Кроме основного модуля в состав пакета входит модуль создания стандартного отчета GPSS/PC, а также ряд дополнительных модулей и файлов.

1. Общие сведения о gpss/pc.

Исходная программа на языке GPSS/PC, как и программа на любом языке программирования, представляет собой последовательность операторов. В общем случае операторы GPSS/PC имеют следующий формат:

номер имя операция операнды ; комментарии

Все операторы должны начинаться с номера – целого положительного числа от 1 до 9999999. После ввода операторов они располагаются в исходной программе в соответствии с присвоенными номерами. Обычно нумерация производится с некоторым шагом, отличным от 1, чтобы иметь возможность добавления операторов в нужное место программы. Некоторые операторы удобно вводить, не включая их в исходную программу. Тогда они вводятся без номера. Далее в этой работе при описании формата операторов и в примерах моделей номера операторов будем опускать для лучшей читаемости текста.

Отдельные операторы в программе могут иметь имя для ссылки на эти операторы из других операторов. Если такие ссылки отсутствуют, то этот элемент оператора не является обязательным.

В поле операции записывается ключевое слово-глагол (название оператора), указывающее конкретную функцию, выполняемую данным оператором. Это поле оператора является обязательным.

В полях операндов записывается информация, которая конкретизирует выполнение функции, определенной в поле операции. Эти поля в зависимости от типа операции могут содержать до семи операндов, расположенных в определенной последовательности и обозначаемых первыми буквами латинского алфавита A, B, C, D, E, F, G. Некоторые операторы вообще не имеют операндов, а в некоторых операнды могут быть не заданы и при этом устанавливаются их значения по умолчанию (стандартные значения). Если в операторе какой-нибудь необязательный операнд не используется, то его отсутствие в соответствующем поле отмечается символом ",".

Необязательные комментарии, в случае их присутствия в программе, отделяются от поля операндов символом ";". Комментарии не могут содержать буквы русского алфавита.

Операторы GPSS/PC записываются, начиная с первой позиции, в свобод-ном формате, т.е. отдельные поля разделяются произвольным количеством пробелов. При вводе исходной программы в интегрированной среде GPSS/PC (см. раздел 7.2) размещение отдельных полей операторов с определенным количеством интервалов между ними производится автоматически.

Каждый оператор GPSS/PC относится к одному из четырех типов: операторы-блоки; операторы описания объектов; управляющие операторы и операторы-команды.

Операторы-блоки формируют логику функционирования модели. В GPSS/PC имеется около 50 различных видов операторов-блоков (далее часто просто оператор или блок), каждый из которых выполняет свою конкретную функцию и занимает вполне определенное место в исходной программе. Каждому такому оператору соответствует определенная подпрограмма транс-лятора, которая реализует функции, возложенные на данный оператор, а его операнды при этом служат фактическими параметрами данной подпрограммы.

Операторы описания объектов служат для определения параметров некоторых объектов GPSS/PC. Примерами параметров объектов могут быть количество каналов в многоканальном устройстве, количество строк и столбцов матрицы и т.д.

Управляющие операторы служат для контроля и управления процессом моделирования (прогоном модели).

Операторы-команды позволяют управлять работой интегрированной среды GPSS/PC. Управляющие операторы и операторы-команды обычно не включаются в исходную программу, а вводятся непосредственно с клавиатуры компьютера в процессе интерактивного взаимодействия пользователя с интегрированной средой.

После трансляции исходной программы в памяти компьютера создается так называемая текущая модель, являющаяся совокупностью разного типа объектов. Объекты GPSS/PC можно разделить на семь типов: динамические; операционные; аппаратные; статистические; вычислительные; запоминающие и группирующие.

Динамические объекты в GPSS/PC называются транзактами. Транзакт является прообразом заявки в терминологии СМО. В процессе моделирования транзакты “создаются” (заявки поступают) и “уничтожаются” (заявки уходят) так, как это необходимо по логике модели. С каждым транзактом может быть связано определенное число параметров, несущих необходимую информацию об этом транзакте. Кроме того, транзакты могут иметь различные приоритеты.

Операционные объекты GPSS/PC, называемые блоками, соответствуют операторам-блокам исходной программы и также формируют логику функционирования модели, давая транзактам указания: куда идти и что делать дальше. Каждый блок имеет уникальный вид (в Приложении I приведен графический вид каждого из рассматриваемых в этой работе блоков). Модель системы на GPSS/PC (GPSS-модель) можно представить в виде блок-схемы – совокупность фигур с характерными очертаниями блоков, соединенных между собой направленными линиями в соответствии с логикой модели. Блок-схема является графическим представлением модели и показывает взаимодействие блоков в процессе моделирования в отличие от программного представления – совокупности соответствующих операторов.

Аппаратные объекты являются аналогами обслуживающих приборов и другого оборудования реальной системы. К ним относятся одноканальные, многоканальные устройства и логические переключатели. Одноканальные и многоканальные устройства соответствуют обслуживающим приборам в СМО. Логические переключатели используются для моделирования двоичных состояний логического или физического характера и могут находиться в двух состояниях: включено и выключено.

Статистические объекты служат для сбора и обработки статистических данных о функционировании модели. К ним относятся очереди и таблицы. Каждый объект типа очередь обеспечивает сбор и обработку данных о транзак- тах, задержанных в какой-либо точке модели, например перед одноканальным устройством. Таблицы используются для получения распределений случайных величин, например, времен ожидания и пребывания транзактов в модели.

К вычислительным объектам относятся переменные (арифметические, булевские) и функции. Они используются для вычисления некоторых величин, заданных арифметическими, логическими выражениями или в табличном виде.

Запоминающие объекты обеспечивают хранение в памяти компьютера отдельных величин, используемых в модели, а также массивов таких величин. К ним относятся так называемые сохраняемые величины и их матрицы.

К группирующим объектам относятся списки пользователя и группы. Списки пользователя используются для организации очередей с дисциплинами, отличными от дисциплины FIFO.

В данной работе такие объекты GPSS/PC как логические переключатели, таблицы, переменные, сохраняемые величины, соответствующие матрицы, а также группирующие объекты рассматриваться не будут.

Каждому объекту того или иного типа соответствуют числовые атрибуты, описывающие его состояние в данный момент модельного времени. Кроме того, имеется ряд так называемых системных атрибутов, относящихся не к отдельным объектам, а к модели в целом. Значения атрибутов всех объектов модели по окончании моделирования выводятся в стандартный отчет GPSS/PC. Большая часть атрибутов доступна пользователю и составляет так называемые стандартные числовые атрибуты (СЧА), которые могут использоваться в качестве операндов операторов программы. Все атрибуты в GPSS/PC являются целыми числами.

Для ссылки на какой-либо СЧА некоторого объекта соответствующий операнд оператора записывается одним из следующих способов:

название$имя или названиеj,

где название – системное обозначение конкретного СЧА данного объекта; имя или j – соответственно имя или номер объекта, а $ – символ-разделитель.

Прогон текущей модели, т.е. собственно моделирование, выполняется с помощью специальной управляющей программы, называемая симулятором (от английского слова SIMULATE – моделировать, имитировать) и работает в режиме интерпретации. Прогон GPSS-модели под управлением симулятора-интерпретатора заключается в перемещении транзактов от одного блока к другому, имитируя перемещение заявок в моделируемой системе.

В начальный момент времени в GPSS-модели нет ни одного транзакта. В процессе моделирования интерпретатор GPSS/PC генерирует транзакты в определенные моменты времени (подобным же образом и уничтожает их) в соответствии с логикой функционирования модели. В общем случае в модели одновременно находится большое число транзактов, однако в каждый момент времени интерпретатор осуществляет продвижение только одного транзакта.

Если транзакт начал свое движение, он перемещается от блока к блоку по пути, предписанному блок-схемой. В тот момент, когда транзакт входит в некоторый блок, на исполнение вызывается соответствующая данному блоку подпрограмма интерпретатора, а после ее выполнения, т.е. после реализации функций данного блока, транзакт покидает его и пытается войти в следующий блок. Такое продвижение транзакта продолжается до тех пор, пока не произойдет одно из следующих событий:

1) транзакт входит в блок, который удаляет его из модели;

2) транзакт входит в блок, функцией которого является задержка его в данном блоке на некоторое время;

3) транзакт пытается войти в следующий блок, однако он отказывается принять его.

В последнем случае транзакт остается в том блоке, где находится, и позднее будет повторять свою попытку войти в следующий блок. Когда условия в модели изменятся, такая попытка может оказаться успешной, и транзакт сможет продолжить свое перемещение по блок-схеме.

Если возникло одно из описанных выше условий, обработка данного транзакта прекращается, и интерпретатор начинает перемещение другого транзакта, тоже до тех пор, пока не возникнет одно из рассмотренных условий. Таким образом, выполнение моделирования интерпретатором продолжается постоянно, продвигая то один транзакт, то другой.

Входя в блоки модели, каждый транзакт вносит вклад в содержимое счетчиков блоков. Значения этих счетчиков доступны пользователю через СЧА блоков: W – счетчик текущего содержимого блока и N – счетчик входов, т.е. счетчик общего числа транзактов, вошедших в блок.

Каждое продвижение транзакта в модели является событием, которое должно произойти в определенный момент времени. Как известно, процесс функционирования модели можно представить как хронологическую последовательность событий, возникающих в модели. Для того чтобы соблюдать правильную временную последовательность возникновения событий, интерпретатор имеет таймер времени, который автоматически корректируется в соответствии с логикой, предписанной моделью.

Таймер модельного времени в GPSS/PC имеет следующие особенности:

1) в начале моделирования таймер устанавливается равным нулю;

2) модельное время может принимать только целые значения;

3) единица времени определяется разработчиком модели и все временные параметры модели должны быть приведены к выбранной единице;

4) интерпретатор при автоматической коррекции таймера времени применяет принцип переменного шага, когда таймер корректируется на момент наступления ближайшего события.

Значения таймера времени доступны пользователю через системные СЧА: C1 – относительное время и AC1 – абсолютное время.

Основной задачей, выполняемой интерпретатором, является определение того, какой транзакт надо выбрать следующим для продвижения в модели, когда предыдущий транзакт прекратил свое продвижение. С этой целью интерпретатор рассматривает каждый транзакт не только как элемент блока, в котором он находится в данный момент, но и как элемент одного или более списков. В GPSS/PC существуют следующие списки: список текущих событий; список будущих событий; списки прерываний; списки пользователя и списки паритетности (синхронизации).

Во всех моделях обязательно присутствуют два основных списка: список текущих событий (ТС) и список будущих событий (БС). Остальные списки в данной работе не рассматриваются.

Список ТС включает в себя те транзакты, продвижение которых ранее было заблокировано или те транзакты, которые переведены в данный список в текущий момент времени. Список ТС организуется в порядке убывания приоритетов транзактов, а в пределах каждого уровня приоритета – в порядке поступления транзактов в список.

Список БС включает в себя транзакты, запланированное время продвижения, которых больше текущего значения модельного времени, т.е. события, связанные с продвижением этих транзактов, должны произойти в будущем. Этот список организуется в порядке возрастания запланированного времени продвижения транзактов.

Интерпретатор GPSS/PC помещает транзакты в зависимости от условий в модели в тот или иной список. После обработки всех транзактов в списке ТС интерпретатор просматривает список БС и корректирует таймер на момент времени первого (ближайшего) события в списке БС и соответствующий транзакт переносит из списка БС в список ТС и т.д.