Главная страница

Моделирование систем лекция. Моделирование систем. Литература по теме Тема Модели на основе метода статистических испытаний


Скачать 2.59 Mb.
НазваниеЛитература по теме Тема Модели на основе метода статистических испытаний
АнкорМоделирование систем лекция
Дата17.08.2022
Размер2.59 Mb.
Формат файлаpdf
Имя файлаМоделирование систем.pdf
ТипЛитература
#647642
страница8 из 13
1   ...   5   6   7   8   9   10   11   12   13
Выполнить.

105
Установка параметров моделирования.
Задание основных параметров модели производится с помощью инструмента ModBeg (Рис. 19):
Рис. 19. Окно задания параметров моделирования
В строку Название вводится имя модели, которое будет указано в таблице результатов моделирования.
В строке Время указывается время моделирования.
В строке ПСЧ указывается начальное значение для генератора псевдослучайных чисел, необходимых для имитации случайных процесов. По умолчанию в качестве начального значения берется показание компьютерного таймера.
Строки Задержка и Поток предназначены для задания номеров контролируемых узлов: очереди (queue) и терминатора (term) соответственно. Для указанных узлов в процессе моделирования будут строиться графики времени задержки в узле типа queue и динамики выходного потока в узле типа term.
В правой верхней части окна записывается начальный текст на
С++, если он необходим. Программный текст делится на две части: начальный текст используется для подключения внешних библиотек и настройки глобальных параметров; текст инициализации ресурсов подготавливает параметры конкретных узлов типов attach и send.
Другие поля окна позволяют редактировать переменные, стандартные для оператора modbeg.

106
Описание выводного файла.
Параметры файла, содержащего результаты моделирования, задаются с помощью инструмента ModEnd (Рис. 20):
Рис. 20. Окно задания параметров файла-отчета
Определение переменных.
При определении новой переменной модели (Рис. 21) обязательными параметрами в окне ввода (вызывается с помощью инструмента Переменные на панели инструментов) являются имя и тип, значение пользователь может задавать или не задавать по своему усмотрению.
Рис. 21. Окно задания переменных модели
Построение графа модели.
В процессе редактирования графа модели можно выполнять следующие действия:
 добавлять новые узлы;
 перемещать узлы в области построения;
 удалять существующие узлы;
 определять маршруты переходов акторов.

107
Для редактирования графа модели в конструкторе используется технология «перетаскивания и бросания» объекта, обозначающего тип требуемого узла или действия, из панели инструментов в область построения графа. Панель инструментов в левой части окна редактора содержит значки, обозначающие узлы системы. Изображения узлов перетаскиваются при нажатой левой кнопке мыши. На панели представлены группы узлов, поэтому в отдельных случаях (в тех, когда на панели указан другой класс узла) для указания класса узла потребуется выполнить дополнительное действие. Задать класс можно:
1. Перетаскиванием графического символа какого-либо узла из группы на рабочую плоскость и последующим изменением свойства
Класс узла (окно свойств может быть вызвано выбором опции
Параметры контекстного меню, отображаемого нажатием правой клавиши мыши, или двойным щелчком левой кнопки по изображению узла). Например, узел term можно задать, поместив на рабочую плоскость узел actor и поменяв его класс со значения actor на значение
terminator.
2. Одним или несколькими нажатиями клавиши под значком узла на панели инструментов до момента появления узла нужного класса.
Узлы нумеруются автоматически (первая цифра номера означает номер плоскости, так как в системе Pilgrim есть возможность иерархического построения графа моделей.
Для удаления узла нужно:
 захватить инструмент левой кнопкой мыши;
 не отпуская кнопку, поместить указатель мыши на удаляемый узел;
 подтвердить необходимость удаления.
Для проведения стрелки нужно:
 захватить инструмент левой кнопкой мыши;
 не отпуская кнопку, поместить указатель мыши на узел–
источник стрелки;
 отпустить кнопку, что будет означать привязку начала стрелки к данному узлу;
 поместить указатель мыши на узел–приемник стрелки и щелкнуть левой кнопкой мыши.
Для удаления стрелки нужно:
 войти в окно описания узла–источника стрелки;
 пометить мышкой соответствующий Выход из узла;
 нажать кнопку Удалить.

108
Номер узла присваивается конструктором при его создании.
Обычно первые 100 номеров зарезервированы для узлов send – бухгалтерских счетов. Нумерация создаваемых узлов осуществляется последовательно, с номера 101. Смена номера узла возможна с помощью соседнего с номером диалогового поля, но не рекомендуется для узлов, созданных ранее.
Определение параметров узла.
Каждый узел модели характеризуется множеством параметров:
 типом;
 порядковым номером;
 именем;
 принадлежностью к плоскости;
 ссылками;
условиями переходов;
 встроенным программным текстом;
 параметрами, определяемыми спецификой типа узла, такими, как закон –распределения для узла типа serve, приоритет для queue и т.п.
Для описания узла необходимо открыть окно его свойств (Рис. 22).
Рис. 22. Окно задания свойств узла

109
Для вызова окна необходимо дважды щелкнуть по изображению узла левой кнопкой мыши либо один раз щелкнуть по узлу правой кнопкой и после появления всплывающего меню выбрать в нем пункт
Параметры узла.
Узел может содержать несколько ссылок на узлы, в которые может перейти актор из данного узла. Выбор маршрута должен осуществляться в соответствии с условиями, которые формулируются в правой нижней части окна определения параметров актора (поле Условие перехода). Для каждого из маршрутов выхода актора могут определяться действия, выполняемые после выхода, в виде операторов на языке С++.
Выбор исходящей ссылки осуществляется щелчком мыши в диалоговом поле Выходы. Любой вход и любой выход можно удалить, нажав кнопку Удалить под списком. На Рис. 23 показан пример задания условий (для окна на Рис. 22), при которых актор переходит из узла 102 в узел 103, и действий, выполняемых в этом случае.
Рис. 23. Спецификация условий и действий
Панель Общий С++ текст позволяет включить в процедуру обработки узла произвольный текст на языке С++. Текст имеет две части: одна выполняется до выполнения узлового оператора, другая – после. До вхождения актора в узловой оператор могут формироваться значения параметров, необходимых для выполнения оператора, например, величина среднего времени обслуживания актора в узле serve.
После выхода актора из узлового оператора могут стоять конструкции, предназначенные для управления логикой работы модели (сигнальные функции – см. далее) или осуществляющие сбор (накопление) статистики для подсчета итогов.
Поле Имя содержит имя узла, отображаемое на схеме и в таблице с результатами моделирования. Имена, назначаемые по умолчанию, можно (и целесообразно) изменять.

110
Значение поля Класс выбирается из списка, который состоит из типов узлов, имеющих одинаковый графический символ. Например, узел типа send можно сменить на attach (при этом изменяется набор и смысл параметров узла).
Нажатие кнопки Определить параметры приведет к появлению окна, вид которого зависит от типа узла. Так, для узла serve окно будет иметь вид, показанный на Рис. 24:
Рис. 24. Окно установки параметров узла
Смысл параметров Параметр 1, Параметр 2, Параметр 3 зависит от значения, указанного в поле ввода параметра Закон распределения. В частности, Параметр 1 для экспоненциального и нормального законов распределения представляет собой математическое ожидание (среднее), а Параметр 2 для нормального законов распределения – среднеквадратическое отклонение времени нахождения актора в узле.
Поле Плоскость показывает, к какой плоскости принадлежит узел, и доступно только для просмотра.
Проверка графа модели.
Построенная с помощью конструктора модель подвергается проверке. Предусмотрено два типа проверок:
 автоматическая в процессе построения модели (заведомо ложные действия блокируются);
 полная проверка графа (запускается командой меню).
Результат проверки графа выдается в окне в виде списка возможных и явных ошибок (Рис. 25), не позволяющих сгенерировать программный Рilgrim-файл (к явным ошибкам относятся отсутствие выходов или входов узла и неопределенные вход/выход плоскости – см. далее).

111
Рис. 25. Окно сообщений об ошибках в графе модели
Проверка корректности графа производится автоматически в момент, непосредственно предшествующий генерации программного
Рilgrim-файла, а также может быть вызвана явно указанием пункта
Выполнить основного меню.
Вопрос 2. Структура модуля исходного текста программной
Pilgrim-модели.
Все узлы имитационных моделей являются процессами в системе
Pilgrim. Стохастическая сеть, в виде которой представляется модель, не является вычислительным алгоритмом.
Попытки представить имитационную модель в виде набора алгоритмов приводят к написанию больших (и сложных) моделирующих программ. Такой подход называется алгоритмическим моделированием; он не всегда доступен прикладному специалисту, даже имеющему подготовку в области программирования.
Модель реальной системы может состоять из очень большого числа узлов. Поэтому нужны специальные языковые средства, не являющиеся языком программирования, которые бы позволили в лаконичном (по сравнению с текстом компьютерной программы) виде описать модель. Эти средства должны учитывать особенности узлов, жизненных циклов акторов, условий прохождения акторов по дугам, их размножения и гибели, а также функциональные особенности взаимодействия процессов, связанных с финансовыми, материальными и информационными ресурсами.

112
Набор языковых средств, предназначенных для описания имитационных моделей процессов, обеспечивает выполнение следующих задач:
1. Инициализацию объектов и структур данных при запуске программной модели.
2. Описание узлов с помощью общих операторов управления акторами, событиями и узлами модели.
3. Функциональное описание процессов управления материальными и денежными ресурсами.
4. Управление переходами между слоями модели при многоуровневой декомпозиции.
5. Описание сигнальных управляющих функций.
Данные средства по форме записи являются функциями, через параметры которых реализуются синтаксические связи между объектами (узлами, акторами, ресурсами и событиями) имитационной модели. Форма записи различных условий и условных действий соответствует языку C++.
Ниже представлен перечень основных разделов программного модуля на языке C++, на основе которого формируется исполнительный модуль для реализации модельных экспериментов (названия необязательных разделов заключены в квадратные скобки).
#include
[Глобальные переменные и функции] forward

[Локальные переменные модели] modbeg (p
1
,p
2
,p
3
,p
4
, p
5
,p
6
,p
7
,p
8
,p
9
) actor (p
1
,p
2
,p
3
,p
4
, p
5
,p
6
,p
7
,p
8
)
………………………… actor (p
1
,p
2
,p
3
,p
4
, p
5
,p
6
,p
7
,p
8
)
[Сигнальные функции] network (p
1
,p
2
)
{
Узел 1
……..
Узел N
 modend (p
1
,p
2
,p
3
,p
4
) return 0;


113
Препроцессорная инструкция
#include подключает моделирующую среду имитатора к модели.
Оператор modbeg (Р
1
, Р
2
, Р
3
, Р
4
, Р
5
, Р
6
, Р
7
, Р
8
, Р
9
) осуществляет первоначальную настройку моделирующих программ и инициализацию в памяти ЭВМ графа модели. Аргументы этой функции имеют следующий смысл:
Р
1
– символическое имя узла: строка длиной до 14 символов (типа char).
Р
2
– максимальный номер узла модели (типа int), причем
2≤p2≤mmax, где mmax – некоторое граничное значение, задаваемое при установке имитатора на ЭВМ (обычно mmax =1024).
Р
3
– модельное время, в течение которого необходимо производить моделирование (типа double).
Р
4
– произвольное целое число, используемое для настройки датчиков псевдослучайных величин (long). В каждом узле есть свой независимый датчик. В качестве этого числа полезно использовать значение таймера ЭВМ, обращение к которому имеет следующий вид
P
4
=(long)time(NULL). В этом случае результаты разных прогонов модели будут разными, имеющими случайные отклонения. При отладке лучше использовать постоянную комбинацию цифр, например,
P
4
=(long)2013456789.
Р
5
– признак режима пространственной имитации (типа int); возможные значения:
earth –поверхность Земли (сферические географические координаты широта и долгота);
plane–декартова плоскость (прямоугольная система координат);
cosmos–произвольное пространство (ответственность за правильность его представления возлагается на разработчика модели);
none – если пространственная имитация в модели не используется.
Р
6
– номер (типа int) одной из очередей (узел типа queue, attach или send), которую необходимо контролировать во времени для анализа динамики задержек в этой очереди с графическим отображением результатов.
Р
7
– номер (типа int) одного из процессов (узла типа proc), который необходимо контролировать как в пространстве, так и во времени с графическим отображением результатов. Если нет необходимости в графической интерпретации, то указывается none.
Р
8
– номер (типа int) терминатора (узел типа term), на входе которого необходимо наблюдать интенсивность потока акторов во время моделирования. Если такой необходимости нет, то указывается none.

114
Р
9
– точность (типа int). Если Р
9
=1,...,6, то имитатор будет использовать от 1 до 6 знаков после запятой при выводе результатов; если Р
9
=none, то результаты будут округляться до целых значений.
Оператор:
network (Р1, Р2), представляет собой координатор процессов модели. Он осуществляет диспетчеризацию акторов в узлах модели, планирует события в едином модельном времени и активизирует дискретные или непрерывные компоненты модели, имитирующие внешнюю среду.
Аргументы Р
1
и Р
2
- это имена (адреса) соответствующих программных функций моделирования внешней среды, производящих интегрирование, решение разностных уравнений, вычисление по формулам и т.д.
Функции double Р
1
(d) и double Р
2
(d), если они необходимы, пишутся пользователем. Если процессы Р
1
(d) и Р
2
(d) не моделируются, то в качестве Р
1
и Р
2 записывается dummy и standard соответственно.
Оператор modend (Р1, Р2, Р3, Р4), выполняется по окончании моделирования. Он позволяет просмотреть на экране монитора графические результаты и выводит итоговые результаты в файл-отчет. Аргументами оператора являются:
Р
1
– символическое имя файла-отчета (сhar).
Р
2
– номер первой страницы отчета (int).
Р
3
– число строк на каждой странице (int).
Р
4
– флаг символа перевода страницы в файле-отчете; возможные значения:
page символ ставится;
none символ не ставится.

115
Вопрос 3. Узловые операторы Pilgrim.
Узел в тексте программы состоит из шести компонентов
(необязательные компоненты заключены в квадратные скобки): top (i):
[Описание условий]
Узловой оператор
[Сигнальные функции]
[Блок операторов С++] place;
Описание узла начинается с метки-функции top (i), где i – номер этого узла (записывается с двоеточием).
Начиная с метки top(i) актор проходит все операторы узла i без временных задержек и попадает в оператор place, где находится до тех пор, пока не появятся условия для перехода в следующий узел.
В некоторых узлах одновременно могут находиться несколько акторов и все они содержатся в операторе place.
Не следует путать поток акторов в модели с потоком управлений в обычной программе. Задержка актора в place - это и есть время пребывания в узле.
После метки top(i) можно анализировать условия продвижения акторов по графу модели, при этом используются операторы if или
switch. Для динамического изменения направления движения акторов, законов распределения, значений времени обслуживания и других параметров можно использовать операцию присваивания.

116
Например, если в узле 3 нужно изменить значение переменной b в зависимости от значения переменной а, то следует записать: top(3): if (a < 0) b =4 else b =3*а+5 key («Переключатель», b) place, где
key - оператор, определяющий узел типа клапан.
Основным обязательным оператором, который стоит после двоеточия метки-функции, является оператор определения типа узла
(узловой оператор). Этот оператор имеет условное наименование, совпадающее с типом узла. Сводка и краткая характеристика всех узлов, имеющихся в системе Pilgrim приводится в Приложении.
В качестве узловых операторов могут использоваться все типы узлов кроме actor и parent.
После узлового оператора могут размещаться сигнальные функции и операторы С++, образуя конструкцию: agent
{
<операторы>
}.
Эти операторы могут задавать различные действия по управлению работой модели, например, по сбору статистики или трассировке, которые будут обсуждаться далее.
Последним оператором узла является оператор place.
Описание узла иногда состоит только из метки-функции top(i), узлового оператора и оператора place. Например:
 top(i): key («Переключатель», j);
 place.

117
Вопрос 4. Текст программной Pilgrim-модели СМО.
На Рис. 26 показан текст программы, который был сгенерирован на основании описания модели в конструкторе Gem для ранее рассмотренной модели СМО.
Рис. 26. Исходный текст программной модели СМО
Для лучшего понимания сгенерированного текста приведем описание присутствующих в программе узловых операторов.
Функция: actor (Р1, Р2, Р3, Р4, Р5, Р6, Р7, Р8), описывает узел, порождающий в соответствии с заданным правилом в процессе моделирования акторы и направляющий их в указанную точку (узел) модели.
Функция имеет следующие параметры.
Р
1
– символическое имя узла (строка длиной до 14 символов типа char).
Р
2
– номер узла–генератора (типа int).
Р
3
– число (типа int в диапазоне 1–32767), обозначающее приоритет, который присваивается сгенерированному актору, или none, если приоритет не присваивается.

118
Р
4
– тип функции распределения интервала времени между генерируемыми акторами, имеющий значения:
norm – нормальное распределение;
unif – равномерное распределение;
expo – экспоненциальное распределение;
erln – обобщенное распределение Эрланга;
beta – треугольное распределение;
none –если интервал обслуживания является детерминированной величиной.
Р
5
– величина (типа double), зависящая от типа функции распределения Р
4
:
 математическое ожидание интервала времени обслуживания актора (при Р
4
= norm, unif, expo);
 математическое ожидание одного слагаемого этого интервала
(при Р
4
= erln);
 минимальное значение интервала (при Р
4
= beta);
 постоянная величина этого интервала (при Р
4
= попе).
Р
6
– величина (типа double), зависящая от типа функции распределения Р
4
:
 среднеквадратичное отклонение времени обслуживания (Р
4
=
norm);
 максимальное отклонение от среднего времени обслуживания

4
= unif);
 значение zero (Р
4
= expo, none);
число слагаемых, распределенных по экспоненциальному закону и входящих в случайный интервал обслуживания (если Р
4
= erln, то Р
6
> 0);
 наиболее вероятное значение интервала времени обслуживания актора (при Р
4
=beta).
Р
7
– величина (типа double), зависящая от типа функции распределения Р
4
:
 максимально возможное значение интервала времени обслуживания актора (Р
4
=beta);
 значение zero (Р
4
= norm, unif, expo, erln, ш).
Р
8
– номер узла (типа int), в который поступает сгенерированный актор (узел-приемник).

119
Функция: queue (Р1,Р2,Р3), описывает узел, моделирующий очередь акторов.
Функция имеет следующие параметры.
Р
1
– символическое имя узла (строка длиной до 14 символов типа char).
Р
2
– тип организации очереди (типа int):
Р
2
– ргtу, если очередь с приоритетами.
Р
2
– none, если очередь без приоритетов.
Р
3
– номер узла (типа int), в который переходит актор из очереди
(узел-приемник).
Если в качестве параметра Р
6
оператора modbeg поставить номер узла-очереди, то можно автоматически получать график изменения среднего времени нахождения акторов в этой очереди.
Функция: serve (Р1, Р2, Р3, Р4, Р5, Р6, Р7, Р8), описывает узел, имитирующий одно- или многоканальный обслуживающий прибор. Может использовать или не использовать дисциплину обслуживания на основе абсолютных приоритетов. Имеет стек для хранения прерванных акторов.
Функция имеет следующие параметры.
Р
1
– символическое имя узла (строка длиной до 14 символов типа char).
Р
2
– число обслуживающих каналов, l < Р
2
<32767.
Р
3
– дисциплина обслуживания; возможные значения:
 abs, используется приоритетная дисциплина, с прерыванием обслуживания менее приоритетного актора более приоритетным; при этом после ухода приоритетного актора возможно одно из двух:
 дообслуживание прерванного актора с прерванного места;
 возобновление обслуживания прерванного актора заново;
 none, используется бесприоритетная дисциплина.
Р
4
– тип функции распределения интервала времени обслуживания актора в канале узла, возможные значения:
norm – нормальное распределение;
unif – равномерное распределение;
expo – экспоненциальное распределение;
erln – обобщенное распределение Эрланга;

120
beta – треугольное распределение;
none –если интервал обслуживания является детерминированной величиной.
Р
5
– величина (типа double), зависящая от типа функции распределения:
 математическое ожидание интервала времени обслуживания актора (при Р
4
= norm, unif, expo);
 математическое ожидание одного слагаемого этого интервала
(при Р
4
= erln);
 минимальное значение интервала (при Р
4
= beta);
 постоянная величина этого интервала (при Р
4
= none).
Р
6
– величина (типа double), зависящая от типа функции распределения:
 среднеквадратичное отклонение времени обслуживания (Р
4
=
norm);
 максимальное отклонение от среднего времени обслуживания

4
= unif);
 значение zero (Р
4
= expo, none);
 число слагаемых, распределенных по экспоненциальному закону и входящих в случайный интервал обслуживания (если Р
4
= erln, то Р
6
> 0);
 наиболее вероятное значение интервала времени обслуживания актора (при Р
4
=beta).
Р
7
– величина (типа double), зависящая от типа функции распределения:
 максимально возможное значение интервала времени обслуживания актора (Р
4
=beta);
 значение zero (Р
4
= norm, unif, expo, erln, none).
Р
8
– номер узла (типа int), в который передается обслуженный актор (узел–приемник).
Функция term (Р1), описывает узел-терминатор, который удаляет из модели входящий в него актор и фиксирует время его существования начиная с момента выхода этого актора из генератора.

121
Функция имеет один параметр:
Р
1
– символическое имя узла (строка длиной до 14 символов типа char).
Если в качестве параметра Р
8
подставить в modbeg номер узла- терминатора, то можно автоматически получать график потока акторов, поступающих на его вход.
Вопрос 5. Сборка и запуск исполнительного модуля модели.
Сгенерированный в результате описания модели файл с исходным текстом (<имя модели>.cpp) используется в качестве основы для получения работающей программы. Для этого необходимо выполнить следующую последовательность шагов.
1. Создать на жестком диске рабочую папку для будущего проекта.
2. Перенести в рабочую папку файл модели <имя модели>.cpp.
3. Открыть приложение Microsoft Visual С++.
4. Создать проект:
FileNewProjectsWin32 Application.
 В окне Locaton посредством кнопки (Browse) указать путь к файлу модели <модель>.cpp.
 В окне Project name указать имя проекта (латинскими буквами) и нажать кнопку OK.
 В открывшемся окне оставить неизменными установку по умолчанию для типа проекта (Empty application) и нажать кнопку OK.
5. Внести в проект файлы, необходимые для построения объектного кода модели (в таблице указаны папки, в которых обычно хранятся файлы):
Файл
Папка
Примечание
Pilgrim.lib
Visual Studio/VC98/Lib
Стандартная папка С++
Pilgrim.res
Visual Studio/VC98/ Projects
Стандартная папка С++
<имя модели>.cpp
Папка с файлом исходного текста программной модели
Должно соответствовать имени проекта, указанного в окне Location (файл модели);
Вставка выполняется командой Add Files To Folder / Add Files To
Project контекстного меню, вызываемого правым щелчком мыши после установки курсора на имя проекта (предварительно должна быть выбрана вкладка в окне проектов).

122 6. Построить исполняемый файл модели.
Выполняется одним из следующих способов:
BuildRebuild All главного меню Visual Studio.
 Нажатием функциональной клавиши F7.
 Нажатием значка панели инструментов.
Если в окне отчета о процессе построения появится сообщение 0
errors, можно запустить программную модель с помощью одного из следующих способов:
BuildExecute ModelPro.exe.
 Нажатием комбинации функциональных клавиш Ctrl + F5.
 Нажатием значка панели инструментов.
Установка параметров запуска модели и сам запуск производятся с помощью окна запуска. В частности, если требуется наблюдать график задержки по выбранной при построении графа модели очереди в динамике, то перед запуском программной модели нужно выбрать в меню Результаты пункт Динамика задержек в очереди (Рис. 27).
Рис. 27. Задание динамического отображения очереди

123
Можно также выбрать режим динамического построения графика потока в акторов в терминаторе (меню Результаты пункт Динамика
потока).
После установки всех необходимых значений параметров в меню
Моделирование нужно выбрать пункт Запуск модели (Рис. 28).
Рис. 28. Запуск имитационной модели
Из общего меню модельного окна осуществляется также управление режимами трассировки, которая может помочь в отладке модели. В частности, имеется возможность (Рис. 28):
 выйти в режим трассировки после наступления конкретного события;
 перейти в трассировку, если какой-то актор входит в определенный - узел или выходит из него;
 отслеживать путь определенного актора по графу модели;
 выйти в режим трассировки по показанию модельного таймера.

124
Вопрос 6. Состав и форма представления результатов
моделирования в системе Pilgrim.
Основные результаты запуска программной модели помещаются в таблицу, которая содержится в файле с параметрами, задаваемыми оператором modend. На Рис. 29 приводится пример таблицы с результатами моделирования для модели СМО:
Рис. 29. Результаты моделирования для модели СМО
Строки таблицы представляют собой узлы модели, а столбцы – входные и выходные её параметры. В столбцах записываются:
№ узла
Номер узла модели.
Наименование узла
Имя узла модели.
Тип узла
Тип узла.
Точка
Номер последней точки пространства, в которой находится узел типа create,
delete или proc на момент окончания моделирования.
Загрузка (%), Путь
(км)
Для узлов типа serve или proc – коэффициент использования акторами типа в процентах.
Для узла типа key – доля времени пребывания в закрытом состоянии;
Если производятся пространственные перемещения узлов типа proc, create или delete, то подсчитывается пройденный путь. Для пространства типа GEO путь считается в километрах.
М[t] среднее время
Среднее значение времени задержки актора в узле или иной интервал времени, зависящий от типа узла:
- для serve – это среднее время пребывания в узле (оно может быть больше времени обслуживания у неприоритетных акторов при рз=аbs, т.е. при наличии приоритетных акторов и правила абсолютных приоритетов);
- для queue – среднее время задержки в очереди;
- для actor – среднее время между двумя сгенерированными акторами;
- для term или delete – среднее время существования актора;
- для key – среднее время пребывания в закрытом состоянии;
- для create и dynamвсегда нулевое значение;

125
- для proc при p4=none, p4=поrm, p4=ехро или p4=unif – среднее время пребывания в узле (оно может быть больше времени обслуживания актора при переводе узла в пассивное состояние);
- для proc при p4=earth, p4=plane или p4=cosmos -суммарное время пребывания актора в узлах dynam и proc с учетом возможных возвратов акторов из proc в dynam.
C2[t]
квадрат
коэф.вариации
Отношение дисперсии временного интервала к квадрату его среднего значения.
Счетчик входов и hold Число акторов:
- прошедших через узел;
- сгенерированных акторов (для actor или create);
- уничтоженных (для term или delete);
- выполнивших операцию hold из другого узла в отношении узла key.
Кол.каналов
Число каналов в узле.
Ост.тр.
Количество акторов, которые остались в узле на момент завершения моделирования.
Состояние узла в
этот момент
Состояние узла в момент окончания прогона модели:
- открыт/закрыт для входа очередного актора, активен/пассивен (proc);
- положительное (денежная сумма с буквой S) /отрицательное (денежная сумма с буквой D) сальдо (send);
- остаток (денежная сумма с буквой S) / дефицит (сумма с буквой D) ресурса
(attach);
- количество переходов акторов на нижние слои-уровни модели (pay, rent).
После окончания процесса моделирования можно посмотреть
график, а также выходные параметры всех узлов модели (также с помощью меню Результаты).
Пример отображения графика, построенного в процессе имитации, показан на Рис. 30, на котором синим цветом показано среднее время задержки в очереди за все время моделирования.
Рис. 30. Окно результатов запуска модели

126
Если после запуска модели требуется внести в нее какие-либо изменения, то перед очередным построением исполняемого файла необходимо закрыть окно модели.
Изменения можно вносить, минуя стадию создания с помощью конструктора файла.pgf непосредственно в файл.cpp,. Следует иметь в виду, однако, что эти изменения не будут отражены в файле.pgf.
Вопрос 7. Моделирование на языке GPSS.
К одной из наиболее распространенных и популярных, несмотря на свою длительную историю, относится система GPSS. Ниже приводится краткое описание возможностей и правил работы в этой системе, знание которых понадобится для выполнения работы, на приемере ранее рассмотренной модели одноканадьной СМО.
После запуска программы откроется ее главное окно (Рис.31).
Рис. 31. Главное окно программы GPSS World Student Version
Структура диалогового окна аналогична структуре окна большинства приложений ОС Windows: в первой строке указано название программы, вторая строка содержит пункты главного меню, в третьей находятся несколько кнопок панели инструментов для наиболее часто используемых команд, в нижней строке главного окна отображается текущее состояние системы.

127
Пункт File главного меню служит для работы с файлами документов. Файлы моделей отображаются в окне Model и сохраняются с расширением.gps, текстовые файлы записываются в окне Text File и сохраняются с расширением.txt. С текстовыми файлами можно работать с помощью любого текстового редактора. Отчет с результатами имитационного прогона отображается в окне REPORT, сохраненный файл имеет расширение.gpr. можно сохранить сообщения, появляющиеся в процессе моделирования систем. В случае необходимости можно сохранять в файле с расширением.sim системные сообщения, выводимые в окне JOURNAL.
Рассмотрим последовательность действий для создания и запусков модели базы данных, обслуживающей поток запросов на выборку информации.
Предположим, что интервалы между появлениями запросов представляют собой случайные величины, распределенные равномерно в интервале от 8 мс до 28 мс, время обслуживания запроса есть также случайная величина, распределенная равномерно в интервале от 10 мс до 20 мс.
Описанные шаги процесса можно представить в виде блок-схемы
GPSS (Рис.32).
Рис. 32. Блок-схема GPSS-модели

128
Текст модели выглядит так:
1. GENERATE 18,10.
2. QUEUE DataQ.
3. SEIZE DataCenter.
4. DEPART DataQ.
5. ADVANCE 15,5.
6. RELEASE DataCenter.
7. TERMINATE 1.
Блок 1 модели (GENERATE) имитирует появление нового запроса, параметры блока задают среднее значение 18 и половину длины, или максимально допустимое отклонение от среднего значения 10 временного интервала между моментами появления.
Блок 2 модели (QUEUE) имитирует ожидание запросом в буфере своей очереди, если система занята обслуживанием других запросов, которые пришли раньше.
Блок 3 модели (SEIZE) имитирует начало обработки запроса системой после ее завершения обслуживания предыдущего запроса.
Блок 4 модели (DEPART) фиксирует факт освобождения запросом места в буфере ожидающих обслуживания запросов (это событие используется системой
GPSS для сбора информации о продолжительности нахождения запросов в буфере).
Блок 5 модели (ADVANCE) имитирует обработку (обслуживание) запроса, параметры блока задают среднее значение (15) и половину длины (5) времени обслуживания.
Блок 6 модели (RELEASE) фиксирует факт окончания обслуживания запроса и готовность системы к обслуживанию других запросов (если буфер запросов пуст, система перейдет в состояние ожидания будет находиться в нем до появления очередного запроса).
Блок 7 модели (TERMINATE) удаляет из модели обслуженный запрос.
Для дальнейшего обсуждения дадим определение основных понятий, используемых для работы с моделями в системе GPSS.
Объекты модели, имитирующие запросы на обслуживание, называются транзактами.
Объекты модели, имитирующие средства обработки запросов на обслуживание, называются устройствами (FACILITY).
Объекты модели, имитирующие место ожидания транзактами обслуживания, называются очередями (QUEUE).
Таким образом, блоки QUEUE и DEPART означают вхождение в очередь и выход из очереди соответственно, блоки SEIZE и RELEASE – захват устройства и освобождение устройства соответственно. Параметр, указанный в первых двух блоках (DataQ), означает имя очереди, параметр, указанный в следующих за ним двух блоках (DataCenter), означает имя устройства.

129
Для создания новой модели нужно выбрать пункт New меню File или нажать комбинацию клавиш Ctrl+N, после чего появится диалоговое окно New (Рис.33).
Далее следует ввести блоки модели или скопировать ранее заготовленный в каком-либо редакторе текст. Файл можно сразу сохранить (Save As). Результат показан на Рис.34.
Рис. 33. Диалоговое окно Новый документ
Рис. 34. Окно с моделью
Для запуска моделирования и просмотра стандартного отчета с результатами моделирования нужно отобразить меню Command, указав его имя в главном меню или нажав комбинацию клавиш Alt+C.

130
Подпункты меню имеют следующий смысл.
Create simulation
Создание выполняемой модели.
Retranslate
Повторная трансляция.
Repeat last command
Повтор последней команды
Conduct
Проведение эксперимента.
Start
Запуск на выполнение программной модели
Step 1
Пошаговое выполнение программной модели.
Halt
Прерывание моделирования.
Continue
Возобновление моделирования
Clear
Возврат модели в начальное состояние
Reset
Установка счетчиков статистики в начальное состояние
Show
Просмотр в диалоговом окне искомых параметров
Custom
Вызов диалогового окна ввода пользовательских команд
Создать и выполнить исполняемый модуль модели можно следующим образом:
 указать опцию Command главного меню и выбрать в появившемся меню опцию Create Simulation;
 указать опцию Command главного меню, выбрать в появившемся меню опцию Start, ввести число транзактов, которые должны пройти через модель за время имитационного прогона
(указываем 1000), и нажать кнопку OK (Рис.36).
Рис. 35. Окно трансляции модели
Рис. 36. Окно запуска

131
В результате имитационного прогона будет получен отчет, который выведется в окне REPORT (Рис.37). В отчет включаются следующие выходные данные прогона.
START TIME
Время начала моделирования (0.000).
END TIME
Время окончания моделирования (18068.208).
BLOCKS
Число блоков модели (7).
FACILITIES
Число устройств модели (1).
ENTRIES
Число транзактов (запросов), обслуженных в устройстве (1001).
UTIL
Коэффициент загрузки (использования) устройства, определяемый как отношение времени его занятости ко времени моделирования (0.828).
AVE.TIME
Среднее время загрузки (использования) устройства (14.942).
MAX
Максимальная длина очереди (3).
CONT
Число транзактов в очереди на момент окончания прогона (1).
ENTRY
Количество входов в устройство (1001).
ENTRY(0)
Количество входов в незанятое устройство (498).
AVE.CONT
Средняя длина очереди (0.202).
AVE.TIME
Среднее время нахождения в очереди (3.649).
AVE.(-0)
Среднее время нахождения в очереди без учета входов в незанятое устройство (7.261).

132
Рис. 37. Окно с результатами моделирования
В ряде случаев для анализа может понадобиться более полная картина протекающего процесса, которая включает, в частности, значения вероятности застать в очереди определенное число ожидающих запросов. Получить эти значения можно с помощью блока
QTABLE, который предписывает программной модели провести сбор и табуляцию этих данных (построить гистограмму).

133
Например, можно заготовить таблицу Q_DataCenter с пятью строками (Рис.38), в каждой из которых будут помещены частоты и кумулятивные вероятности того, что в очереди (буфере запросов) будут
ждать:
 0 запросов;
 более 0 и не более 1 запросов;
 более 1 и не более 2 запросов;
 более 2 и не более 3 запросов;
 более 3 запросов.
Рис. 38. Модель с блоком построения гистограммы
которую программа заполнит во время своего выполнения и выведет в виде отчета в конце прогона. Первый параметр блока
QTABLE указывает нижнюю границу диапазона, второй – шаг, последний – число интервалов.
На Рис.39 показан фрагмент отчета с результатами прогона модели, включающий гистограмму длины очереди запросов (TABLE
Q_DATACENTER).
Рис. 39. Отчет о моделировании с гистограммой

134
В отчете выведены MEAN – среднее значение (3.651) длины очереди, STD.DEV – среднеквадратическое (стандартное) отклонение
(6.078). В строке для каждого диапазона указаны RANGE – левая и правая границы диапазона, FREQUENCY – число случаев попадания в диапазон и CUM.% – оценка кумулятивной вероятности в процентах
(доля случаев, когда величина очереди не превышала правую границу).
Похожим образом можно получить статистику времени
нахождения запросов в очереди. Как и в предыдущем случае, нам понадобится внести в текст модели оператор с описанием таблицы (на этот раз это оператор TABLE) и, кроме того, оператор TABULATE, который обеспечивает сбор данных о времени нахождения в буфере ожидания к моменту ухода запросов (транзактов) из очереди (Рис.40).
Рис. 40. Модель с табуляцией времени ожидания
В операторе TABLE:
QT$DataQ указание наблюдаемого параметра (стандартного числового атрибута) – среднего времени пребывания в очереди (QT) с именем DataQ,
3.0 нижняя граница времени ожидания,
0.25 величина интервала (шаг) времени,
10 число интервалов.

135
Результаты запуска показаны на Рис.41.
Рис. 41. Модель с табуляцией времени ожидания
Структура текста программной модели и форматы объектов
Модель описывается с помощью последовательности операторов, каждый из которых может относиться к одному из трех типов.
 Блоки, образующие описание основных действий и их последовательности (блоки образуют основу блок-схемы модели).
 Декларативные операторы, необходимые для описания
переменных, функций и памяти (многоканальных устройств).
 Команды, применяемые как для описания логических правил выполняемых действий, так и для организации взаимодействия
пользователя с моделью.
Описание блока состоит из нескольких полей, отделяемых друг от друга пробелами или ограничителями (необязательные части заключены в квадратные скобки):
[<Метка>] <Операция> <Операнды> [<Комментарии>].
Метка начинается с латинской буквы. Она используется в том случае, если на оператор нужно сослаться из другого места программной модели.
Операция означает команду, выполняемую при входе транзакта в блок.
Операнды необходимы для задания значений параметров, характеризующих операцию. Операнды разделяются запятыми.
Некоторые операнды необязательны, их можно опускать. В большинстве операторов используется, как правило, один или несколько операндов.
Комментарии служат целям документирования и отделяются от операндов символом «;» или символом «*».

136
Объект, переменная и местоположение в программе обозначаются
именем, образуемым как последовательность символов длиной не более
250 и начинающихся с символа. Имя не должно совпадать с именем ключевого слова языка.
Для задания параметров модели служат стандартные (системные)
числовые атрибуты (СЧА). Для различных объектов модели (прибор, многоканальное устройство, очередь) определены свои СЧА, что отражается в их именах, первая часть которых идентифицирует тип объекта, а вторая часть его номер или имя.
Примеры СЧА:
M1
Время нахождения транзакта в модели.
V14
Переменная под номером 14.
K15
Число (константа) 15.
X19
Сохраняемая величина под номером 19.
Р4
Значение параметра транзакта под номером 4.
*7
Содержимое параметра транзакта с номером 7.
QT$WAIT
Время нахождения в очереди с именем WAIT.
FN$NETVAL
Функция с именем NETVAL.
Поле комментария служит для размещения пояснений к данному оператору. Комментарий начинается с символа «;» (точка с запятой) или
«*» (звездочка), за которым следует текст.
Выводы:
1. Использование стандарта для описания модели в моделирующих комплексах позволяет автоматически получать исходный текст программной модели с помощью специальных компонентов. В системе Pilgrim таким компонентом является конструктор моделей Gem.
2. Имитационные модели сложных систем могут содержать много узлов со сложными взаимосвязями между ними и сложной логикой протекания процессов. Для описания этих объектов и свойств оригинала в моделирующих комплексах применяются высокоуровневые средства, позволяющие создавать модель прикладным специалистам и не требующих специальных знаний в области программирования.
3. Вместе с тем эффективность работ по созданию и последующей модификации программной модели можно существенно повысить в случае, когда разработчику предоставлена возможность внесения изменений непосредственно в исходный текст программной модели. В моделирующих системах типа системы Pilgrim структура программного текста стандартизована и содержится в описании системы, обеспечивая легкую модификацию и исправления.

137 4. Основные конструкции языка описания моделей в системе
Pilgrim имеют унифицированный формат. Настройку моделей можно осуществлять заданием значений параметров узловых операторов и внесением логических конструкций в виде операторов языка С++ или
Pascal, обеспечивающих маршрутизацию и управление перемещением акторов.
5. В моделирующих комплексах типа Pilgrim модель представляет собой скомпилированный модуль. Для этого необходимо произвести сборку исполнительного модуля, которая в системе реализуется стандартной процедурой в среде пакета Visual Studio с включением в проект необходимых компонентов (модулей) системы Pilgrim.
6. Конечной целью имитационного моделирования является получение выходных данных. Моделирующие комплексы включают в себя средства для сбора, обработки и вывода стандартной набора параметров, которые в случае системы
Pilgrim имеют специфицированный формат и выводятся в файл с отчетом о результатах моделирования.
Вопросы для самопроверки:
1. Какие взаимосвязанные задачи реализуют языковые средства моделирующих комплексов?
2. Из каких основных разделов состоит программная модель системы Pilgrim на исходном языке?
3. Какую функцию выполняет предложение #include

?
4. Каково назначение оператора modbeg?
5. Каково назначение оператора modend?
6. Как можно пронаблюдать в динамике задержки в узлах типа
queue?
7. Как можно пронаблюдать в динамике задержки в узлах типа
term?
8. Как запустить процесс имитации?
9. Что такое транзакт в языке GPSS?
10. Что такое транзакт в языке GPSS?
11. Что представляет собой оператор языка GPSS?
12. Что представляет устройство в языке GPSS?
13. Какие результаты можно увидеть в отчете о прогоне модели
GPSS?
14. Что такое СЧА в языке GPSS?
15. Что нужно сделать, чтобы создать и выполнить исполняемый модуль модели в языке GPSS?
16. Что позволяет сделать блок QTABLE в языке GPSS?

138
Литература по теме:
1. Градов В.М. Компьютерное моделирование: учебник /
В.М.Градов, Г.В.Овечкин, П.В.Овечкин, И.В.Рудаков. – М.: ИНФРА-М,
2017. – 264с.
2. Емельянов А.А., Емельянова Н.З. Имитационное моделирование и компьютерный анализ экономических процессов – Смоленск,
Универсум, 2013 – 266 с.
3. Под ред. А.А.Емельянова Компьютерная имитация экономических процессов – М.:, Маркет ДС Корпорейшн, 2009 – 463 с.
4. Томашевский В., Жданова E. Имитационное моделирование в среде GPSS – М.: Бестселлер, 2003–416с.

139
1   ...   5   6   7   8   9   10   11   12   13


написать администратору сайта