Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Алгоритмы и программные средства имитационного моделирования систем. Учебное пособие
.pdf
61
Рис. 4.12
Задания
Задание 4.1. Представить в виде сети СМО следующую систему.
Система передачи данных обеспечивает передачу данных из хоста в хост через транзитный узел коммутации . В хост пакеты
поступают через 125 мс. Здесь они буферизуются в накопителе емкостью 20 пакетов и передаются по любой из двух линий: за 20 мс - по
линии 1 или за 205 мс - по линии 2. В узле они снова буферизуются в накопителе емкостью 30 пакетов и далее передаются по
линии 1 (за 253 мс) или 2 (за 25 мс). Пакеты из 1 поступают
в 1, а из 2 - в 2. Чтобы не было переполнения накопителя, в
узле вводится пороговое значение его емкости, равное 20 пакетам.
При достижении очередью порогового значения происходит подключение резервной аппаратуры и время передачи данных снижается для
линий 1 и 2 до 15 мс. На всех линиях с вероятностью 5 % возможно возникновение сбоев. Пакет данных, при передаче которого
произошел сбой, пересылается повторно.
Задание 4.2. Распределенная система передачи данных выполняет
пересылку пакетов данных из пункта А в пункт D через транзитные
пункты В и С. В пункте А происходит формирование пакетов данных с
интервалом 62 мс. Здесь они записываются в буферную память БП
А

62
и передаются по любой из двух линий - АВ1 или АВ2 за время 105
мс. В пункте В они опять записываются в буферную память БПВ, а за-
тем передаются по одной из двух линий - ВС1 или ВС2 за время 123
мс. Причем пакеты, прошедшие по линии АВ1, поступают в линию
ВС1, а пакеты, прошедшие по линии АВ2, - в линию ВС2. В пункте С
также имеется буферная память БПС, из которой в пункт D происходит
пересылка данных по трем линиям - СD1, CD2 и CD3 за время 185
мс. Причем пакеты данных, прошедших по линиям связи АВ1 и ВС1,
поступают на линии CD1 и CD2, а пакеты, прошедшие по линиям АВ2
и ВС2, - на линии CD2 и CD3.
Смоделировать прохождение через систему передачи данных 600
пакетов данных. Определить объемы буферной памяти БПА, БПВ, БПС,
необходимые для функционирования системы без потери информации.

63
5. СИСТЕМА ИМИТАЦИОННОГО МОДЕЛИРОВАНИЯ GPSS
Методами статистического моделирования можно сымитировать
работу СМО любой конфигурации с произвольными законами поступления заявок и их обслуживания. Однако этот процесс очень трудоемок из-за сложности программирования. Для упрощения этого процесса был разработан ряд систем имитационного моделирования. В
них поступление заявок в СМО и прохождение их по объектам (приборам, каналам, очередям) описываются входным языком системы
моделирования. Наибольшее распространение получила общецелевая
система имитационного моделирования GPSS (General Purpose Simulation System) с одноименным языком GPSS. Язык создан в 1974 г. и
развивается в настоящее время. Так, под операционные системы
Windows широко используется среда моделирования GPSS World. На
языке GPSS может быть представлена любая система (техническая и
нетехническая), которую можно описать в терминах теории массового
обслуживания.
5.1. Язык системы имитационного моделирования GPSS
5.1.1. Объекты языка GPSS
Язык системы GPSS строится из набора простых объектов, позволяющих описать любые модели, представленные в виде СМО и сетей
СМО. Все объекты языка делятся на несколько групп, называемых
категориями.
1. Динамические (подвижные) объекты. Они называются тран-
зактами и предназначены для имитации заявок (требований) на обслуживание.
2. Аппаратные объекты. В эту категорию входят:
– обслуживающие приборы;
– многоканальные устройства (накопители, память);
– логические ключи (переключатель потока транзактов).
3. Статистические объекты:
– очереди;
– таблицы.
4. Вычислительные объекты:
– переменные;
– функции.
5. Объекты хранения (для сбора дополнительной статистической
информации):
– ячейки;
– матрицы ячеек.

64
6. Группирующие объекты:
– ансамбли транзактов (позволяют создавать копии транзактов);
– цепи пользователя (позволяют выводить транзакты из модели
в целях смены дисциплины обслуживания).
7. Операционные объекты (разновидности операторов языка):
– блоки;
– операторы описания;
– команды.
8. Управляющие объекты - команды, которые являются разно-
видностью операторов языка.
Транзакты моделируют перемещение заявок на обслуживание по
некоторой сети СМО. При взаимодействии транзактов с аппаратными
объектами происходят события в модели, приводящие к изменениям
состояния.
События происходят в дискретные моменты модельного времени,
причем время изменяется в соответствии с алгоритмом событийного
моделирования (скачками). Планирование моментов наступления событий и реакция модели на эти события выполняются моделирующей
системой GPSS, реализованной в виде интерпретатора.
5.1.2. Стандартные числовые атрибуты
Каждому объекту соответствуют числовые параметры, описывающие его состояние в каждый момент модельного времени. Они
называются атрибутами.
Все атрибуты делятся на внутренние (системные) и доступные
пользователю - стандартные числовые атрибуты (СЧА). СЧА имеют
фиксированные обозначения, по которым к ним можно обращаться в
программах. В общем случае синтаксис СЧА: СЧА<объект>. Примеры СЧА:
Q – длина очереди;
F – текущее состояние прибора.
Объект, к которому относится СЧА, можно задать двумя способами:
– используя числовое имя объекта (F1);
– используя символьное имя объекта (F$SYS).
Некоторые СЧА указываются без объекта, например PR - приоритет транзакта.
Укажем основные СЧА, которые определены для транзактов:
– PR (от 0 до 127) – приоритет;
– M1 – время нахождения транзакта в модели;
– P<имя параметра> - параметр транзакта, имя которого мо-
жет быть задано в числовом или символьном виде.

65
Под параметрами транзакта понимают числовые характеристики,
которые могут быть сопоставлены каждому транзакту. Смысловая
сторона параметров определяется пользователем.
Например, если моделируется автотранспортное предприятие и
транзакты имитируют автомобили, то в качестве параметров могут
быть:
– модель автомобиля;
– водитель;
– мощность и т.д.
В GPSS World параметры могут принимать любые числовые зна-
чения и их количество для каждого транзакта не ограничено.
СЧА других объектов будем указывать по мере их изучения. Необходимо отметить, что в GPSS имеется ряд общесистемных СЧА,
которые не относятся к каким-либо конкретным объектам. Примеры
таких СЧА:
RN<> - датчик псевдослучайных чисел. Во всех случаях (кроме
нескольких исключений) при обращении возвращает целое число из
диапазона [0, 999] с равной вероятностью появления. В некоторых
случаях (например, если датчик используется как аргумент функции)
возвращает вещественное число из диапазона [0, 0.99999]. По умолчанию доступно 8 датчиков, через меню можно настроить любое их количество;
AC1 – значение абсолютного модельного времени.
С1 – значение относительного модельного времени, которое
можно устанавливать, сбрасывать и т.д.
5.1.3. Общая характеристика операторов GPSS
Программа на языке GPSS состоит из операторов, которые делятся на 3 группы:
1) исполняемые операторы (блоки языка);
2) операторы описания;
3) управляющие операторы (команды).
Блоки описывают работу таких объектов языка, которые непосредственно участвуют в процессе моделирования, т.е. взаимодействуют с транзактами. К блокам, в частности, относятся: операторы генерации транзактов, изменения их приоритета и параметров, операторы, описывающие работу их объектов, операторы, задерживающие
продвижение транзактов и изменяющие маршруты их движения.
Операторы описания определяют арифметические и логические
переменные, функции, таблицы и некоторые другие элементы модели.

66
Управляющие операторы задают режимы работы интерпретатора
GPSS. Например, начало и конец моделирования, повторный или многократный пуск с изменением исходных данных, распределение оперативной памяти между объектами и др.
Операторы описания и управляющие операторы с транзактами не
взаимодействуют. Допускается использование только одного оператора в строке. Формат операторов имеет следующий вид:
[<метка>]<операция>[<операнды>][;<комментарии>].
Метка является необязательным элементом, представляет собой
последовательность алфавитно-цифровых символов, начинающихся с
буквы.
Операция задается стандартным обозначением оператора языка.
Операнды перечисляются через запятую и могут включать до 5
элементов. Операнды условно обозначаются буквами A, B, C, D,
E, причем часть из них (или даже все) могут не указываться явно.
Операнды перечисляются без пробелов. Если опускаются не последние операнды, то запятые сохраняются, например (,B,,D).
В качестве операндов могут использоваться:
– числовые константы;
– имена объектов модели (числовые или символьные);
– номера блоков или их метки;
– стандартные числовые атрибуты;
– косвенно-адресуемые СЧА (СЧА*СЧА<объект>).
Под косвенно-адресуемой СЧА понимают такие СЧА, номера которых
задаются значениями других СЧА.
Комментарии являются необязательной частью и отделяются от
поля операндов символом «;». Комментарии могут занимать целую
строку. Для этого в первой позиции строки ставится «;» или «*».
5.2. Генерация, уничтожение и задержка транзактов в модели
Любая модель, описанная на языке GPSS, представляется в виде
комбинации элементарных объектов, таких как обслуживающие приборы, накопители, очереди, транзакты и др. Программная модель конструируется из блоков языка, т.е. из исполняемых операторов, описывающих объекты, которые взаимодействуют с транзактами. Каждый
блок GPSS имеет входы и выходы, через которые перемещаются транзакты, реализуя связь отдельных блоков в модели.
Существует два особых блока: GENERATE (имеет только выход
транзактов), TERMINATE (имеет только вход). Через блок GENERATE
транзакты вводятся в модель, а через TERMINATE удаляются из нее.

67
TERMINATE
БЛОКИ МОДЕЛИ
(Блоки языка GPSS)
GENERATE
В простейшем случае модель на языке GPSS можно представить в
виде следующей совокупности блоков (рис. 5.1):
Рис. 5.1
Блок GENERATE можно рассматривать как источник заявок в
СМО. Этот блок имеет следующий формат:
GENERATE A,B,C,D,E.
Здесь:
A – среднее значение интервала времени между поступлениями
транзактов в модель;
B – модификатор разброса этого значения. Если B - скалярная величина, то интервал времени – это случайное число, равномерно распределенное в диапазоне [A – B; A + B]. Если B - это обращение к
функции FN<имя функции>, то интервал времени вычисляется как
A∙B;
C – начальное смещение (время появления первого транзакта).
Если C не указан, то этот момент определяется первыми двумя операндами;
D – количество формируемых транзактов (по умолчанию – без ограничений);
E – уровень приоритета (по умолчанию 0).
Заметим, что метка у блока GENERATE не предусматривается.
Если выполнившие свои функции транзакты не удалять из модели, то они быстро заполняют всю доступную оперативную память, что
приводит к аварийному завершению моделирования. Чтобы этого не
произошло, используется оператор TERMINATE, который «уничтожает» транзакты, т.е. выводит их из модели. Формат оператора:
[<метка>] TERMINATE A.

68
Здесь A – необязательный операнд, который задает шаг уменьшения
счетчика завершения при выводе из модели одного транзакта.
Счетчик завершения – это системный счетчик, который применяется для управления длительностью работы программы. В процессе
моделирования содержит целое положительное число, которое может
только уменьшаться. При достижении нуля работа программы завершается. Начальное значение счетчика завершения задается командой
START A,
где A – начальное значение счетчика.
Программа на языке GPSS может содержать произвольное число
блоков GENERATE и TERMINATE, но не более одной команды START.
В тексте программы она должна быть последней.
Задержка транзакта в любой точке модели на некоторый временной интервал производится оператором:
[<метка>] ADVANCE A,B.
Здесь:
A – средняя длительность задержки;
B – модификатор разброса (как в блоке GENERATE).
5.2.1. Способы завершения моделирования в GPSS
В GPSS используются два способа завершения работы програм-
мы:
1) по числу транзактов, удаленных из модели;
2) по времени, прошедшему в модели.
В первом случае структура программы имеет вид, показанный в
следующем примере:
GENERATE 10,2
{ БЛОКИ МОДЕЛИ }
TERMINATE 1
START 100.
Здесь работа программы завершится в тот момент времени, когда из
модели будет выведено сто транзактов.
Во втором случае предварительно необходимо задать масштаб
времени, т.е. установить соответствие между абстрактными единицами
модельного времени (е.м.в.) и реальными единицами времени.
Например, предположим, что в рассмотренном выше примере
единице модельного времени соответствует одна секунда. Пусть требуется выполнить моделирование работы системы в течение 30 минут
или 30*60 = 1800 е.м.в. Для завершения работы программы через за-

69
=10±2
7±1
данный интервал модельного времени текст программы разбивается на
две части, первая из которых называется
, а вторая – .
Основной сегмент содержит описание модели системы. Сегмент
таймера задает длительность моделирования:
* Основной сегмент
GENERATE 10,2,,10
{ БЛОКИ МОДЕЛИ }
TERMINATE
* Сегмент таймера
GENERATE 1800 ;
TERMINATE 1
START 1.
Блок GENERATE в сегменте таймера можно записать следующим
образом: GENERATE ,,1800. Чтобы транзакт появлялся каждые 5
минут (300 единиц модельного времени):
* Сегмент таймера
GENERATE 300
TERMINATE 1
START 6.
5.3. Описание обслуживающих приборов и очередей
Для описания работы обслуживающих приборов используются
следующие блоки языка:
[<метка>] SEIZE A; занять прибор A;
[<метка>] RELEASE A; освободить прибор A.
Транзакт не может войти в блок SEIZE, если прибор A занят обслуживанием другого транзакта. Транзакт будет ждать освобождения
прибора в предыдущем блоке модели. Прибор A будет занят до тех
пор, пока предшествующий транзакт, ранее прошедший через блок
SEIZE, не войдет в блок RELEASE с таким же именем прибора.
Пример 5.1. Опишем на языке GPSS модель одноканальной сис-
темы массового обслуживания вида, показанную на рис. 5.2.
Рис. 5.2
Здесь T – интервал поступления заявок;
- длительность обработки заявок.

70
Модель такой СМО на языке GPSS имеет вид:
В этой программе предполагается, что обслуживание любого
транзакта успевает завершиться до поступления следующего транзакта. Если в этой модели увеличить значение или уменьшить величину
T, то на входе обслуживающего прибора может образовываться очередь ожидающих транзактов (рис. 5.3).
GENERATE 10, 2
SEIZE 1
ADVANCE 7,1
RELEASE 1
TERMINATE 1
START 100.
Рис. 5.3
Для регистрации этой очереди, т.е. для получения ее статистических характеристик, используются следующие блоки языка GPSS:
[<метка>] QUEUE A,B; войти в очередь;
[<метка>] DEPART A,B; выйти из очереди.
Здесь A – имя очереди;
B – величина, на которую возрастает или уменьшается очередь
при входе или выходе одного транзакта. По умолчанию B = 1.
Пример 5.2. Опишем на языке GPSS систему массового обслуживания с неограниченной очередью и параметрами: T = 10±2 е.м.в.;
τ = 8±3 е.м.в.
Модель на языке GPSS:
GENERATE 10,2
QUEUE BUF
SEIZE SYS
DEPART BUF
ADVANCE 8,3
RELEASE SYS
TERMINATE 1
START 100.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
