Смекни!
smekni.com

Клиентская часть технологической среды для разработки больших экономических моделей: компоненты поддержки работы эксперта-экономиста при формировании и отладке (в расчетном режиме) структурного текста (стр. 3 из 13)

-10, -5, 0, 15, 100,...

Вещественные константы - вещественные числа в диапазоне от -1e+19 до 1e+19. Пример записи вещественных констант: -0.03, 3.14, 0.9999999, 10.44e-5,...

Язык содержит встроенные константы для задания постоянных величин:

p= 3.14159,

e = 2.71828,

g = 9.80665.

Эти константы изображаются следующим образом:

p - @pi; e - @e; g - @g.

Пример:

l:=[-@pi/2, @pi/2];

S = @pi*r^2;

f = (@e^x - @e^(-x))/2;

F = M*@g^2/2.

1.2.2.1.2 Переменные

В UniCalc'e рассматриваются переменные двух типов: целые и вещественные. Тип переменной определяется первым символом ее имени. Имя может состоять из букв латинского и русского алфавита, а также цифр, причем первым символом обязательно должна быть буква. Имена распознаются по первым восьми символам. Большие и малые буквы в имени различаются. Имена целых переменных начинаются с букв i, j, k, l, m, n, для латинского алфавита, и соответственно с букв и, й, к, л, м, н, для русского алфавита. Для больших букв умолчание сохраняется. Остальные переменные считаются вещественными.

1.2.2.1.3 Стандартные математические функции

sin() синус;

cos() косинус;

asin() арксинус;

acos() арккосинус;

tg() тангенс;

ctg() котангенс;

atan() арктангенс;

ln() натуральный логарифм;

exp() экспонента;

abs() абсолютное значение;

sign() знак числа;

sqrt() квадратный корень;

dif() функция символьного дифференцирования

max(a,b,..,c) максимальное значение;

min(a,b,...,c) минимальное значение;

lower(0 нижнее значение;

upper() верхнее значение;

1.2.2.1.4 Пользовательские функции

Пользовательские функции записываются в виде:

имя_функции (список формальных параметров) := выражение;

Допускается использование только арифметических выражений.

Вызов функции:

имя_функции (список фактических параметров);

Пример описания пользовательской функции:

f(x,y) := x^2 + y^2 - 1;

Пример вызова функции:

f(23.1, z+5) = 0;

1.2.2.1.5 Комментарии

Любая последовательность символов, заключенная между комбинациями символов "(*" и "*)", является комментарием и может вставляться в любое место программы.

1.2.2.1.6 Арифметические операции

+ операция сложения;

- операция вычитания и унарный минус;

* операция умножения;

/ операция деления;

^ операция возведения в степень.

Арифметические операции по приоритету в порядке убывания располагаются следующим образом: ^, /, *, -, +. Фактически операции "+" и "-" имеют одинаковый приоритет, так же как и /" и "*". Для изменения приоритета операций используются круглые скобки. Результатом операции деления в случае обоих целых операндов является целая часть частного.

1.2.2.1.7 Логические операции

OR логическое "ИЛИ";

AND логическое "И";

NOT логическое "НЕ";

-> импликация.

Логические операции по приоритету в порядке убывания располагаются следующим образом: NOT, AND, OR, ->.

1.2.2.1.8 Операции отношения

= равно;

<> не равно;

< меньше;

> больше;

<= меньше или равно;

>= больше или равно.

1.2.2.1.9 Оператор присваивания

Оператор присваивания используется для инициализации переменных и для задания начального интервала переменных. Вид оператора присваивания - := .

Пример операции присваивания:

х := 999;

Y := [5+6*10, 999].

1.2.2.1.10 Переменные - массивы

В последних версиях решателя возможно использование массивов произвольной размерности:

<array_name>[index_expr1, index_expr2, ... , index_exprN]

Тип элементов массива определен в имени массива <array_name> согласно правилам, действующим для имен переменных. Индексные выражения <index_expri> должны быть целыми константами или выражениями, результат которых - целое число. Элемент массива - это та же самая переменная, только записанная в специфической форме.

1.2.2.2 Внешний язык

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

1.2.2.3 Пример формулы на внешнем языке и внутреннем языке

Пусть существует несколько параметров A, B и С которые зависят от индекса Y, изменяющегося в диапазоне от 1992 до 1995. Параметр С, кроме этого зависит от индекса K, изменяющегося в диапазоне от 1 до 4-х. Также от параметра К зависит параметр D. Между ними существует взаимосвязь:

C{K,Y}=A{Y}+B{Y-1}+D{K+2};

Фигурные скобки {} «показывают» препроцессору, что перед ним переменная, которая зависит от индексов, находящихся в этих скобках. После трансляции на внутренний язык получается система уравнений:

C[1,1993]=A[1993]+B[1992]+D[3];

C[1,1994]=A[1994]+B[1993]+D[3];

C[1,1995]=A[1995]+B[1994]+D[3];

C[2,1993]=A[1993]+B[1992]+D[4];

C[2,1994]=A[1994]+B[1993]+D[4];

C[2,1995]=A[1995]+B[1994]+D[4];

Но все это сделано для распознавания «старых» моделей. Эту формулу также можно записать в виде, применяемом в нынешней версии.

1.3 Общая отруктура системы

Рис.2. Структура системы.

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

Вычислитель системы - UniCalc - реализован в виде динамически связываемой библиотеки (DynamicLinkLibrary), которая экспортирует функции и переменные. Вычислитель основан на принципах недоопределенной математики и разрабатывается в Академгородке в Новосибирске.

База данных реализована в формате DB, т.е. в формате Paradox. В этом формате, в основном, хранятся значения экономических параметров, т.е. входные и выходные данные. Ограничения параметров, т.е. система неравенств, уравнений представлена в виде текстового файла, поскольку данная информация не упорядочивается и не структурируется.

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

1.4 Структуры данных

Входные и выходные данные экономической модели хранятся в базе данных, реализованной в формате Paradox. В ней хранятся данные по экономическим параметрам, т.е. их описания и значения, и по структуре модели.

1.4.1 Инфологическая модель базы данных

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

· предметной области;

· объектов и связи между ними;

· лингвистическое;

· ограничения целостности;

· алгоритмических связей между показателями объектов;

· информационных потребностей пользователя.

1.4.1.1 Предметная область

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

1.4.1.2 Описание объектов

Рис.3. Структура объектов базы данных.

1.4.1.3 Связи между объектами

Рис.4. Связи между объектами.

1.4.1.4 Лингвистическое описание

База данных описывает экономическую модель, поэтому одним из объектов, входящих в базу, является объект «Экономическая модель». Объект «Экономическая модель» описывает файловую структуру экономической модели. Признаками данного объекта являются

· обозначение модели - статический атрибут, который показывает, под каким псевдонимом выступает экономическая модель в различных выходных формах системы, например, в форме с деревом модели;

· описание модели - статический атрибут, целью которого является пояснение - какую, собственно, часть макроэкономики описывает данная модель. В частности, это может быть представление макроэкономики какого-нибудь региона;

· путь к базе данных модели - динамическое свойство;

· название файла ограничений (файл, содержащий систему уравнений и неравенств для данной модели) - динамический атрибут.

Кроме этого в базе существуют объекты, которые описывают логическую структуру модели.

Объект «Экономический параметр». Синонимом данного объекта также является «экономическая переменная». Объект имеет следующие свойства: