Автор работы: Пользователь скрыл имя, 04 Октября 2010 в 16:12, Не определен
Имитационное моделирование (от англ. simulation) – это распространенная разновидность аналогового моделирования, реализуемого с помощью набора математических инструментальных средств, специальных имитирующих компьютерных программ и технологий программирования, позволяющих посредством процессов-аналогов провести целенаправленное исследование структуры и функций реального сложного процесса в памяти компьютера в режиме «имитации», выполнить оптимизацию некоторых его параметров
Для анализа параметров любого узла можно использовать его номер <n>. Например, если транзакту необходимо проанализировать состояние узла типа delet, имеющего номер 5, и, в случае отсутствия уничтожающего транзакта, выполнить какой-то оператор, он должен пройти через следующее выражение:
if (addr[5]->se == nil)
<оператор>;
причем сам транзакт в это время находится в произвольном узле. Следует отметить, что возможны пробные обращения координатора network к ветви top(<n>): в смысле передачи управления, но не ввода транзакта в узел. Факт входа транзакта фиксируется в глобальной переменной go и автоматически анализируется всеми функциями ПИЛИГРИМа. Поэтому еще раз необходимо обратить внимание на то, что поток управлений в программе и поток транзактов в модели - это разные явления.
Часто в процессе моделирования возникает необходимость получить случайную величину в формате float, распределенную по какому-либо закону. В системе PILGRIM есть стандартные 32-разрядные датчики псевдослучайных величин. В каждом узле есть свой датчик, независимый от датчиков других узлов. Связь с этими датчиками осуществляется с помощью следующих функций:
normal(m,s);
– нормальный закон
expont(m); – экспоненциальный закон;
unifrm(m,s);
– равномерный закон на
rundum();
– равномерный закон на
erlang(m,s); – обобщенный закон Эрланга;
triplex(m,s,o); – закон b-распределения,
где m – мaтематическое ожидание ( normal, expont, unifrm);
– математическое
ожидание величины одного
– минимальное значение (triplex);
s – cpeднeквадратичное oтклонение (normal);
– мaкcимальное oтклoнeниe (unifrm);
– zero (expont);
– наиболее вероятное значение (triplex);
– количество отрезков(erlang), s > 0;
o – максимальное значение (triplex).
При обращении к одной из этих функций используется датчик того узла, в котором находится транзакт.
Табличные результаты моделирования
Таблица
результатов моделирования
*-----------------------------
|
ВРЕМЯ МОДЕЛИРОВАНИЯ: 501.58
|-----------------------------
| | | |Загруз-| | 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 открыт |
| 6 ag нет нет 10.71 0.83 46 1 1 открыт |
*-----------------------------
Отчет о результатах моделирования выводится в виде таблицы, состоящей из одной или нескольких страниц. Таблица содержится в отдельном файле, имя которого указывается автором модели в моделирующей программе.
Система обработки информации содержит мультиплексный канал и три мини-ЭВМ. Сигналы от датчиков поступают на вход канала через интервалы 10 + 5 мкс. В канале они буферируются и предварительно обрабатываются в течение 10 + 3 мкс. Затем они поступают на обработку в мини-ЭВМ, где имеется наименьшая по длине входная очередь. Емкости входных накопителей во всех мини-ЭВМ рассчитаны на хранение величин 10 сигналов. Время обработки сигнала в любой мини-ЭВМ равно 33 мкс. Смоделировать процесс обработки 500 сигналов, поступающих с датчиков.
Для начала работы необходимо найти на диске папку Gem и запустить файл Gem.exe. В меню «Файл» выбрать пункт «Создать» и развернуть рабочую плоскость на весь экран. С помощью палитры объектов построить граф модели на рабочей плоскости в соответствии с рисунком 1.
Рисунок 1 - Граф модели на рабочей плоскости
Нумеруются узлы автоматически, причем первая цифра номера – это номер плоскости, так как в систеие PILGRIM есть возможность иерархического построения графов моделей.
Имена
узлов прописываются в
Построив граф, необходимо убедиться в отсутствии «зацикливаний», то есть стрелок, протянутых в тот же узел, из которого они выходят.
Для инициализации модели необходимо нажать кнопку ModBeg (Model Begin) под палитрой объектов.
В
строке «Название» нужно ввести имя
модели, которое будет указано
в таблице результатов
В строке «Узлы» автоматически показывается номер последнего узла модели -118
В строке «Время» необходимо указать длительность периода моделирования (16500).
В качестве единичного отрезка разумно принять минимальный отрезок времени, который будет использоваться при задании параметров модели - в микросекундах (в соответствии с рисунком 2).
Рисунок 2 – Инициализация модели
В строке «ПСЧ» указывается начальное значение для генератора псевдослучайных чисел, необходимых для имитации случайных процессов. Автоматически для этого используется показание компьютерного таймера.
В строке «Пространство» предлагается выбрать тип пространства, если модель будет работать с координатной плоскостью. В данной задаче это не требуется.
Строки
«Задержка» и «Поток» предназначены
для задания номеров
В строке «Точность» можно выбрать необходимое число знаков после десятичной точки в таблице результатов моделирования.
В окне «Начальный С++ текст» при необходимости переопределяются имена параметров транзактов и задаются числовые константы.
Окно инициализации ресурсов предназначено для задания начального состояния узлов, которые в данной модели не используются.
В очередях сигналы накапливаются до 10 сигналов и затем отправляются на обработку в мини-ЭВМ (в соответствии с рисунком 3)
Рисунок 3 – Свойства узла Queue
Первый сервер – сигналы буферируются и предварительно обрабатываются в соответствии с рисунком 4.
Остальные
сервера предназначены для
Рисунок 4 – Свойства узла Serv (первичная регулировка)
В очередях заданий необходимо установить флаг учета приоритета транзактов (значение "prty"), в параметрах серверов так же нужно задать флаг учитывания приоритетов транзактов (значение "abs"), а также установиться закон распределения и время обработки в соответствии с рисунком 5.
Рисунок 5 – Детализация узла Serv
Описание генератора похоже на описание серверов в соответствии с рисунками 6,7. Здесь необходимо задать интервал времени поступления каналов на вход и время обработки.
Рисунок 6 – Свойства узла AG (датчик)
По условию от датчиков поступают на вход канала сигналы через интервалы 10+ 5мкс.
Рисунок 7 – Детализация узла AG (датчик)
Значение параметра 3 остаются нулевыми.
В данной модели ключ используется для регулирования поступления сигналов, в соответствии с рисунком 8.
Рисунок 8 – Свойства узла KEY
Для описания терминаторов необходимо задать только логическое имя узла. Никаких дополнительных действий в данной модели с ними не связано, в соответствии с рисунком 9.
Рисунок 9 – Свойства узла Terminator
После того, как граф модели построен, и все узлы полностью описаны, модель необходимо сохранить в графическом формате. Для этого в меню «Файл» нужно выбрать пункт «Сохранить», затем выбрать адрес сохранения на диске и ввести имя файла. Расширение .pgf (pilgrim graphic file) будет подставлено автоматически.
Если сохранение модели в графическом формате был успешно выполнено, нужно в меню «Выполнить» выбрать пункт «Генерировать С++ файл». В указанной пользователем папке будет создан файл PILGRIM-программы с расширением .cpp (имя также вводится пользователем). Тест программы приведен в Приложении А.
В данной курсовой работе были рассмотрены основные принципы моделирования в системе Pilgrim.
Изучены основные инструментальные средства, такие как транзакты, узлы, события, модельный таймер.
Рассмотрены основные типы узлов (Ag, Key, Serv, Creat и т.д.)
В рамках проекта была смоделирована система обработки информации.
#include <Pilgrim.h>
forward
{
int fw;