Имитационное моделирование экономических процессов
.pdfpr=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