Visa или MasterCard? Карту какой платежной системы выбрать? Кто на свете всех богаче? Анализ роста благосостояния в мире.

Автоматное прогнозирование: путь от модели до компьютера

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

Рассмотрим характеристики этой программы:

Собственно программа состоит из двух блоков: ядра и оболочки. Оболочка занимается оформлением данных, их вводом и непосредственной передачей ядру. Ядро же, в свою очередь, принимает полученные данные и производит просчет по модели на заданный промежуток прогнозирования.

Среди функций ядра можно выделить следующие:

а) cтандартные: гауссовские случайные величины, распределенные по закону Пуассона, распределенные по экспоненциальному закону и с равномерными дискретным и непрерывным распределением;

б) заданные рядом распределения: при задании пользователем дискретной случайной величины;

в) заданные плотностью распределения: при задании пользователем непрерывной случайной величины;

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

Оболочка выполняет следующие функции:

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

  1. Расчетную формулу автомата, сигнала или функции, в которой с помощью основных арифметических операций, дополнительных функций, функций пользователя и других сигналов, автоматов, констант и случайных величин, которые были объявлены ранее, вводится функционал перехода для определенного автомата или сигнала.
  2. Имя, которое будет в дальнейшем использоваться для его обозначения.
  3. Алфавит автомата или сигнала (двоичный, натуральный, действительный, действительный положительный и т. д.).
  4. Комментарий для построенного автомата, сигнала или функции, который используется для объяснения работы модели, а также при построении таблицы условных функционалов переходов.
  5. Начальное состояние, которое является обязательным для полного задания автомата. Множество начальных состояний формирует вектор начальных состояний (ВНС), на основе которого и ведется дальнейший просчет данных.

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

Для примера рассмотрим модель коммерческого банка. Постановка задачи в этом случае будет звучать так:

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

Если же на момент прихода заявления на востребование вклада в банке нет достаточного количества наличных, то он берет в кредит необходимую сумму под процент . Выплаты процентов по всем кредитам происходят каждую единицу времени.

Данная модель может использоваться для определения оптимального значения банковского резерва R (Костина Н. И., Алексеев А. А. Финансовое прогнозирование в экономических системах. М.: «ЮНИТИ», 2002). Модель содержит в себе 6 автоматов, внутренние состояния которых имеют такой смысл:

Непосредственную работу программы можно увидеть на рисунке генерации таблицы условных функционалов переходов и матрицы алфавитов, которые отвечают построенной модели.

Возьмем конкретные данные и проследим динамику развития состояний автоматов модели с помощью данной программы. Пусть процентные ставки принимают такие значения: Величина банковского резерва =270 условных единиц (за одну условную единицу может приниматься 1000 долл.).

Начальные состояния автоматов пусть будут такими:

Посмотрим, как вырастет капитал коммерческого банка за 20 единиц автоматного времени.

Для этого можно рассмотреть табл. 1, полученную путем моделирования поведения капитала коммерческого банка:

Таблица 1

Время А1 А2 А3 А4 А5 А6 Х1 Х2
0 3 2 157 1200 2 1 0 0
1 2 1 157 1337,69 2,1 0,58 0 1
2 1 2 156,42 1498,18 2,12 0,77 1 0
3 5 1 158,54 1688,85 2,22 0,84 0 1
4 4 2 157,7 1908,57 2,05 0,96 0 0
5 3 1 157,7 2166,62 2,13 0,91 0 1
6 2 3 156,79 2467,6 2,23 1,18 0 0
7 1 2 156,79 2820,81 2,24 0,87 1 0
8 4 1 159,03 3236,39 2,41 1,01 0 1
9 3 2 158,02 3718,95 2,31 0,79 0 0
10 2 1 158,02 4284,73 2,47 0,78 0 1
11 1 1 157,24 4945,89 2,26 0,96 1 1
12 3 4 158,54 5721,7 2,43 0,69 0 0
13 2 3 158,54 6627,87 2,29 0,85 0 0
14 1 2 158,54 7688,1 2,4 0,81 1 0
15 3 1 160,94 8931,07 2,21 0,89 0 1
16 2 3 160,05 10 381,6 2,25 1,06 0 0
17 1 2 160,05 12 079,8 2,36 0,81 1 0
18 5 1 162,41 14 069,1 2,3 0,76 0 1
19 4 5 161,65 16 393 2,21 0,78 0 0
20 3 4 161,65 19 112,9 2,26 0,43 0 0

Если внимательно изучить данную таблицу, то можно заметить такие важные особенности модели:

  1. Когда сигнал принимает единичное значение, то в следующий момент времени значение автомата увеличивается на значение, когда же единичное значение принимает сигнал, то значение автомата уменьшается на величину. Это означает, что в каждый момент времени система или получает вклад от клиента, или выдает деньги клиенту, или ждет прихода следующего клиента.
  2. Можно увидеть, что в каждый момент времени величина капитала коммерческого банка увеличивается, несмотря на то, что клиенты в банк не обращались (например, для момента времени 12, а для момента 13 уже заметно изменение капитала. Это связано с тем, что банк получает проценты по кредитам, которые были даны клиентам банка.

Также результаты можно наглядно проследить с помощью диаграммы. На ней изображено поведение автомата во времени. Данная модель показала, что коммерческий банк может увеличить свой капитал за 20 единиц автоматного времени до 19 119,2 условных единиц.

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

Нина Костина, Сергей Сучок

Статьи, интервью, публикации