Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Имитационное моделирование экономических процессов

.pdf
Скачиваний:
241
Добавлен:
01.05.2014
Размер:
6.69 Mб
Скачать

pr=4

ct>0 t

I

kn

 

 

 

 

 

tcb5

St

есЬб.

 

 

 

 

 

 

Транзакты

 

-ГТ"

 

 

 

 

 

 

 

ее

re

 

 

ct>0

 

pr=2

tcb4Hteb5

c t > 0 |

1

kn

serv

 

в каналах

—I—i

keb2 se ecb9

St

 

узла serv

st

ecb5

 

tebS

 

 

(kcb 2)

 

r

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ec

re

 

 

ct>0

ее

 

pr=2

ct>0

I

i

kn

 

I

 

 

 

 

<st

 

tcb4

St

ecb4

ev

 

ecbg

tcb7

 

 

 

 

 

ec

re

 

Планируемый

\

 

 

 

 

 

. переход

 

ее

 

pr=0

I

ct>0 I

I

kn

 

ct>0

I

 

St

ееЬЗ

 

 

ecb7

St teb6

 

 

 

nb=&(keb2)

 

ee

re

 

 

 

 

 

chbeg

pr=l

 

 

queue

 

 

 

et=0

 

kn

 

 

 

 

 

St

 

 

kcbl

 

 

 

rcbl

teb3

ecb2

ev

 

 

 

 

 

 

 

 

 

TT

 

 

 

 

 

ch

tc

 

ec

re

,

 

 

 

 

 

 

 

 

 

i

pr=0 i

c t = o | _ l

kn

 

 

 

 

tcbl

St

ecb 1

 

qc

 

 

 

rcb2

 

 

 

 

 

tc

 

Начало

 

 

 

 

 

 

списка событий

 

 

 

 

 

pr=Oj_

 

 

 

 

 

 

 

 

 

teb2

 

 

 

 

 

 

 

 

 

Фрагмент

 

Список

 

Узлы serv,

 

Стек прерванных

очереди: узел планируемых

queue и др.

 

неприоритетных

queue - kcb 1

событий

 

 

 

транзактов

-^-1

Рис. 2.12. Фрагмент случайной конфигурахши управляющих структур

91

2. Если среди всех есЬ, имеющих ct=0, не нашлось транзакта, ко­ торый можно продвинуть дальше, то в списке планируемых событий выбирается первый есЬ, у которого ct > 0. Далее величине d присваи­ вается значение ct, величина ct в данном есЬ получает нулевое зна­ чение, а у всех последующих в списке есЬ значения их ct уменьша­ ются на величину d. После этого производятся обращения к моделям непрерывных компонентов с передачей им параметра d, а показание общего модельного таймера увеличивается на величину d. Потом делается попытка продвинуть транзакт, связанный с этим есЬ, в сле­ дующий узел. Пункт 2 выполняется до тех пор, пока не будет вы­ бран транзакт для продвижения либо пока координатор network не сделает вьшод о том, что по какой-то причине все узлы заблокирова­ ны и моделирование не может быть продолжено.

Дело в том, что в моделях в результате неправильно проведенно­ го структурного анализа может возникать блокировка. Имитатор предоставляет специальные приемы для борьбы с этим явлением. Разработчик моделей имеет возможность автоматической проверки состояний интересующих его узлов и в случае необходимости раз­ блокирования их.

Рассмотренный алгоритм только поясняет специфику автомати­ ческого управления событиями; в реальной системе работает дру­ гой - скоростной алгоритм управления временем.

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

разностными уравнениями;

расчетными формулами, реализующими конкретный матема­ тический метод.

При реализации непрерывных компонентов очередной интервал (или шаг интегрирования) - это отрезок времени между двумя бли­ жайшими событиями в стохастической сети. В данной системе мо­ делирования обеспечиваются два способа реализации >10делей непрерьюных компонентов: пассивный и транзактно-управляемый. Пассивные непрерьшные модели (например, модель процесса в при­ родной среде, который можно только наблюдать, не имея возможно­ сти управления) запускаются сразу координатором network в нуле­ вой момент модельного времени.

92

Транзактно-управляемые непрерьшные модели запускаются по прибытии транзактов в узлы типа ргос. Эти модели запускаются на определенное время активности - время обслуживания транзакта в таком узле. Активностью процесса вьшолнения непрерывной модели можно управлять из других узлов: с помощью сигнальной функции passiv вьшолнение непрерывной модели в узле ргос приостанавлива­ ется, а с помощью другой функции activ - возобновляется. Такие свойства удобны при моделировании систем управления непрерыв­ ным производством. Для моделирования многоуровневых прерьшаний в вычислительной системе удобнее использовать узел serv.

Вы в о д ы

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

аппарат стохастических сетей для построения структурной схемы моделируемого процесса (не обязательно экономического);

метод Монте-Карло для статистических испытаний и проверки гипотез;

специально созданный набор датчиков псевдослучайных вели­ чин для решения экономических и иных задач;

методы планирования экстремальных экспериментов.

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

создает графическую схему модели методами структурной по­ слойной декомпозиции объекта экономики;

генерирует программный код имитационной модели на язьше Pilgrim в процессе диалога и последовательной декомпозиции, что позволяет применять используемую методологию экономиста­ ми-непрофессионалами в области программирования.

93

Вопросы для самопроверки

1.Какие основные функции выполняет моделирующая система?

2.Чему в реальной действительности соответствует граф модели?

3.Как определяется транзакт?

4.Что такое событие?

5.Какие бывают ресурсы (дать определение и указать разновидно­ сти)?

6.Как связаны узлы модели с ее графом?

7.Что такое пространственное моделирование?

8.Чем отличается генератор транзактов с бесконечной емкостью от узлов других типов?

9.Какой процесс можно назвать очередью (с приоритетами или без приоритетов)?

10.Как функционирует узел обслуживания с многими параллель­ ными каналами?

11.Какие две основные функции выполняет терминатор, убираю­ щий транзакты из модели?

12.Как работает управляемый генератор (размножитель) транзак­ тов?

13.Чем отличается управляемый терминатор транзактов от обычно­ го терминатора?

14.Как может перекрывать путь транзактам управляемый клапан?

15.Что такое очередь с пространственно-зависимьши приоритб;гами?

16.Какие основные функции может выполнять управляемый про­ цесс (непрерывный или пространственный)?

17.Какие процессы возникают в имитационной модели в связи со счетами бухгалтерского учета?

18.Какие правила заложены в основу работы узла типа распоряди­ тель финансов (или «главный бухгалтер») в имитационной мо­ дели?

19.Какой ресурс представляет собой склад перемещаемых ресур­ сов?

20.Какие функции выполняет менеджер (или распорядитель) ресур­ сов?

21.Для чего нужен структурный узел финансово-хозяйственных платежей?

22.В чем заключается различие между перемещаемыми и неперемещаемыми материальными ресурсами в имитационных моде­ лях?

94

23.Что такое стартовый и оперативный информационные ресурсы?

24.Как моделируется работа с денежными ресурсами?

25.Какие узлы реализуют пространственную имитацию?

26.В чем смысл алгоритма «скорой помощи»?

27.Зачем нужен структурный узел выделения ресурсов (материаль­ ных или денежных)?

28.Для чего нужен произвольный структурный узел?

29.Зачем используется виртуальный структурный узел в качестве графа модели?

30.Чем принципиально отличается модельное время от астрономи­ ческого?

31.Какие бывают масштабы времени при имитационном моделиро­ вании (указать разновидности)?

f-i<^:-r.i^:

ОСНОВНЫЕ ПРАВИЛА МОДЕЛИРОВАНИЯ. МОДЕЛИРУЮЩИЕ ФУНКЦИИ

3.1 ЯЗЫКОВЫЕ СРЕДСТВА

Все узлы имитационных моделей являются процессами в систе­ ме Pilgrim. Стохастическая сеть, в виде которой представляется мо­ дель, не является вычислительным алгоритмом. Попытки предста­ вить имитационную модель в виде набора алгоритмов приводят к написанию больших (и сложных) моделирующих программ. Такой подход назьгаается алгоритмическим моделированием; он не всегда доступен экономисту, даже имеющему подготовку в областр про­ граммирования. Цапример, запрограммированная на язьпсе Visual Basic алгоритмическая модель, состоящая из очереди и обслужи­ вающего прибора (всего два узла), занимает несколько страниц тек­ ста на этом языке программирования.

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

Ниже рассмотрен набор языковых взаимосвязанных средств, предназначенных для описания имитационных моделей экономиче­ ских процессов. Эти средства подразделяются на пять связанных частей:

96

формализация запуска имитационной модели: инициализация {Объектов и структур данных;

описание узлов с помощыо общих операторов управления 1ранзактами, событиями и узлами модели;

функциональное описание процессов управления материаль- ,йыми и денежными ресурсами;

формализация структурного анализа - управление переходами между слоями модели при многоуровневой декомпозиции;

описание сигнальных управляющих функций.

Данные средства по форме записи являются функциями, через параметры которых реализуются синтаксические связи между объ­ ектами (узлами, транзактами, ресурсами и событиями) имитацион­ ной модели. Форма записи различных условий и условных действий соответствует языку C++.

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

int - целое значение (обычно 16 разрядов);

long - длинное целое значение (обычно 32 разряда);

float - переменная с плавающей точкой (32 разряда);

double - переменная с плавающей точкой двойной точности (64 разряда);

char - символьная переменная или строка символов (1 байт).

3.2 ИНИЦИАЛИЗАЦИЯ ОБЪЕКТОВ И СТРУКТУР ДАННЫХ

ДЛЯ ЗАПУСКА ИМИТАЦИОННОЙ МОДЕЛИ

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

Использование предложенной в главе 2 концепции имитацион­ ного моделирования Pilgrim позволяет разрабатьшать два типа моде-

97

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

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

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

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

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

Оператор первоначальной настройки. Первоначальную на­ стройку моделирующих программ и инициализацию (разметку) в памяти ЭВМ графа модели осуществляет оператор modbeg(pi,p2,p3, Р4,Р5.Рб.Р7,Р8.Р9)- Это одна ИЗ первых операций в основном блоке мо­ дели (после forward).

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

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

Параметр рг - максимальный номер узла модели (mt), причем справедливо соотношение 2 < рг S Шщах , где тща» - некоторое гра­ ничное значение, которое задается при установке имитатора на ЭВМ (обычно Шпмх= 1024).

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

98

 

Оператор

Необходимость

п/п

 

 

применения в модели

1

#include <Pilgrim.h>

Всегда необходим

2

[Глобальные переменные и функции]

Только в сложных

 

 

 

моделях

3

forward

 

Всегда необходим

4

{

 

 

5

[Локальные переменные модели]

Часто необходимы

6

modbeg(Pi,P2,P3,P4,P5,P6,P7.P8,P9);

Всегда необходим

7

ag(Pl.P2.P3.P4,P5,P6.P7.P8);

 

 

ag(PbP2.P3.P4,P5,P6.P7,P8);

Всегда необходимы

8

ag(PbP2,P3.P4,P5,P6,P7,P8);

В ресурсных моделях

[Сигнальные функции]

9

network(PbP2)

Всегда необходим

10

 

(

Всегда необходим

Вставляется^

Блок описания узлов

 

модели (стохастическая

Всегда необходим

в секцию

многоуровневая сеть)

 

11

 

}

Всегда необходим

12

modend(pi,P2,P3,P4);

Всегда необходим

13

return 0;

Всегда необходим

14

>

 

Всегда необходим

 

 

 

Рис. 3.1. Структура секции инициализации модели

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

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

99

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

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

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

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

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

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

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

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

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

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

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

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

100