Каталог >> ИИ >> Технологии управления |
А.В.Костельцев.
Россия, Санкт-Петербург,
E-mail:
kx@peterlink.ru
Home page: http://private.peterlink.ru/kx/
Для практического исследования возможностей методов и алгоритмов, разрабатываемых авторами в целях создания системы автоматизации моделирования, построен интерпретатор языка программирования, позволяющий решать системы обыкновенных дифференциальных уравнений (ОДУ) разрешенных относительно вектора старших производных. В дальнейшем условимся называть упомянутый язык языком К.
Язык К позволяет описывать системы ОДУ практически в привычной для математиков текстовой форме, например, в форме
dx/dt = a11*x + a12*y;
dy/dt = a21*x + a22*y;
или
x' = a11*x + a12*y;
y' = a21*x + a22*y.
Таким же образом описываются начальные условия и коэффициенты системы ОДУ. При этом начальные условия и коэффициенты могут задаваться как константами, так и в виде отдельных формул и цепочек формул с применением элементарных математических функций и констант, по которым IMD выполняет необходимые вычисления перед началом и в процессе интегрирования системы ОДУ с помощью выбранного численного метода.
IMD может
рассматриваться как система автоматизации
построения программных моделей динамических
объектов или систем по их математическим
моделям, заданным в виде систем ОДУ. Как
программная среда IMD имеет в своем составе
следующие средства:
Основная диалоговая панель IMD с загруженной программой (программа приведена полностью в конце данного текста) показана на рис.1 и представляет собой шаблон для ввода основных компонент модели (если говорить о численном решении ОДУ, то речь идет о постановке задачи Коши). Окна, предназначенные для ввода текста, можно развернуть на весь экран. Пользователю предлагается в практически естественной текстовой форме задать следующие элементы.
1. Математическая модель. Текст системы ОДУ записывается в боксе model и компилируется в набор функций расчета правых частей системы ОДУ согласно количеству уравнений в системе.
2. Коэффициенты. Переменные коэффициенты и другие величины, требующие обновления на каждом шаге интегрирования, вводятся в виде текста (бокс coefficients) аналогичным с моделью способом. Главное отличительное свойство блока коэффициентов состоит в том, что его текст компилируется в отдельную функцию, которая в процессе счета будет вызываться перед осуществлением каждого шага интегрирования.
Рис.1. Основная диалоговая панель IMD (отладочный стенд).
3. Начальные условия. Могут задаваться в виде простых операторов присваивания (например, x = .5; y = 2.e+37;, и т.п.) или же в виде математического алгоритма их расчета. Пользователь вводит начальные условия, в специально отведенный шаблоном текстовый бокс (initial_proc). Его содержимое компилируется затем в отдельную функцию инициализации модели. Данная функция вызывается на выполнение один раз перед началом интегрирования системы ОДУ (имитации поведения модели). Следует отметить, что в блоке задания начальных условий можно определять любые величины (переменные), в том числе и постоянные коэффициенты математической модели.
4. Метод численного интегрирования. Выбирается пользователем из встроенной или предварительно записанной пользователем в память ЭВМ собственной библиотеки методов. Встроенный библиотекарь IMD построен таким образом, что предоставляет пользователю не только способ хранения методов, но и дает возможность исследовать, при необходимости, их динамические свойства. Процедуры, входящие в состав библиотекаря позволяют рассчитывать и наглядно представлять динамические характеристики, области устойчивости и области динамической согласованности методов. Это, в свою очередь, дает возможность вполне обоснованно выбирать из библиотеки как сам метод дискретизации ОДУ, так и оптимальный шаг интегрирования для данной математической модели.
Метод как программный объект является набором данных для встроенной процедуры численного интегрирования (многократного расчета правых частей ОДУ).
5. Модельное время. Задается начало, конец и шаг модельного "времени". Здесь под интервалом модельного "времени" (начало – конец) понимается общий интервал изменения независимой переменной системы ОДУ. Заметим, что решаемая система ОДУ должна быть автономной. Это требование, однако, практически не сковывает пользователя, т.к. перевод любой неавтономной системы в соответствующую автономную легко осуществляется добавлением простого уравнения (например, dx/dt = 1 ) и введением новой независимой переменной. Создаваемая модель в процессе своего функционирования взаимодействует с окружающей средой на каждом шаге модельного "времени". Простейшим примером такого взаимодействия может служить передача текущих значений переменных состояния модели на печать. Если говорить о многомодельной среде, то шаг модельного времени определяет моменты взаимодействия "живущих" одновременно моделей между собой.
Заметим здесь, что шаг модельного времени и выбранный пользователем шаг дискретизации системы ОДУ не обязаны не только совпадать друг с другом, но и быть когерентными.
Модельное время, после компиляции во внутреннее представление становится некоторой структурой глобальных данных, к которым может обращаться любой функциональный блок модели. Иначе говоря, текущее модельное время всегда доступно (по имени независимой переменной) в любой точке исходного текста модели.
На этом работа пользователя по созданию программной модели заканчивается.
В заключение приведем пример конкретной программы, построенной путем заполнения шаблона, предлагаемого IMD. Такие программы строятся автоматически и при их дальнейшем использовании IMD автоматически загружает и интерпретирует подобные тексты. Пользователю не обязательно знать эту форму представления программ для IMD, но для более четкого понимания принципов построения программных моделей полезно иметь представление о структуре исходного текста таких программ.
DIFFERENTIAL EQUATIONS SET
PROGRAM "@(#)VMFRK1_1.K 01.00 96/07/31";
%{
символы %{ и %}
ограничивают текстовое описание модели,
вводимое пользователем в специально отведенный
бокс как коментарий.
h0 -
начальная поперечная метацентрическая высота
(м);
g -
ускорение свободного падения (9.80665 м/с^2);
B -
ширина корабля (м);
T -
осадка корабля (м);
L -
длина корабля (м);
Sk -
площадь скуловых килей (м^2);
ks -
коэффициент для расчета площади сечения корабля
(.715);
Swl - площадь
сечения корабля (м^2);
Skwl = Sk/Swl; -
отношение площадей (.03);
Omt - частота
собственных бортовых колебаний (.598 рад/с);
tau - период
собственных бортовых колебаний (с);
taup = tau*sqrt(g/B); -
приведенный период;
alpha - угол
волнового склона (рад); [задается 4.5 и 9.0 град.]
Omega - частота
возмущения
[.3, .4, .5, .55, .6, .65, .7, .8, .9, 1.0, 1.1](рад/с);
teta - угол
в уст.режиме [13,15, 20, 25, 30, 25, 20, 10, 5, 4, 2](рад);
tetap - угловая
скорость (рад/с);
r -
поперечный метацентрический радиус (3.65 м);
Hi -
коэффициент вертикальной полноты (.699);
R -
обобщенный параметр корабля;
{ R = Hi/sqrt(2*PI*g)*Omega*(B*T*Hi*r/h0)^.25; }
Kpt -
редукционный коэффициент возмущающего момента;
{ Kpt = exp(-4.2*R^2); }
%}
model_time
{
interval = [0 ... 300] 1;
independent_variable t;
};
method
{
name =
"e01.04_EULER";
step = 0.1;
};
initial_proc()
{
h0 = 1.1;
g = 9.81;
B = 14;
T = 4.8;
L = 132.;
Sk = 40.;
ks = .715;
Swl = B*L*ks;
Skwl = Sk/Swl;
Omt = .598;
tau = 2*PI/Omt;
taup = tau*sqrt(g/B);
alpha = 9.*PI/180;
Omega = .3;
teta = 13.*PI/180.;
tetap = teta*Omt;
r = 3.65;
Hi = .699;
SQ4 = (B*T*Hi*r/h0)^.25;
RX = Hi/sqrt(2*PI*g);
R = RX*SQ4*Omega;
R2 = R^2;
Kpt = exp(-4.2*R2);
BT = B/T;
BT4 = BT^4.;
Bh = B/h0;
x1 = teta;
x2 = tetap;
}
coefficients()
{
Nut = .01*(1.78 - .078*taup)*(.5 +
.05*x2/Omt)*
(.0125*BT4+.044+(.262-.484/BT)*Skwl)*Bh*Omt;
F =
Omt^2*Kpt*alpha*sin(Omega*t);
}
model()
{
dx1/dt = x2;
dx2/dt = -Omt^2*x1 - 2*Nut*x2 + F;
}
print x1, x2, Nut, F;
Ядро данного
интерпретатора полностью переносимо, первый
интерфейс был написан для OS/2. Сейчас автор
находится в процессе написания
мультисинтаксического компилятора языка
моделирования поддерживающего (кроме ОДУ) языки
разностных уравнений, схемы аналоговых
вычислительных машин и т.д., кроме того язык будет
обладать мощью обычных языков программирования
(С).
Site of Information
Technologies Designed by inftech@webservis.ru. |
|