Введение

ИМИТАЦИОННОЕ МОДЕЛИРОВАНИЕ НА ЯЗЫКЕ GPSS

Методические указания
к лабораторной работе

РПК

«Политехник»

Волгоград 2010

УДК 519.216.001.57:519.246.87

Имитационное моделирование на языке GPSS. Методические указания к лабораторной работе/Сост. Коробкин Д.М., Фоменков С.А.- Волгоград: ВолгГТУ, 2010,46 с.

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

Методические указания предназначены для студентов, выполняющие лабораторные работы по курсу «Моделирование систем».

Рис. 11, табл. 5, приложений - 6, библиогр. – 3 назв.

Рецензент: кандидат технических наук,

доцент кафедры ПОАС Жукова Ирина Георгиевна

Печатается по решению редакционно-издательского совета

Волгоградского государственного технического университета.

© Д.М. Коробкин, С.А. Фоменков,, 2010

© Волгоградский государственный
технический университет, 2010

Введение

GPSS является языком моделирования, используемым для построения моделей и проведения моделирования на ЭВМ. Модели на GPSS компактны, часто состоят из меньшего числа операторов, чем такие же модели, написанные на процедурных языках (например, на Паскале или Си). Это объясняется тем, что в GPSS встроено максимально возможное число логических программ, необходимых для моделирующих систем. В него также входят специальные средства для описания динамического поведения систем, меняющихся во времени, причем изменение состояний происходит в дискретные моменты времени. GPSS очень удобен при программировании, поскольку интерпретатор GPSS (здесь и далее интерпретатором называется моделирующая часть системы GPSS) многие функции выполняет автоматически. Например, GPSS без специального на то указания пользователя собирает статистические данные, описывающие поведение модели, автоматически печатает итоговую статистику по завершении моделирования. Пользователю нет необходимости включать в модель операторы для сбора и накопления этих данных или задавать формат, указывающий, в каком виде должны быть распечатаны итоговые данные. В язык включены и многие другие полезные элементы. Например, GPSS обслуживает таймер модельного времени, планирует события, которые должны произойти позднее в течение времени моделирования, вызывает их своевременное появление и управляет очередностью поступления.

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

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

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

Строки нумеруются от 1 до 9999999. Операторы располагаются в программе в соответствии с нумерацией строк. Некоторые операторы не требуется включать в исходную программу. Такие операторы вводятся без номера строки. Отдельные операторы могут иметь метку для ссылки на эти операторы в других операторах. Между номером строки и меткой ставится один пробел. Отсутствие метки также обозначается пробелом.

Имя_операции - это ключевое слово, указывающее конкретную функцию, выполняемую данным оператором. Операнды - уточняющие и конкретизирующие выполнение функции, определённой в поле операции. Эти поля в зависимости от типа операции содержат до девяти операндов, расположенных в определённой последовательности и обозначаемыми буквами латинского алфавита от А до I. Некоторые операции вообще не имеют операндов, а в некоторых операнды могут быть пропущены. Если некоторое частичное поле остается пустым, т. е. не нужен соответствующий аргумент, это отмечается еще одной запятой, например: PRINT,, MOV. Здесь используется только аргумент MOV в частичном поле С (А и В пустые).

В качестве значений, записываемых в указанные поля (A...I), можно использовать: а) некоторый стандартный числовой атрибут (СЧА); б) положительную константу Кп; в) специальные обозначения, определяющие режим (например, ALL для блока TRANSFER); г) определенные СЧА (только X n, V n и т. д.).

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

Каждый оператор относится к одному из четырёх типов:

1) карты описания блоков (формируют логику модели),

2) карты описания объектов (описание параметров объектов),

3) управляющие карты (управление процессом моделирования),

4) управляющие карты системы (управление интегрированной средой GPSS/PC).

После трансляции исходной программы в памяти ПК создаётся текущая модель, являющаяся совокупностью разного типа объектов. Каждому объекту соответствуют числовые атрибуты, описывающие его состояние в данный момент модельного времени. Значения атрибутов могут быть арифметическими или логическими. Атрибуты, доступные программисту, называются стандартными числовыми атрибутами (СЧА) (см. Приложение 3).

Кроме того, имеется ряд так называемых системных атрибутов, относящихся не к отдельным объектам, а к модели в целом. Значение атрибутов всех объектов модели по окончанию моделирования выводятся в стандартный отчёт. Все СЧА являются целыми числами. Для ссылки на стандартные числовые атрибуты соответствующий операнд оператора записывается, так:

СЧА$имя или СЧАi,

где СЧА - конкретный СЧА, имя - имя объекта, i - номер объекта, $ - символ-разделитель. Каждый объект GPSS имеет имя и номер. Имя объекта представляет собой начинающуюся с буквы последовательность букв латинского алфавита, цифр и символа подчёркивания «_», общее число символов - от трех до пяти. Первые три символа - буквы. При необходимости имени любого объекта, кроме имени блока, можно поставить в соответствие любой номер с помощью карты EQU, имеющей следующий формат:

Метка Операция A

j EQU номер,

где j - имя объекта

Транзактом называется элемент, перемещающийся при «передаче управления от блока к блоку». Транзакты являются динамическими (т. е. движущимися) элементами GPSS-модели. Работа этой модели заключается в перемещении транзактов от блоков к блокам.

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

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

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

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

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

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

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

1) регистрируются только целые значения,

2) единица модельного времени выбирается разработчиком,

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

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

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

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

Построение блок-диаграмм знакомит программиста с набором операторов языка. Набор операторов языка однозначно соответствует набору блоков для описания блок- диаграммы. Вследствие этого очевидно, что построение блок-диаграммы является не самоцелью, а лишь промежуточным этапом при написании имитационной модели исследуемой системы с использованием операторов языка GPSS/PC. При этом процесс создания модели можно изобразить в виде схемы, показанной на рис. 1.

Рисунок 1 - Процесс создания модели с использованием GPSS

Основные сокращения и обозначения, используемые симулятором GPSS на этапе системного ввода, приведены в приложении 2.

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

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

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

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

К статистическим объектам относятся очереди и таблицы, вводимые для оценки характеристик поведения системы.

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

Транзакты моделируют прохождение по системе соответствующих единиц исследуемого потока. Такое движение может быть разбито на цепь элементарных событий, происходящих в определенные моменты времени. Основной задачей симулятора GPSS является определение моментов наступления этих событий, расположение их в правильной временной последовательности и выполнение соответствующих действий при наступлении каждого события. Чтобы обеспечить правильную последовательность обработки событий во времени, в симуляторе GPSS имеются «системные часы», хранящие значения абсолютного времени модели. Все отрезки времени описываются целыми числами. Поэтому перед составлением модели необходимо провести временное масштабирование для всех временных параметров и характеристик модели системы.

Следующие СЧА не связаны только с одним отдельным объектом, а используются моделью в целом: С1 —текущее значение относительного времени с начала процесса моделирования: Кn или n — положительная константа; RNx —одно из восьми случайных чисел (1 ≤ x ≤ 8), значения которых находятся в пределах 0...999.

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

Событийное моделирование в GPSS реализуется следующим образом.

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

2) Обработка списков транзактов. Для имитации процессов, протекающих в моделируемой системе, в GPSS предусмотрены следующие механизмы: - все транзакты, порождаемые в процессе моделирования, образуют списки, в которых транзакты отсортированы, во-первых, по времени, во-вторых, при равных временах у транзактов, по приоритетам; - в процессе моделирования может быть образовано до пяти списков: список текущих событий содержит транзакты, которые должны перемещаться в текущий момент модельного времени; все они имеют одинаковое время, равное текущему, и если их приоритеты совпадают, то очередной транзакт для перемещения выбирается по правилу FIFO; список будущих событий содержит транзакты, которые будут перемещаться по модели в будущие моменты времени; в этот список попадают транзакты, вошедшие в блоки имитации задеpжки или заблокиpованные по каким-либо условиям (типа светофоpа или «пpобки» для автомобиля); списки пpеpываний, синхронизации и пользователя содеpжат тpанзакты, обслуживание котоpых пpеpвано по некотоpым условиям, задаваемым блоками пpеpывания, синхpонизации или находящимся под упpавлением пользователя.

3) Алгоритм событийного моделирования состоит в фомиpовании, пpосмотpе и изменении этих списков, в пеpемещении тpанзактов из одного списка в дpугой и в продвижении одного из транзактов (активного, находящегося на веpшине списка текущих событий) по блокам модели. Продвижение текущего транзакта продолжается по блокам модели до тех пор, пока не произойдет одно из следующих событий:

a) транзакт входит в блок задержки ADVANCE A,B, в котором время транзакта увеличивается на значение, определяемое полями A и B так же, как и в блоке GENERATE, и транзакт переходит в список будущих событий;

b) транзакт входит в один из блоков проверки условий типа if...then...else (GATE_R A, B или TEST_T A, B), и условие не позволяет транзакту перемещаться дальше (наступает условие блокировки), тогда транзакт переводится в список будущих событий;

c) транзакт входит в блок удаления TERMINATE.

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

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

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

Транзакты можно «генерировать» и «уничтожать» в процессе моделирования системы S. Основным атрибутом любого транзакта являются его параметры, число которых для каждого транзакта может быть от 0 до 1020.

Параметры обозначаются как РХi, где i — номер параметра, Х — тип параметра (X — может принимать значения в зависимости от форматов: F — «слово», Н — «полуслово», В — «байт», L—»плавающая точка»).

Использование параметров определяется пользователем GPSS. Например, при моделировании сети передачи данных программист может резервировать первый параметр для значения длины сообщения, второй — для номера источника (терминала), выдавшего это сообщение, и т. д.

Важным атрибутом любого транзакта является уровень приоритета PR, изменяющийся в пределах от 0 до 127. В случае, когда два транзакта соперничают при занятии данного устройства, сначала обрабатывается тот, у которого приоритет выше. Если приоритеты у обоих транзактов одинаковые, сначала обрабатывается тот, у которого время ожидания обработки больше. В одном задании может выполняться как один, так и несколько прогонов одной модели. При этом текущим значением абсолютного времени модели АС1 будет называться суммарное время по всем реализованным прогонам, а текущим значением относительного времени модели С1—системное время в пределах одного прогона.

Время, в течение которого транзакт обрабатывается в процессе моделирования, обозначается Ml и называется транзактным временем. Оно определяет интервалы времени:

1) с момента относительного времени;

2) с момента прохода транзакта через блок MARK до текущего момента относительного времени.

Параметрическое транзактное время МРn вычисляется вычитанием из текущего момента относительного времени значения n-го параметра данного транзакта типа РХ.

Моделирование и синхронизация параллельных процессов обеспечивается как механизмами и средствами продвижения транзактов по модели, так и дополнительными средствами размножения и синхронизации во времени:

1) программа моделирования может состоять из нескольких сегментов, в каждом из которых транзакты порождаются и перемещаются независимо от других сегментов;

2) существует блок копирования (размножения) семейства транзактов SPLIT A, B, C, D (где A - количество копий транзакта; B - блок, в который переходят копии транзактов; С - параметр, в котором хранятся номера копий транзактов; D – количество параметров, задаваемых копиям транзактов) с последующим перемещением их по ветвям модели и сборкой либо в блоке GATHER Ag (Ag - количество собираемых копий) с последующим перемещением по правилу FIFO, либо в блоке ASSEMBLE Aa c объединением Aa-транзактов в один транзакт для последующего его продвижения;

3) существуют блоки синхронизации перемещения транзактов по модели MATCH A (здесь A - имя блока, сопряженного с данным), и поступивший в него транзакт продолжит перемещаться только при условии поступления некоего другого транзакта в сопряженный блок.

Изменение последовательного перемещения транзакта по модели может быть нарушено оператором блока TRANSFER, определяющим для данного транзакта номер следующего блока.

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

У каждого блока имеется два СЧА: Wn — счетчик входов в блок или ожидающий счетчик, который содержит в себе номер текущего транзакта, находящегося в блоке n; Nn — общий счетчик транзактов, поступивших в блок с начального момента моделирования или с момента обнуления (с помощью карт RESET либо CLEAR). Оба счетчика меняют свое содержимое автоматически.

В зависимости от назначения блоки подразделяются на несколько групп (см. Приложение 4):

1) Блоки, осуществляющие модификацию атрибутов транзактов: а) временная задержка ADVANCE; б) генерирование и уничтожение транзактов GENERATE, TERMINATE, SPLIT, ASSEMBLE; в) синхронизация движения нескольких транзактов MATCH, GATHER; г) изменение параметров транзактов ASSIGH, INDEX, MARK; д) изменение приоритета PRIORITY.

2) Блоки, изменяющие последовательность передвижения транзактов (блоки передачи управления): TRANSFER, LOOP, TEST, GATE.

3) Блоки, связанные с группирующей категорией: JOIN, REMOVE, EXEMINE, SCAN, ALTER.

4) Блоки, организующие использование объектов аппаратной категории: а) устройства (технические средства) SEIZE, RELEASE, FAVAIL, PREEMPT, RETURN, FUNAVAIL, б) памяти (запоминающие устройства) ENTER, LEAVE, SAVAIL, SUNAVAIL, в) ключи (логические переключатели) LOGIC.

5) Блоки, сохраняющие необходимые значения для дальнейшего использования: SAVEVALUE, MSAVEVALUE.

6) Блоки, обеспечивающие получение статистических результатов; а) очереди QUEUE, DEPART; б) статистические таблицы TABULATE, TABLE.

7) Специальные блоки BUFFER, PRINT, EXECUTE, COUNT'X', CHANGE, TRACE, UNTRACE, SELECT'X', HELP.

8) Блоки для организации цепей: LINK, UNLINK.

9) Вспомогательные блоки: WRITE, SAVE, LOAD, REPORT, UPDATE.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: