интересно
Предыдущая | Содержание | Следующая

Инициализация объектов и структур данных для запуска имитационной модели

Каждому типу узла имитационной модели соответствует определенная функция. Полный перечень условных обозначений узлов, которые дают название соответствующим операторам (функциям), и толкование процесса приведены на рис. 2.3.

Использование предложенной в главе 2 концепции имитационного моделирования Pilgrim позволяет разрабатывать два типа моделей: разомкнутые и замкнутые (так же, как и в теории стохастических сетей). Разомкнутые модели позволяют сравнительно легко реализовать исследование внутренних процессов в фирме, но они не учитывают взаимосвязи с объектами внешней среды: рынком, госбюджетом, населением и другими. Замкнутые модели выглядят сложнее (в смысле графа стохастической сети), но позволяют учесть влияние внешней среды и исследовать связь объекта экономики с другими объектами, финансово-кредитными учреждениями, рынком.

Модель состоит из двух характерных частей: секции инициализации и блока описания стохастической сети. Все рассматриваемые ниже операторы - это программные функции, управляемые соответствующими аргументами.

Рассмотрим подробно структуру секции инициализации (рис. 3.1). Она состоит из 14 компонентов, причем необязательные компоненты заключены в квадратные скобки.

Секция начинается с макрооперации #include <Pilgrim.h>, которая подключает моделирующую среду имитатора к модели. Далее следуют описания глобальных переменных и дополнительных функций, используемых в модели. Например, это могут быть функции, описывающие непрерывные компоненты, или вызовы этих функций.

Собственно модель начинается с оператора forward. За ним, если это необходимо, указываются локальные переменные разработчика модели.

Это одна из первых операций в основном блоке модели (после forward).

Аргументы этой функции имеют следующий смысл.

Параметр pi - символическое имя модели (char): строка длиной не более 14 символов.

nw где Шта, - некоторое гра-

ничное значение, которое задается при установке имитатора на ЭВМ (обычно nw= 1024).

Параметр р3 - модельное время, в течение которого необходимо производить моделирование (типа float).

Параметр р4 - произвольное целое число, используемое для настройки датчиков псевдослучайных величин (long). В каждом узле есть свой независимый датчик. В качестве этого числа полезно использовать значение таймера ЭВМ, обращение к которому имеет следующий вид: Р4 = (long)time(NULL). В этом случае результаты разных прогонов модели будут разными, имеющими случайные отклонения. При отладке лучше использовать постоянную комбинацию цифр, например р4 = (long)2013456789.

Параметр pj - признак режима пространственной имитации (tat):

earth - поверхность Земли, т.е. сферические географические координаты, широта и долгота;

plane - декартова плоскость, т.е. прямоугольная система координат;

cosmos - произвольное пространство (ответственность за правильность его представления возлагается на разработчика моделей);

попе - если пространственная имитация в экономической модели не используется.

Параметр ре - номер одной из очередей (узла типа queue, attach или send), которую необходимо контролировать во времени для анализа динамики задержек с графическим отображением результатов (int). Например, если указать число 3 и в модели действительно имеется очередь с таким номером, то можно получать изображение динамики этой очереди непосредственно в процессе моделирования.

Параметр р7 - номер (int) одного из процессов (узла типа ргос), который необходимо контролировать как в пространстве, так и во времени с графическим отображением результатов. Пространственная имитация будет рассмотрена в разд. 3.3, описывающем функцию ргос (не все версии имитатора имеют это свойство). Если нет необходимости в графической интерпретации пространственной имитации, то указывается попе.

Параметр pg - номер (int) терминатора (узла типа term), на входе которого необходимо наблюдать интенсивность потока транзактов во время моделирования. Если такой необходимости нет, то указывается попе.

Параметр р9 - точность (int):

если р9=1 - 6, то имитатор будет использовать от 1 до 6 знаков после десятичной точки при формировании замеренных результатов (временных интервалов);

если р9=попе, то имитатор будет представлять результаты округленными до целых значений.

За оператором modbeg следуют описания узлов - генераторов ag. Это единственный тип узла, который должен быть описан в секции инициализации. Эти генераторы не зависят от состояния других узлов сети и должны работать до того, как узлы других типов будут приведены в рабочее состояние.

Генератор транзактов. Генератор с бесконечной емкостью -это функция ag(pi,p2,p3,P4.P5P6P7Ps). Каждый генератор задается одним оператором ag. Обычно все ag записываются подряд (если их несколько) после modbeg. Аргументы ag имеют следующий смысл.

Параметр pi - символическое имя узла: строка длиной до 14 символов, включая пробелы (char).

Параметр рг - номер узла-генератора (int).

Параметр рз - приоритет (int), назначаемый каждому сгенерированному транзакту, - число в диапазоне 1 - 32 767; если приоритет не нужен, то рз=попе.

Параметр р4 - тип функции распределения интервала времени между двумя последовательно сгенерированными транзактами (int), имеющий значения:

norm - нормальное распределение;

unif- равномерное распределение;

expo - экспоненциальное распределение;

erbi - обобщенное распределение Эрланга;

beta - треугольное распределение;

попе - если интервал между транзактами является детерминированной величиной.

Полная информация об этих распределениях и соответствующих программных датчиках, используемых в модели, содержится в главе 1.

Параметр р5 - величина, зависимая от типа функции распределения (float):

математическое ожидание интервала времени между двумя последовательно сгенерированными транзактами (р4 = norm, unif, expo);

математическое ожидание одного слагаемого этого интервала (p4 = erln);

минимальное значение интервала (р4 = beta);

постоянная величина этого интервала (р4 = попе).

Параметр р6 - величина, зависимая от типа функции распределения (float):

среднеквадратичное отклонение (р4 = norm);

максимальное отклонение от среднего (р4 = unif);

значение zero (p4 = expo, none);

число слагаемых, входящих в случайный интервал и распределенных по экспоненциальному закону (если р4 = erln, то р6 > 0);

наиболее вероятное значение интервала времени между двумя последовательно сгенерированными транзактами (р4 = beta).

Параметр р7 - величина, также зависимая от типа функции растределения (float):

максимально возможное значение интервала времени между двумя последовательно сгенерированными транзактами (р4 = beta);

значение zero (р4 = norm, unif, expo, erln, none).

Параметр р8 - номер узла (int), в который передается сгенерированный транзакт (узел-приемник).

Координатор сети процессов. Координатор network (рьРг) осуществляет диспетчеризацию транзактов в узлах (процессах) модели, планирует события в едином модельном времени и активизирует дискретные или непрерывные компоненты модели, имитирующие внешнюю среду. Координатор выполняет всю модель либо до первой ошибки, либо пока не истечет время, заданное аргументом рз в функции modbeg.

Относительно синтаксиса языка программирования эта функция является структурным оператором, за которым следует фигурная скобка { , открывающая блок описания стохастической сети. Этот блок заканчивается закрывающей скобкой }. Обращение к этой функции делается только после того, как выполнены оператор modbeg и все операторы ag.

Аргументы pi и р2 - имена (адреса) соответствующих програм* мных функций моделирования внешней среды, производящих интегрирование, решение разностных уравнений, вычисление по формулам и т.д. Эти функции возвращают значение типа float. Им координатор передает единственный аргумент: float d - интервал .времени, в течение которого они получают управление. Понятие внешней среды может быть не только из экономики, например:

в экологии pi(d) и p2(d) могут быть произвольными функциями моделирования процессов переноса загрязняющих веществ в природной среде (в атмосфере - pi(d), а в воде - р2 (d));

в химии или энергетике pi(d) - уравнения, описывающие процессы, происходящие в реакторе, причем дискретные компоненты модели реактора - это его система управления, включающая управляющую ЭВМ, систему опроса датчиков и другие компоненты (в данном случае p2(d) не нужна);

при моделировании вычислительной системы дискретные компоненты модели - это очереди в операционной системе, процессор, канал, диски и др., а функции pi и р2 не нужны (если только эта вычислительная система не управляет, например, процессом плавки в доменной печи).

Аргумент d в функциях pi и р2 - это глобальная переменная, содержащая интервал времени между двумя ближайшими событиями.

Разработчик модели лишен возможности самостоятельно (т.е. напрямую из модели) вызывать pi и рг во избежание непредсказуемых или ложных результатов, а переменная d может изменяться только координатором network.

Функции float pi(d) и float p2(d), если они необходимы, пишутся пользователем. Они должны производить либо интегрирование, либо вычисления по формулам, либо решение разностных уравнений на отрезке времени d, который каждый раз передается в качестве параметра типа float В общем случае, кроме C++, для этого может использоваться язык Паскаль (однако на C++ вычисления идут быстрее) или пакет математических программ.

Выбор очередного узла, в который необходимо продвинуть транзакт, осуществляется с помощью вызова network(pi,p2), записываемого только один раз перед блоком описания узлов стохастической сети. Если процессы pi(d) или p2(d) не моделируются, то в качестве pi и р2 необходимо соответственно указать слово dummy.

Оператор завершения моделирования. Оператор завершения модели modend(pi,P2.P3.P4) должен выполняться после того, как будет нарушено внутреннее условие noerr, определяющее, что в модели либо зафиксирована грубая ошибка, либо истекло время моделирования, указанное в операторе modbeg. Он удаляет все созданные в процессе моделирования управляющие структуры из памяти ЭВМ -как образованные заранее с помощью функции modbeg блоки kcb, так и блоки типа ecb и tcb из модели или цепочек свободных блоков, образуемых после их логического уничтожения в процессе моделирования. Далее этот оператор позволяет просмотреть на экране монитора графические результаты и выводит итоговые табличные результаты в файл-отчет на жестком диске. Значения аргументов следующие.

Параметр pi - символическое имя специального файла-отчета, в который записываются стандартные характеристики модели, полученные и замеренные в процессе ее выполнения. Это имя (char) является строкой и оформляется по системным соглашениям (например, имя Resultsl.doc).

Параметр р2 - номер первой страницы отчета (int).

Параметр рз - число строк (int) на каждой странице.

Параметр р4 - имеет два значения (int): либо page, если в файле-отчете необходимо проставить символ перевода страницы, либо попе.