Текстовые фрагменты публикации
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
Федеральное агентство по образованию
Национальный исследовательский ядерный университет
«МИФИ»
С.П. Бычков
А.А. Храмов
ПРОГРАММИРОВАНИЕ
В СИСТЕМЕ МОДЕЛИРОВАНИЯ GPSS
Учебное пособие
Москва 2010
УДК 004.4 (075)
ББК 32.973.26-018.2я7
Б 95
Бычков С.П.
, Храмов А.А. Программирование в системе
моделирования GPSS. Учебное пособие. М.: НИЯУ
МИФИ, 2010. - 60с.
Пособие
предназначено
для
изучения
средств
построения
имитационных моделей систем массового обслуживания в системе
моделирования GPSS. Содержит краткие сведения об основных средствах
системы GPSS. Приведены примеры моделей в системе моделирования.
Пособие является основой для проведения занятий по дисциплине
«Теория игр и исследование операций. Моделирование систем» по
специальности «Прикладная математика и информатика».
Рецензент с.н.с. ИПМ им. М.В. Келдыша РАН, канд. физ.-мат. наук
В.А. Фисун
Рекомендовано редсоветом НИЯУ МИФИ к изданию в качестве
учебного пособия.
ISBN 978-5-7262-1298-2
© Национальный исследовательский
ядерный университет «МИФИ», 2010
ОГЛАВЛЕНИЕ
1. Основные средства системы GPSS…………………………..….4
1.1. Общая характеристика GPSS…………………………….…4
1.2. Типы объектов в GPSS.........................…………………..…6
1.2.1. Динамические объекты.................……………..…….….6
1.2.2. Объекты типа "оборудование".............………..…….….7
1.2.3. Статистические объекты...............…………..…….…....8
1.2.4. Операционные объекты.....................………..………....8
1.2.5. Операторы управления моделью…………………….…9
1.3. Организация работы модели в системе GPSS……………9
1.4. Изображение блоков в GPSS - модели........……………..12
2. Основные блоки системы GPSS………………………………….14
2.1. Задержка транзактов. Блок ADVANCE.....………………...14
2.2. Блоки, описывающие работу устройств.....……………….15
2.2.1. Блоки SEIZE и RELEASE....................………………….16
2.2.2. Блоки PREEMPT и RETURN...................………………17
2.3. Накопители. Блоки ENTER и LEAVE..........……………….19
2.4. Очереди. Блоки QUEUE и DEPART............……………….22
2.5. Логические ключи. Блоки LOGIC и GATE.....……………..25
2.6. Создание и уничтожение транзактов. Блоки
GENERATE и TERMINATE........…………..………..……………………27
2.7. Размножение транзактов. Блок SPLIT......………………..30
2.8. Синхронизация транзактов. Блоки ASSEMBLE,
MATCH и GATHER........................…………..………………….……….31
2.9. Изменение значений параметров транзактов.
Блок ASSIGN................................……………………………..…………33
2.10. Отметка времени. Блок MARK..................……………….34
2.11. Приоритеты транзактов. Блок PRIORITY……….……….35
2.12. Изменение маршрутов движения
транзактов в модели. Блок TRANSFER...................………………….35
2.13. Таблицы. Блоки TABULATE и TABLE......…….....……….37
2.14. Пример модели. Модель порта.................…………….…39
3. Дополнительные возможности системы GPSS ……………….40
3.1. Организация цикла. Блок LOOP.................……………….40
3.2. Обработка прерываний с приоритетами......……………..41
3.3. Сравнение значений. Блок TEST................…………..…..43
3.4. Переменные...................................……………………..…..44
3.5. Хранимые значения............................……………..……… 48
3.6. Функции......................................…………………….……... 50
3.7. Пример модели………………………………..……………... 53
3.7.1. Модель вычислительного центра…….……………….53
3.7.2. Модель многоканальной СМО………………………….54
Список литературы............................…....………………………….57
1. ОСНОВНЫЕ СРЕДСТВА СИСТЕМЫ GPSS
В практике исследования и проектирования сложных
систем часто встречаются системы, функционирование
которых состоит в обработке потоков заявок (клиентов,
сигналов,
сообщений
и
т.д.),
проходящих
через
обслуживающие приборы. Такие системы принято называть
системами массового обслуживания (СМО).
Для
моделирования
СМО
разработан
ряд
систем
имитационного моделирования. Наиболее популярной для
моделирования СМО является система GPSS. Наиболее
полно система моделирования GPSS описана в монографии
/1/, а в работах /3, 4, 5/ наряду с кратким описанием языка
приводятся многочисленные примеры его применения в
различных
областях.
Система
моделирования
GPSS
является удачной реализацией понятий СМО и не является
языком программирования. Системы, модели которых могут
быть реализованы с помощью GPSS, называются системами
с дискретными событиями.
Для моделирования СМО может использоваться язык
Симула-67 /6/. Симула-67 – это язык программирования,
ориентированный
на
широкий
класс
задач.
В
плане
моделирования Симула-67 позволяет разрабатывать модели
как систем с дискретными событиями, так и модели
непрерывных систем.
Симула-67
является
одним
из
первых
языков
программирования
(наряду
со
Smalltalk),
в
котором
используется
подход,
названный
позднее
объектно-
ориентированным.
Создание
модели
является
лишь
частью
работы.
Основная задача состоит в исследовании модели и в
определении
зависимости
одних
параметров
модели
(моделируемой системы) от других параметров.
1.1. Общая характеристика GPSS
Система
GPSS
(General
Purpose
System
Simulator)
предназначена
для
написания
имитационных
моделей
систем с дискретными событиями. Наиболее удобно в
системе GPSS описываются модели систем массового
обслуживания,
для
которых
характерны
относительно
простые
правила
функционирования
составляющих
их
элементов.
В системе GPSS моделируемая система представляется
с помощью набора абстрактных элементов, называемых
объектами, каждый из которых принадлежит к одному из
типов объектов.
Объект каждого типа характеризуется определенным
способом
поведения
и
набором
атрибутов,
которые
определяются типом объекта. Например, если рассмотреть
работу
порта,
выполняющего
погрузку
и
разгрузку
прибывающих судов, и работу кассира в кинотеатре,
выдающего
билеты
посетителям,
то
можно
заметить
большое сходство в их функционировании. В обоих случаях
имеются объекты, постоянно присутствующие в системе
(порт и кассир), которые обрабатывают поступающие в
систему объекты (корабли и посетители кинотеатра).
В
теории
массового
обслуживания
эти
объекты
называются
приборами
и
заявками.
Когда
обработка
поступившего объекта заканчивается, он покидает систему.
Если в момент поступления заявки прибор обслуживания
занят, то заявка становится в очередь, где и ждет до тех пор,
пока
прибор
не
освободится.
Очередь
также
можно
представлять себе как объект, функционирование которого
состоит в хранении других объектов.
Каждый
объект
может
характеризоваться
рядом
атрибутов, отражающих его свойства. Например, прибор
обслуживания
имеет
некоторую
производительность,
выражаемую
временем,
которое
он
затрачивает
на
обработку одной заявки. Сама заявка может иметь атрибуты,
учитывающие время ее пребывания в системе, время
ожидания в очереди и т.д. Характерным атрибутом очереди
является ее текущая длина, наблюдая за которой в ходе
работы системы (или ее имитационной модели), можно
определить ее среднюю длину за время работы (или
моделирования).
Большая часть необходимой статистики собирается в
GPSS автоматически и не требует поэтому дополнительных
усилий разработчика модели. Всю статистику, выводимую
системой, можно разделить на статическую и динамическую.
Статистические данные, которые выводятся системой
моделирования GPSS после завершения работы модели или
после очередного прогона модели, являются итоговыми,
статическими.
Стандартные числовые атрибуты (СЧА) и стандартные
логические
атрибуты
(СЛА)
обеспечивают
доступ
к
динамической
статистике
–
характеристикам
объектов
модели в процессе моделирования. Эти характеристики
могут
использоваться
блоками
модели
в
процессе
моделирования.
Описание модели должно начинаться описательным
блоком SIMULATE.
Завершает описание модели описательный блок END.
Система моделирования GPSS читает блоки модели до
описательного блока START и начинает работу модели. При
одном обращении к системе моделирования модель можно
перезапускать несколько раз с различными параметрами.
В следующем разделе рассмотрим общую характеристику
основных типов объектов в GPSS и статистику, которая
связана с этими блоками.
1.2. Типы объектов в GPSS
Средства GPSS для разработки и выполнения модели
можно разделить на операторы, управляющие работой
системы GPSS, и объекты.
Объекты разделяются на блоки и динамические объекты.
Блоки в GPSS подразделяются на:
выполняемые, через которые проходят транзакты;
описательные на этапе выполнения отсутствуют.
Выполняемые
блоки
разделяются
на
блоки
типа
“оборудование”, статистические и операционные.
1.2.1. Динамические объекты
Динамические объекты, называемые в GPSS транзактами,
служат
для
моделирования
заявок
на
обслуживание
(корабли, посетители кинотеатра, покупатели). Транзакты
могут порождаться во время моделирования и уничтожаться
(покидать систему). Порождение и уничтожение транзактов
выполняется
специальными
объектами
(блоками)
GENERATE
и
TERMINATE,
работа
которых
будет
рассмотрена ниже.
Если обратиться к модели порта, как к системе массового
обслуживания, то приходящие в порт корабли можно
отобразить в модели с помощью транзактов: каждому
кораблю, входящему в порт, соответствует в модели
отдельный транзакт.
Каждый транзакт может иметь несколько (до 100)
числовых параметров, значения которых можно изменить в
процессе
моделирования.
Обращение
к
параметрам
транзакта выполняется по их номеру. У каждого транзакта
имеется параметр, связанный со временем пребывания
транзакта в системе, и параметр, который определяет
приоритет транзакта.
В процессе моделирования транзакты проходят через
другие объекты модели, производя в них некоторые действия
и, в свою очередь, испытывая на себе их влияние.
1.2.2. Объекты типа "оборудование"
С помощью объектов этого типа в моделях на языке GPSS
представляются различные элементы систем, через которые
проходят транзакты. Транзакт, поступивший на объект типа
"оборудование", изменяет состояние этого объекта.
В системе GPSS имеются три типа объектов типа
"оборудование": "устройство", "память", "логический ключ".
“Устройства” используются для представления в модели
приборов обслуживания, возможных "узких" мест и т.д. При
моделировании порта, например, с помощью устройств
можно представить пристани, портальные краны.
Устройство может находиться в свободном состоянии или
может быть занято транзактом, причем только одним в
каждый момент времени.
В системе GPSS с устройствами "работают" блоки SEIZE,
RELEASE, PREEMPT, RETURN.
Объекты типа "память" (или "накопитель") служат для
реализации различного рода хранилищ, например: портовых
складов, емкостей, автостоянок, памяти ЭВМ и т.д. Каждая
память характеризуется конечным объемом, который может
быть частично или полностью занят. Одна память может
быть
одновременно
занята
несколькими
транзактами.
Используются блоки STORAGE, ENTER, LEAVE.
“Логические ключи” – это объекты, каждый из которых
может находиться в одном из двух состояний: "включен" или
"выключен". Транзакт, проходя через логический ключ, может
в зависимости от его состояния изменять маршрут движения
по модели, а также менять состояние самого логического
ключа.
Управляет
состоянием
ключей
блок
LOGIC.
Проверяет состояние ключа блок TEST.
1.2.3. Статистические объекты
Статистические объекты применяются для сбора и
обработки данных, характеризующих работу моделируемой
системы.
В системе GPSS имеются два типа статистических
объектов: "очередь" и "таблица".
Каждый объект типа "очередь" (в дальнейшем просто
"очередь") содержит список транзактов, задержанных в
одном или нескольких пунктах системы, и ведет в процессе
моделирования
подсчет
среднего
числа
задержанных
транзактов, среднего времени задержки каждого транзакта и
других
статистических
характеристик
соответствующей
очереди. Используются блоки QUEUE и DEPART, QTABLE.
Объекты типа "таблица" используются для получения
гистограмм случайных величин, распределение которых
интересует исследователя. Построение таблиц выполняется
блоками TABULATE, TABLE, QTABLE.
1.2.4. Операционные объекты
К операционным объектам, называемым также блоками,
относятся объекты нескольких типов, которые служат для
задания
логики
работы
системы
путем
определения
маршрутов движения транзактов и изменений в состоянии
системы, обусловленных прохождением транзактов через
операционные объекты.
Основные операционные объекты (SPLIT, ASSEMBLE,
TEST, TRANSFER, GATE, LOOP, GATHER) будут подробно
рассмотрены после описания общей схемы работы моделей
в системе GPSS.
Правила
функционирования
операционных
объектов
составляют основную часть семантики модели GPSS.
1.2.5. Операторы управления моделью
При
одном
обращении
к
системе
моделирования
операторы управления моделью позволяют перезапускать
модель несколько раз с различными параметрами и
получать, тем самым, различные статистические данные о
работе модели.
Система моделирования GPSS читает блоки модели до
описательного блока START и начинает работу модели.
Между блоками START и END могут быть размещены
другие блоки START, а также блоки CLEAR, INITIAL, REPORT
/5/. Система моделирования опять читает блоки модели до
очередного блока START и начинает работу модели.
1.3. Организация работы модели в системе GPSS
Для лучшего понимания работы объектов, определенных в
GPSS,
целесообразно
рассмотреть
несколько
общих
вопросов, касающихся работы системы моделирования
GPSS.
На рис. 1.1 изображена общая схема проведения
имитационного моделирования в системе GPSS.
Модель,
дополненная
необходимыми
управляющими
предложениями операционной системы, вводится в ЭВМ и
поступает на обработку программой перевода текста модели
на GPSS во внутреннюю форму. Эта программа проводит
синтаксический
анализ
модели
и
преобразует
ее
во
внутреннюю
форму,
удобную
для
проведения
моделирования – ассемблер GPSS.
Модель на GPSS
Программа
перевода
модели
на
ассемблер
GPSS
Модель
на
ассемблере
GPSS
Интерпретатор
GPSS
Результаты
работы
модели
Рис. 1.1. Моделирование в системе GPSS
Модель
на
ассемблере
передается
интерпретатору
модели, который выполняет моделирование.
Во внутренней форме все объекты, описанные в модели,
получают последовательные номера в порядке поступления.
Последовательности номеров выстраиваются отдельно по
типам объектов: среди устройств, накопителей, очередей и
т.д. Эти номера могут быть напрямую указаны в тексте
модели программистом.
Интерпретатор
модели
является
основной
частью
системы моделирования GPSS.
Главной функцией интерпретатора является создание
транзактов
и
проводка
их
через
блоки
модели
с
одновременным выполнением действий, связанных с каждым
блоком. Движение транзактов в модели соответствует
движению отображаемых ими объектов в реальной системе.
10
Всякое изменение состояния модели, например переход
транзакта от одного блока к другому, можно рассматривать
как некоторое событие, происходящее в определенный
момент
условного
(системного)
времени,
задаваемого
"часами"
системы,
работа
которых
организуется
интерпретатором. Фактически, "часы" в интерпретаторе
GPSS
–
это
целая
переменная,
значение
которой
соответствует
текущему
моменту
системного
времени
модели.
При построении модели пользователь должен задаться
соотношением единицы системного времени, используемого
в модели, к реальному времени, в котором происходит
функционирование моделируемой системы.
Отметим, что системное время никак не связано с
машинным
временем,
затрачиваемым
на
выполнение
моделирования.
При
разработке
модели
программист
должен определить «вес» единицы системного времени и
везде в модели учитывать этот вес.
В процессе моделирования интерпретатор автоматически
определяет правильную очередность наступления событий.
В случае, если нужные действия в намеченный момент
времени не могут быть выполнены (например, занято
устройство, к которому обращается транзакт), интерпретатор
временно прекращает обработку "застрявшего" транзакта, но
продолжает
следить
за
причиной,
которая
вызвала
блокировку его обработки. Как только эта причина исчезает
(например,
освобождается
занятое
устройство),
интерпретатор возвращается к обработке задержанного
транзакта.
При
продвижении
транзактов
через
блоки
могут
происходить события четырёх основных типов:
1. Создание или уничтожение транзакта;
2. Изменение значения атрибута объекта или параметра
транзакта;
3. Задержка транзакта на некоторый промежуток
системного времени;
4. Изменение маршрута движения транзакта по блокам
модели.
Модель на GPSS представляет собой последовательность
предложений, изображающих объекты того или иного типа, а
ее работу нужно представить как одновременное движение
транзактов через блоки модели в разных ее частях. Таким