Типы узлов, используемые при разработке модели
Содержание
Введение ………………………………………………………………..4
1 Инструментальные средства системы Pilgrim ……………………….5
1.1 Технология моделирования в системе Pilgrim………………….....5
1.2 Основные понятия системы Pilgrim…………………………………6
1.3 Типы узлов, используемые при разработке модели…………...…..7
2 Разработка модели…………………………………………………….122
Заключение………………………………………………………………17
Листинг программы……………………………………………………..18
Список литературы……………………………………………………...20
Введение
В процессе управления различными процессами постоянно возникает необходимость прогнозирования результатов в тех или иных условиях. Для ускорения принятия решения о выборе оптимального варианта управления и экономии средств на эксперимент используются модели процессов.
Системы имитационного моделирования наиболее активно стали использоваться в 80-е гг., когда в разных странах применялось более 20 разных систем. Наиболее распространенными были GASP-IV, SIMULA-67, GPSS-V и SLAM-II, которые, однако, имели много недостатков.
Попытки создания универсальной системы имитационного моделирования привели к появлению системы Pilgrim-2.1, которая стала распространяться в России, Нидерландах и странах Балтии в начале 90-х гг. Пакет Pilgrim обладает широким спектром возможностей имитации временной, пространственной и финансовой динамики моделируемых объектов. С его помощью можно создавать дискретно-непрерывные модели. Разрабатываемые модели имеют свойство коллективного управления процессом моделирования. В текст модели можно вставлять любые блоки с помощью стандартного языка C. Pilgrim обладает свойством мобильности,т.е. переноса на любую другую платформу при наличии ОС Windows и компилятора C++. Модели в системе Pilgrim компилируются и поэтому имеют высокое быстродействие, что очень важно для отработки управленческих решений и адаптивного выбора вариантов в сверхускоренном масштабе времени. Полученный после компиляции объектный код можно встраивать в разрабатываемые программные комплексы, так как при эксплуатации моделей инструментальные средства пакета Pilgrim не используются.
Инструментальные средства системы Pilgrim
Технология моделирования в системе Pilgrim
Средством построения моделей в системе PILGRIM является графический конструктор Gem (от «Generator models»), представляющий собой набор узлов различного типа. На схеме имитационной модели узел есть графическое изображение некоторого типового процесса, или можно сказать, что внутри узла работает процесс. При этом элементарный процесс может быть представлен несколькими узлами имитационной модели, если этого требует логика его работы. Таким образом, схема имитационной модели представляет собой направленный граф, вершины которого представляют собой компоненты элементарных процессов, а дуги определяют направление потоков заявок и управляющих воздействий в моделируемой системе.
Конструктор Gem генерирует программу на языке С++, которая в дальнейшем должна быть скомпилирована в составе проекта в среде MS Developer Studio, где предварительно должен быть установлен Visual C++ с библиотеками Pilgrim.
Таким образом, процесс построения модели в системе PILGRIM включает в себя следующие этапы:
- Анализ структуры моделируемого процесса.
- Определение входных и выходных параметров модели.
- Построение графа модели с помощью конструктора.
Описание узлов графа (определение значений параметров узлов модели). Параметры узлов могут быть заданы константами или переменными пользователя. Во втором случае в момент входа в узел очередной заявки значения этих параметров должны быть определены с помощью операторов языка С++.
Определение условий выбора узла, если в модели имеются ветвления.
Компиляция модели.
Основные понятия системы Pilgrim
В системе имитационного моделирования PILGRIM граф модели описывает взаимодействия дискретных и непрерывных компонент имитационной модели и представляет собой стохастическую сеть. Каждый узел графа - это ветвь моделирующей программы.
Непрерывные компоненты представляют собой разностные уравнения, причем каждый очередной интервал (или шаг) интегрирования - это отрезок времени между двумя ближайшими событиями в стохастической сети.
Одновременность моделирования всех компонент системы имитируется с помощью единой службы модельного времени.
Основной динамической единицей любой модели, работающей под управлением имитатора, является транзакт.
Транзакт - это формальный запрос на какое-либо обслуживание, например сигнал о загрязнении какого-то пункта местности, телеграмма, поступающая на узел коммутации сообщений, проба загрязненной почвы, ожидающая соответствующего анализа и т.д. Пути "миграции" транзактов по графу определяются логикой функционирования дискретных компонентов модели.
Узлы графа представляют собой центры обслуживания транзактов. В узлах транзакты могут задерживаться, обслуживаться, порождать семейства новых транзактов, уничтожать другие транзакты. Вид обслуживания транзакта определяется типом узла. Нумерация узлов графа производится разработчиком модели. Следует учесть, что транзакт всегда принадлежит одному из узлов графа и, независимо от этого, относится к определенной точке пространства или местности, координаты которой могут изменяться.
Выход из узла одного транзакта называется событием. Предположим, что в момент времени t произошло какое-то событие, а в момент времени t+d должно произойти ближайшее следующее, но не обязательно в этом же узле. Тогда очевидно, что передать управление непрерывным компонентам модели можно только на время [t,t+d].
Текущее значение модельного таймера хранится в системной переменной timer. Значение модельного таймера доступно для чтения в процессе моделирования.
Типы узлов, используемые при разработке модели
Узлы имитационной модели характеризуются параметрами, задаваемыми пользователем при написании моделирующей программы. Параметры узлов могут иметь как постоянное, так и переменное значение. Первым параметром каждого узла является его символическое имя в модели, отражающее логическое назначение узла. Последним параметром является номер узла, в который должен перейти вошедший в узел транзакт. Ниже описаны принципы работы узлов и назначение дополнительных параметров.
1.3.1 Узел AG - постоянный генератор транзактов. Узел agпредставляет собой генератор транзактов. Он предназначен для создания транзактов имитационной модели. Транзакты генерируются по одному через определенные пользователем промежутки времени.
Для настройки генератора необходимо задать набор параметров (i,p,r,m,s,o,n). Параметры имеют следующий смысл:
i - номер узла-генератора (int);
p - приоритет (int), назначаемый каждому сгенерированному транзакту (вместо p=0 можно использовать p=none);
r - тип функции распределения интервала времени между двумя последовательно сгенерированными транзактами. Используются условные обозначения: norm - нормальное распределение, unif - равномерное, expo - экспоненциальное, erln - распределение Эрланга, beta - “бета”- распределение, none - интервал, являющийся детерминированной величиной;
m - математическое ожидание интервала времени (float) между двумя последовательно сгенерированными транзактами (r = norm, unif, expo), либо математическое ожидание одного слагаемого этого интервала (r=erln), либо минимальное значение интервала (r=beta), либо постоянная величина этого интервала (r=none);
s - величина, зависимая от типа функции распределения (float): среднеквадратичное отклонение (r=norm), либо максимальное отклонение от среднего ( r= unif), либо значение zero (r=expo, none), либо число слагаемых интервала (r=erln, в этом случае s > 0.0), либо наиболее вероятное значение интервала времени между двумя последовательно сгенерированными транзактами (r=beta);
o - величина, также зависящая от типа функции распределения (float): либо значение zero (r=norm, unif, expo, erln, none), либо максимальное значение интервала времени между двумя последовательно сгенерированными транзактами (r=beta);
Параметры генератора могут быть изменены во время работы модели с помощью команды cheg (change generator).
1.3.2 Узел KEY - клапан на пути транзактов.Узел key - клапан или ключ - работает по принципу “шлагбаума”. Когда клапан закрыт, транзaкт не может в него войти из предшествующего узла. Если же клапан открыт, то транзакт проходит через него в следующий узел без задержки. Среднее время пребывания такого узла в закрытом состоянии подсчитывается автоматически. Для управления этим клапаном или ключом существуют вспомогательные функции hold и rels.
Среднее время задержки - это среднее время пребывания ключа в закрытом состоянии. Число обслуженных транзактов - это число переключений ключа из закрытого состояния в открытое.
1.3.3 Узел TERM - безусловный терминатор транзактов. Узел term - терминатор транзактов, назначение которого заключается в следующем: он удаляет из модели входящий в него транзакт и фиксирует время его существования начиная с момента выхода этого транзакта из генератора.
1.3.4 Узел SERV - обслуживающий многоканальный прибор с абсолютными приоритетами.Узел serv - это обслуживающий прибор или сервер, осуществляющий какое-либо обслуживание транзактов в течение модельного времени, отличного от нуля. Обслуживание может быть в порядке поступления транзакта в освободившийся канал либо по правилу абсолютных приоритетов. Если такое правило задано и возникает ситуация, при которой в «голове» очереди на обслуживание находится транзакт с ненулевым приоритетом, все каналы заняты, причем в одном из каналов на обслуживании находится транзакт с более низким приоритетом, то выполняется прерывание обслуживания неприоритетного пранзакта, он удаляется из канала в стек временного хранения и канал занимает более приоритетный транзакт. После освобождения канала прерванный транзакт возвращается в канал и дообслуживается столько времени, сколько оставалось на момент прерывания. Глубина стека временного хранения не ограничена.
Таким образом, с точки зрения имитационной модели “обслуживание” заключается в задержке транзакта на заданный промежуток времени. Сервер – это одно- или многоканальный обслуживающий прибор, работающий по правилам абсолютных приоритетов или без них и имеющий стек для "прерванных" транзактов (правило относительных приоритетов реализуется в узле типа queue - очередь).
Для описания сервера необходимо задать набор параметров (name, c,u,r,m,s,o, next). Параметры имеют следующий смысл:
name – символическое имя обслуживающего прибора;
c – число обслуживающих каналов(int), c > 1;
u – дисциплина обслуживания: abs – приоритетная, с прерыванием обслуживания менее приоритетного транзакта, либо none –бесприоритетная;
r – тип функции распределения интервала обслуживания транзактов. Используются условные обозначения: norm – нормальное распределение, unif – равномерное, expo – экспоненциальное, erln – распределение Эрланга, beta – b- распределение, none – интервал является детерминированной величиной;
m – математическое ожидание интервала времени (float) обслуживания транзактов (r = norm, unif, expo), либо математическое ожидание одного слагаемого этого интервала (r=erln), либо минимальное значение интервала обслуживания (r=beta), либо постоянная величина этого интервала (r=none);
s – величина, зависящая от типа функции распределения (float): среднеквадратичное отклонение (r=norm), либо максимальное отклонение от среднего ( r= unif), либо значение zero (r=expo, none), либо число слагаемых интервала обслуживания (r=erln, в этом случае s > 0.0), либо наиболее вероятное значение интервала времени обслуживания транзактов (r=beta);
o – величина, также зависимая от типа функции распределения (float): либо значение zero (r=norm, unif, expo, erln, none), либо максимальное значение интервала времени обслуживания (r=beta);
next – номер узла, в который должен перейти транзакт после обслуживания в приборе.
Если задать r=abs, то имеются две возможности для работы с прерванными неприоритетными транзактами: либо они "дообслуживаются", либо характер прерывания был таков, что надо возобновить обслуживание сначала.
Например, если анализируется проба природной среды с помощью спектрометра, то внезапная поломка (интерпретируется как приоритетный транзакт) вынуждает начать анализ этой пробы (неприоритетный транзакт) заново. По умолчанию "обслуживание" транзакта будет продолжено после прерывания в режиме дообслуживания.
Однако если перед функцией serv транзакт пройдет через оператор присваивания типа t->ga=again, то он после прохода через эту операцию получает признак обслуживания заново. После выхода из serv этот признак теряется.
Следует отметить, что среднее время обслуживания транзактов в узле serv и среднее время задержки – это разные времена. При прерываниях обслуживание транзакта – это чистое время обслуживания, а во время задержки неприоритетного транзакта в узле входит как время обслуживания, так и время пребывания этого транзакта в прерванном состоянии (т.е. время обслуживания более приоритетного транзакта).
1.3.5 Узел QUEUE - очередь с относительными приоритетами. Узел queue моделирует очередь транзактов queue(name, u, next). Смысл параметров name и next аналогичен предыдущим узлам. Параметр u определяет правило построения очереди: либо транзакты упорядочены в порядке поступления (для этого необходимо использовать в качестве u слово none), либо, кроме этого, более приоритетные транзакты находятся ближе к началу очереди, а менее приоритетные – ближе к концу. Во втором случае работает правило относительных приоритетов, которое задается с помощью u=prty. Транзакт попадает не в хвост очереди, а в конец своей приоритетной группы.
Разработка модели
В соответствии с заданием строим модель, изображенную на рисунке 1.
Рис.1 Модель системы массового обслуживания
Узел 101 имитирует поступление автомобилей на автоматизированный пост диагностики. Ключ 102 используется для определения занятости парковки для автомобилей. Если на парковке 3 автомобиля уже есть, то очередной клиент уезжает- узел 106, если меньше трех, то автомобиль становится в очередь-узел 103. Если пост диагностики свободен, то автомобиль заезжает на него- узел 104 и обрабатывается на нем в среднем 65 минут. После этого автомобиль уезжает- узел 105.
Настройка параметров модели и узлов:
В узле 101 определяем параметры, характеризующие приход клиентов с интервалом, распределенным по экспоненциальному закону со средним значением 0,85 дней (рис. 2).
Рис. 2 Параметры узла AG 101
В узле 102 определяем условие перехода в очередь, либо уход автомобиля.
Рис. 3 Условия перехода из узла KEY 102 в узел 103
В узле 104 определяем параметры обслуживания автомобилей.
Рис. 4 Условия обслуживания автомобилей
Далее генерируем файл Kurs.ccp и преступаем к сборке проекта:
создаём на жестком диске рабочую папку для будущего проекта;
переносим в рабочую папку файл модели в формате .cpp;
вызваем Visual Studio, создаём новое рабочее пространство (Workspace): File –> New – > Project –> Win32Application. В окне Location задаём место расположения проекта, а в окне Project Name – имя проекта;
подключаем необходимые для построения объектного кода модели файлы ресурсов, библиотек и д.т. Добавление файлов в проект осуществляется путем выбора в главном меню пункта Project –> Add to Project –> Files. В проект необходимо подключить следующие файлы:
созданный файл PILGRIM-программы с расширением .cpp;
файл ресурсов Windows для моделей PILGRIM …\Projects\Pilgrim.res;
…\Lib98\Pilgrim_2047.lib;
…\Lib98\Comctl32.lib;
…\Include\Pilgrim.h;
– выполнить сборку проекта: выбрать пункт меню Build – > RebuildAll.
В результате в папке проекта появится вложенная папка Debug, в которой будет автоматически собрана готовая к выполнению программа – файл с расширением .exe.
В результате исполнения всех выше описанных действий, получаем результаты в виде таблицы, которая хранится в файле формата .txt.
*-----------------------------------------------------------------------------*
| ВРЕМЯ МОДЕЛИРОВАНИЯ: 501.58 Лист: 1 |
|-----------------------------------------------------------------------------|
| | | |Загруз-| | 2 | | | | |
| No | Тип |Точ-| ка, % | M [t] | C [t] |Счeтчик|Кол.|Оcт.|Состояние узла|
|узла| узла | ка |Путь,км| среднее | вариация| входов|кан.| тр.| в этот момент|
|-----------------------------------------------------------------------------|
| | | | | | | | | | |
| 1 queue нет нет 1.79 4.50 142 1 1 открыт |
| 2 serv нет %= 55.6 5.17 1.09 141 2 0 открыт |
| 3 term нет нет 7.96 0.79 96 0 0 открыт |
| 4 term нет нет 5.02 0.66 45 0 0 открыт |
| 5 ag нет нет 5.18 0.17 97 1 1 открыт |
*-----------------------------------------------------------------------------*
Заключение
В данной курсовой работе выработаны навыки алгоритмизации по схеме событий и программирования имитационных моделей систем массового обслуживания (СМО), фиксации и обработки данных в ходе статистических экспериментов с моделью, были рассмотрены основные принципы моделирования в системе Pilgrim и выработаны навыки разработки моделей с использованием объектно-ориентированной системы моделирования Pilgrim: построения графа модели с помощью графического конструктора Pilgrim, настройки параметров узлов, генерации кода модели, сборки проекта модели в оболочке Visual Studio, проведения имитационного эксперимента с моделью, получения и интерпретации результатов моделирования.
Изучены основные инструментальные средства, такие как транзакты, узлы, события, модельный таймер.
Рассмотрены основные типы узлов (Ag, Key, Serv, Creat и т.д.)
В рамках проекта была смоделирована система обработки информации.
Листинг программы
#include <Pilgrim.h>
forward
{
int fw;
modbeg("nonamed", 106, none, (long)time(NULL), none, none, none,none, 2);
ag("Автомобили", 101, none, expo, 0.85, none, none, 102);
network(dummy, dummy)
{
top(102):
if( (addr[103]->tn)<3 )
{
fw=103;
}
else
{
fw=106;
}
key("Занято?", fw);
place;
top(103):
queue("очередь", none, 104);
place;
top(104):
serv("Пост диагностики", none, none, norm, 65, 20, none, 105);
place;
top(105):
term("Автомобиль обслужен");
place;
top(106):
term("Клиент уезжает");
place;
fault(123);
}
modend("pilgrim.rep", 1, 8, page);
return 0;
}
Список литературы
1) Емельянов А.А., Власова Е.А., Дума Р.В. Имитационное моделирование экономических процессов – М: Финансы и статистика, 2002. – 368с.
2) Емельянов А.А. Имитационное моделирование в управлении рисками – СПб.: Инжекон, 2000. – 376с.
3) Емельянов А.А., Власова Е.А. Компьютерное моделирование - М. МГУЭСиИ, 2002. – 90с.
4) Советов Б.Я., Яковлев С.А. Моделирование систем: Учебник для вузов по спец. "Автоматизированные системы управления". М.: Высш.шк., 1985.- 271 с.
5) Варфоломеев В.И. Алгоритмическое моделирование элементов экономических систем: Практикум. Учеб. пособие. – М.: Финансы и статистика, 2000. – 208с.