ПРЕОБРАЗОВАНИЕ ИМИТАЦИОННЫХ МОДЕЛЕЙ, РЕАЛИЗОВАННЫХ НА БАЗЕ МЕТОДОЛОГИИ «СИСТЕМНАЯ ДИНАМИКА», В КОДЫ АЛГОРИТМИЧЕСКИХ ЯЗЫКОВ ВЫСОКОГО УРОВНЯ

С. М. Аракелян, К. В. Демидов, А. В. Духанов,
С. Королев, А. Панов, В. Г. Прокошев (Владимир)
 

 

В данной работе разработан метод преобразования имитационных моделей, созданных на базе методологии «Системная динамика» с использованием программного средства Powersim Constructor, в коды алгоритмических языков. Получаемые при помощи такого метода «копии» моделей (фактически программные модули) занимают значительно меньше дискового пространства, значительно быстрее работают в составе тех приложений, в которые они интегрируются. В результате значительно повышается мобильность и снижается стоимость соответствующих программных средств, т. к. снимается необходимость установки и использования конечным пользователем пакета имитационного моделирования Powersim Constructor.

В настоящее время широкое применение – как для решения практических задач, так и для научных исследований – получил подход, основанный на имитационном моделировании динамических систем. Существует не один десяток методов для имитационного моделирования. Метод, о котором пойдет речь в данной работе, разработан Дж. Форрестером в конце 20 века и называется «Системная динамика».

Системная динамика (СД) представляет собой совокупность принципов и методов анализа динамических управляемых систем с обратной связью и их применения для решения производственных, организационных и социально-экономических задач [1]. Системно-динамические модели имеют вид потоковых диаграмм и содержат переменные двух типов – уровни, которые характеризуют значения накопительной величины, и темпы, которые являются мерами изменения тех или иных уровней [2]. Математической основой СД являются дифференциальные уравнения (ДУ) первого порядка.

Для автоматизированного использования СД создана «линейка» программных средств: Stella, iThink Analyst, Powersim Constructor и др. Последние два пакета программ фактически позволяют «рисовать» динамические модели (создавать диаграммы), т. е. осуществлять визуальное моделирование. Powersim Constructor (PSC) имеет еще одно преимущество – возможность обмена данными с различными приложениями. Несмотря на это, составление моделей в данном пакете и их эксплуатация сопровождается следующими трудностями:

           1.      для работы моделей необходима установка PSC или ее облегченной версии (Powersim Runtime);

2.      обмен информацией между программными приложениями и PSC замедляет моделирование и повышает риск порчи или потери данных.

Кроме того, несмотря на большие функциональные возможности пакета Powersim Constructor, существуют такие моменты в имитационном моделировании, которые в нем реализуются с затруднениями или не реализуются вообще.

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

В нашей работе речь будет идти о преобразовании системно-динамических моделей в код алгоритмического языка, такого как Pascal или C, т. е. о получении аналогичной модели, но разработанной в виде некоторого метода (процедуры) или программного модуля. В этом случае будут сняты ограничения PSC, а также решены проблемы обмена данных между приложениями.

Идея преобразования моделей в коды базируется на том, что расчеты ее параметров в течение одного шага моделирования выполняются при помощи численного интегрирования (например, методом Эйлера). Более того, соотношения, получаемые при помощи данного интегрирования, приводятся в PSC в виде системы нотаций модели.

Поэтому, как может показаться, преобразование системно-динамических моделей можно выполнять при помощи «переписывания» соотношений интегрирования ДУ в код алгоритмического языка. Но на самом деле такое преобразование будет искажать PSC-модель, т. к. при его выполнении не будет выдержан порядок вычислений. Таким образом, самой сложной частью рассматриваемой задачи является определение порядка вычислений соотношений интегрирования.

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

1.    темпы делятся на две группы: зависимые от уровней и независимые от них;

2.    очередь вычисления уровней влияет на поведение модели.

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

1.         вычисление значений уровней на основании значений темпов обеих групп;

2.         вычисление всех темпов модели (с предварительным расчетом всех соответствующих переменных-коверторов).

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

Перестановку выражений вычисления значений переменных-конверторов можно осуществить путем записи их в виде квадратной матрицы. Её размер определяется количеством выражений. В строках матрицы определяется использование переменных в выражении, а в столбцах – участие переменной в выражениях. Выписав вначале константы и последовательно записывая выражения, в состав которых входят ранее определенные переменные, можно осуществить необходимую перестановку.

Значит, переставив заранее переписанные соотношения интегрирования в вышеуказанном порядке и выполнив соответствующее оформление, можно получить процедуру (метод) алгоритмического языка, которая будет выполнять один шаг (период) работы модели. Для полноценной работы модели данную процедуру необходимо вызывать n+1 раз (с нулевого шага по n-й). Нулевой шаг необходим для предварительного расчета темпов, значения которых будут использоваться на первом шаге.

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

Таким образом, получаем следующий метод преобразования моделей, реализованных в PSC, в код алгоритмического языка:

1.      «переписывание» соотношений интегрирования, представляемых в PSC;

2.      объявление переменных модели (включая переменные-конверторы);

3.      объявление и определение процедуры (метода) инициализации уровней;

4.      перестановка соотношений интегрирования с целью достижения вышеуказанного порядка вычислений;

5.      оформление переставленных соотношений в виде процедуры (метода) и ее объявление;

6.      объявление и определение другой процедуры (метода) для ее многократного вызова.

Следует заметить, что такое правило не распространяется на другие пакеты разработки системно-динамических моделей. Например, в пакете iThink Analyst 5.0 (iTA) вначале вычисляются темпы, а только затем уровни.

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

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

Литература

1.    Горбунов А.Р. Системная динамика. Электронная библиотека статей
экспертов и сотрудников фирмы ТОРА-Центр. ТОРА-Центр, 1999.
http://www.tora-centre.ru/library/index.htm

2.    Форрестер Дж. Мировая динамика – М.: Наука, 1978. – 368 с.

Духанов А.В., Демидов К.В., Прокошев В.Г., Аракелян С.М. Преобразование системно-динамических моделей в код алгоритмического языка. Сб. науч. труд. в двух томах. – Владимир-М.: 2002. Т. 1. – С. 137–143.