41
Для запуска программы на выполнение необходимо выбрать пункт меню Command/Create Simulation.
В среде моделирования различают объекты: модель – разрабатывается на языке GPSS, состоит из блоков, создаётся при помощи встроенного текстового редактора; процесс моделирования – результат трансляции модели, получаемый после команды Create Simulation, при наличии ошибок транслятор выдаёт список сообщений об ошибках в окне JOURNAL; отчёт по моделированию – автоматически создаваемый файл, содержащий статистическую информацию об объектах, накопленную в процессе моделирования.
3.2. Основные объекты языкаGPSS
Язык основан на схеме транзактов. Транзакт – это объект, который «путешествует» по системе, перемещаясь от блока к блоку, согласно логике передвижений, предписанной в модели. По пути он может задерживаться на определённое время вследствие своей обработки или занятости того или иного оборудования, создавать очереди, пропускать вперёд другие транзакты, согласно их приоритету и т. д. Транзакты имеют прямую аналогию с заявками в СМО. Каждый транзакт может обладать параметрами (до 100), которые могут меняться в соответствии с логикой модели. Параметры нумеруются или им даются имена. Транзактам может присваиваться приоритет, определяющий предпочтение, который может меняться в программе.
Язык GPSS связан с пошаговым выполнением операторов, называемых блоками (фактически, каждый блок – это отдельная подпрограмма). Каждое продвижение транзакта является событием в модели. Комплекс программ, обеспечивающих выполнение событий,
называется симулятором (планировщиком). Его функции:
обеспечить продвижение транзактов по заданным маршрутам;
регистрировать время наступления каждого события и выполнение их в нарастающей временной последовательности;
регистрировать статистическую информацию о функционировании модели;
продвигать модельное время в процессе моделирования. Чтобы обеспечить правильную последовательность обработки
событий во времени имеются системные часы, отсчитывающие абсолютное модельное время в единицах, принятых разработчиком. Все отрезки времени описываются положительными числами.
Условно все объекты можно разделить на 7 категорий (табл. 3.1).
|
42 |
|
|
|
Таблица 3.1 |
|
Объекты языка GPSS |
|
Категории |
|
Типы объектов |
Динамическая |
|
Транзакты |
Операционная |
|
Блоки |
Аппаратная |
|
Одноканальные устройства, |
|
|
многоканальные устройства (памяти), |
|
|
логические ключи |
Вычислительная |
|
Функции, переменные, СЧА, генераторы |
|
|
случайных чисел |
Статистическая |
|
Очереди, таблицы |
Запоминающая |
|
Сохраняемые ячейки, матрицы ячеек |
Группирующая |
|
Списки, группы транзактов |
Операционные объекты – блоки задают логику функционирования модели системы и определяют пути продвижения транзактов между объектами других категорий. В блоках происходят события четырёх основных типов:
создание и уничтожение транзактов;
задержка транзакта на определённое время;
изменение маршрута движения транзакта, группировкатранзактов;
изменение числового атрибута (параметра) транзакта.
Объекты аппаратной категории – это объекты, в которых
имитируется процесс обработки транзактов (устройства) или объекты, воздействуя на которые, транзакты меняют их состояние, что влияет на движение других транзактов (логические ключи).
Одноканальное устройство (ОКУ) – оборудование, которое может быть занято только одним транзактом. Например, один узел связи, один мастер, один пункт приёма услуг.
Многоканальные устройства (МКУ) – памяти предназначены для имитации оборудования, осуществляющего параллельную обработку, либо моделирования устройств ограниченной ёмкости (буферы, стоянки транспорта, складские помещения, конвейеры).
Логический ключ – объект, имеющий два состояния «включён» или «выключен», в зависимости от которых другие транзакты определяют пути их дальнейшего следования.
К статистическим объектам относятся очереди и таблицы. В
любой системе движение потока заявок может быть задержано из-за недоступности устройства. В этом случае транзакты становятся в очередь. Учёт очередей составляет одну из основных функций
43
планировщика, который автоматически накапливает статистику относительно устройств и очередей. Пользователь может собирать эту информацию в определённых точках модели. Для облегчения табулирования статистической информации предусмотрен объект – таблица, которая используется для получения выборочных распределений, в неё заносится число попаданий конкретного СЧА в некоторый диапазон, а также вычисляется автоматически математическое ожидание и среднеквадратичное отклонение, распределение может быть представлено графически гистограммой.
Вычислительная категория служит для описания таких ситуаций в процессе моделирования, когда связи между компонентами системы выражаются в виде математических (аналитических или логических) соотношений. С помощью функций пользователь может определять закон поступления транзактов в модель, время и порядок их обработки. В GPSS существует библиотека встроенных функций.
Переменные представляют собой сложные арифметические выражения, которые включают константы, системные числовые атрибуты (СЧА), библиотечные арифметические функции, арифметические и логические операции.
Каждому объекту в GPSS соответствуют атрибуты, описывающие его состояние в данный момент. Они автоматически регистрируются и доступны для использования в течение всего процесса моделирования, называются системными числовыми атрибутами (СЧА). Всего существует более 50 СЧА, наиболее часто используемые приведены в табл. 3.2.
|
|
|
Таблица 3.2 |
|
Таблица |
основных СЧА |
|
Объект |
СЧА |
|
Назначение |
Генераторы случайных чисел |
RNi |
|
Случайное число в диапазоне 0-999, при |
|
|
|
использовании в качестве аргумента |
|
|
|
функции в диапазоне [0;0.999] |
Транзакт |
Рi |
|
Значение i-го параметра, |
|
PR |
|
Значение приоритета |
|
M1 |
|
Время пребывания в модели активного |
|
|
|
транзакта (от MARK до текущего времени) |
|
MPi |
|
Время прохождения транзактом некоторого |
|
|
|
участка модели (вычисляется как разность |
|
|
|
текущего абсолютного времени и значения |
|
|
|
i-ого параметра транзакта, определяемого |
|
|
|
блоком MARK i) |
Очередь |
Qi, Q$имя |
|
Текущая длина i-ой очереди |
|
|
44 |
|
|
|
|
|
Переменные |
V$имя |
|
Значение арифметической переменной |
Сохраняемые ячейки |
X$имя |
|
Значение ячейки памяти |
Функции |
FN$имя |
|
Значение функции |
Памяти |
S$имя |
|
Количество занятых каналов в МКУ |
|
|
|
Окончание таблицы 3.2 |
Объект |
СЧА |
|
Назначение |
|
R$имя |
|
Количество свободных каналов в МКУ |
|
SF$имя |
|
Занятость МКУ: 1– заполнена, 0 – нет |
Одноканальные устройства |
F$имя |
|
Занятость МКУ: 1– занято, 0 – нет |
Логический ключ |
LS$имя |
|
Состояние ключа: 1– установлен, 0 – нет |
Например, Р1 – СЧА, обозначающий значение первого параметра транзакта; Q$och – СЧА, обозначающий длину очереди с именем och. Если используется символьное имя, то между СЧА и именем ставится знак $.
К группирующей категории относятся группы транзактов и списки. Существует 5 видов списков: текущих событий, будущих событий, задержки ОКУ или МКУ, отложенных прерываний и пользователя.
3.3.Основныеблоки языка GPSS
Вотличие от PLUS-операторов, которые могут содержать несколько строк, операторы GPSS записываются в отдельной строке и имеют следующий вид:
[метка] имя блока[операнды] ;комментарии
Обязательным является только поле имя блока, остальные поля могут отсутствовать. Метка является именем-идентификатором блока, определяемым разработчиком. Имена должны начинаться с буквы, могут содержать цифры и символы подчёркивания. Имя метки не должно совпадать с ключевыми словами GPSS. GPSS присваивает меткам номера, начиная с 10 000. Количество обязательных операндов зависит от блока, они отделяются запятыми, для пропуска одного из подполей ставится подряд несколько запятых.
Приведём основные операторы, которые используются в программе.
3.3.1. Поступление транзактов в модель
GENERATE (генерировать) – блок, в котором «рождаются» транзакты (заявки на обслуживание) и входят в процесс
45
моделирования. В любой блок GENERATE не могут входить транзакты. Поэтому в простых программах это первый блок. Имеет формат:
GENERATE [A],[B],[C],[D],[E]
Скобки [ ] означают, что данный операнд является необязательным.
Операнд A задаёт средний интервал времени между моментами поступления последовательных транзактов в модель. Если этот интервал постоянен, то операнд B не используется. Если же интервал поступления является случайной величиной, то в операнде B указывается модификатор среднего значения, который может быть задан в виде модификатора-интервала или модификатора-функции. Модификатор-интервал позволяет задать равномерный закон распределения поступления транзактов. Запись GENERATE A,B означает, что время поступления транзактов будет распределено равномерно на отрезке [A–B, A+B]. Ясно, что В<А.
Например, блок GENERATE 100,40 создаёт транзакты через случайные интервалы времени, равномерно распределённые на отрезке [60;140]. Разыгрывается случайное число в этом интервале, например 78, рождается первый транзакт. Затем, разыгрывается новое случайное число в интервале [60;140], например 132, и второй транзакт попадает в модель в момент времени 78 + 132 = 210 и т. д.
Модификатор-функция используется, если закон распределения интервала поступления отличен от равномерного. В этом случае в операнде B должна быть записана ссылка на функцию (её СЧА), описывающую этот закон, и случайный интервал поступления определяется как целая часть произведения поля A (среднего значения) на вычисленное значение функции.
В операнде C задаётся момент поступления в модель первого транзакта. Если это поле пусто или равно 0, то момент появления первого транзакта определяется операндами A и B.
Операнд D задаёт общее число транзактов, которое должно быть создано блоком GENERATE. Если это поле пусто, то блок генерирует неограниченное число транзактов до завершения моделирования.
Операнд E задаёт приоритет, присваиваемый генерируемым транзактам. Число уровней приоритетов неограниченно, причём