(2.31)
и предположим, что каждому
функции
(2.32)
вогнута. Кроме того, мы предполагаем, что
функция U вдоль кривой
равен u*,
то есть
(2.33)
- оптимальное
управление
Принимая во внимание, что
построим
функции
следующим
образом
(2.34)=
(2.35)
Заметим, что для каждого фиксированных
функции
является
вогнутой, и что функции
совпадает с
:
достаточное условие Эрроу выполняется.
3. Численное решение
Будем рассматривать следующую задачу
оптимального управления:
(3.1)
(3.2)
(3.3)
,
(3.4)
,
(3.5)
(3.6)
Для численного интегрирования задачи Коши (3.1) при условии существования и единственности решения, известны методы: одношаговые Эйлера и Рунге-Кутта с модификациями, многошаговые типа Адамса и др.
Рассмотрим алгоритм решения задачи оптимального управления.
Алгоритм
Шаг 1: Подается начальный вектор управлений- u,
начальные условия -
, область поиска -
,
точность вычислений -
, начальный и
конечный момент времени - [t,T].
Шаг 2: Выбираем точку переключения
Шаг 3: При данном управлении решается задача Коши для системы дифференциальных уравнений, ищется траектория, вычисляется значение целевого функционала.
Шаг 4: Вызывается функция поиска приближенного решения.
Шаг 5: Проверка условий останова. Если условия
не выполняются,переходим к шагу 2,иначе алгоритм прекращает свою работу.
.1 Метод Эйлера
(3.1)
где yi+1 это искомое значение функции в точке xi+1.
Если теперь преобразовать это уравнение, и
учесть равномерность сетки интегрирования, то получится итерационная формула,
по которой можно вычислить yi+1 ,
если известно yi в
точке хi:
(3.2)
Сравнивая формулу Эйлера с общим выражением, полученным ранее, видно, что для приближенного вычисления интеграла в методе Эйлера используется простейшая формула интегрирования - формула прямоугольников по левому краю отрезка.
Построим рекуррентные формулы по формуле (3.2):
динамические ограничения:
(3.3)
(3.4)
начальные условия:
(3.5)
условия трансверсальности:
(3.6)
ограничение на управление:
(3.7)
Гамильтониан Н:
, при
(3.8)
Функция Лагранжа:
(3.9)
Условие стационарности по фазовым переменным:
(3.10)
(3.11)
(3.12)
(3.13)
Условие стационарности по управлению:
3.14)
.2 Методы Рунге-Кутты III,IV порядков
Дальнейшее улучшение точности решения ОДУ первого порядка возможно за счет увеличения точности приближенного вычисления интеграла в выражении.
Воспользовавшись формулой Симпсона, можно получить еще более точную формулу для решения задачи Коши ОДУ первого порядка - широко используемого в вычислительной практике метода Рунге-Кутты.
В формуле Симпсона для приближенного вычисления
определенного интеграла используются значения подынтегрального выражения в трех
точках. В интеграле их всего две, поэтому введем дополнительную точку в
середине отрезка [xi+1,xi]
тогда можно переписать так:
Полученное выражение является неявным, так как в
правой части содержатся еще не определенные значения функции yi+h/2 и yi+1. Чтобы воспользоваться этой
формулой, надо использовать некоторое приближение для вычисления этих значений
(3.15)
При использовании различных методов приближенного вычисления этих величин, получаются выражения для методов Рунге-Кутты различного порядка точности.
Алгоритм Рунге-Кутты третьего порядка - РК3
(погрешность порядка h3):
(3.15)
Алгоритм Рунге-Кутты четвертого порядка-
РК4(погрешность порядка h4):
(3.16)
Алгоритмы третьего и четвертого порядков требуют на каждом шаге трех и четырех вычислений функции соответственно, но являются весьма точными.
Построим рекуррентные формулы по формуле по
алгоритму РК3:
(3.10)
(3.11)
начальные условия:
(3.12)
условия трансверсальности:
(3.13)
ограничение на управление:
(3.14)
Гамильтониан Н:
, при
(3.15)
Условия стационарности по управлению и фазовым переменным строится аналогично методу Эйлера.
Для РК4 рекуррентные формулы строятся аналогично
РК3, используя формулы (3.16).
.3 Метод Адамса-Башфорта
Рассмотренные ранее методы (Эйлера, Рунге-Кутты) используют значение функции на одном предшествующем шаге, поэтому они относятся к так называемым одношаговым методам. Точность вычислений можно увеличить, если использовать при нахождении решения в некотором узле xiинформацию о значениях функции, полученных в нескольких (k) предыдущих узлах сетки интегрирования (xi-1, xi-2… xi-k).
(3.17)
Значения квадратурных коэффициентов для k от 2
до 4 приведены в таблице.
|
k |
|
|||
|
2 |
3/2 |
-1/2 |
|
|
|
3 |
23/12 |
-16/12 |
5/12 |
|
|
4 |
55/24 |
-59/24 |
37/24 |
-9/24 |
Полученное таким образом семейство формул называется явной k-шаговой схемой Адамса (методы Адамса-Башфорта).
Так как для вычислений по k-шаговой формуле
необходимо знание значения функции в k узлах. Поэтому приходится (k-1) решение
в первых узлах x1,
x2, …, xk-1получать с помощью
какого-либо одношагового метода, например метода Рунге-Кутты 4-го порядка.
4. Результаты решения задачи оптимального
управления
Для решения задачи оптимального управления на тему оптимальный режим управления двухсекторной модели в экономике разработано программное средство в среде Visual Studio 2013 на языке С# (приложение А). В качестве входных параметров будем рассматривать:
- коэффициент степени воздействия на рост производства;
объем производства в начальный момент времени инвестиционных товаров;
объем производства в начальный момент времени потребительских товаров;
протяженность интервала планирования, отсчитываемого от нуля.
На рисунке (4.1) представлено решение задачи при
следующих параметрах, методом Эйлера.

Рисунок 5.1 - Решение задачи оптимального
управления методом Эйлера при
.
Для примера на рисунке (5.2) представлено решение задачи оптимального управления методом более высокого порядка - метод Рунге-Кутты IV порядка.

Рисунок 5.2 - Решение задачи оптимального
управления методом Рунге-Кутты IV при
.
В начальный момент времени и до точки
переключения (для наших параметров точка переключения
)
все основные фонды, или капитал фондообразующего сектора идут на собственное
развитие и в развитие потребительского сектора. Выполнив предплановый уровень,
то есть, начиная с момента точки переключения и до окончательного момента
времени основные фонды, инвестиционные, производят товары потребления.
На рисунке (5.3) представлено сопоставление
методов. Из реализованных методов наибольшую точность имеет метод
Адамса-Башфорта.
Рисунок 5.3 - Сопоставление полученных решений
численными методами.
Заключение
Цель настоящей работы заключается в изучение математической модели двухсекторной экономики, а также реализация численных методов и алгоритмов для решения задачи оптимального режима управления двухсекторной модели в экономике.
Для достижения указанной цели были поставлены задачи. При решение задачи, применяя принцип максимума Понтрягина, были получены системы выражений для поиска оптимального решения.
Было доказано с помощью достаточного условия Эрроу, что полученная экстремаль это и есть оптимальное решение.
В рамках решения представления непрерывной задачи оптимального управления в дискретном виде были получены рекуррентные формулы для вычисления сопряженных переменных.
Разработано программное обеспечение для
численного решения оптимального режима управления двухсекторной моделью
экономики.
Список использованных источников
1) CalogeroА. NOTES ON OPTIMAL CONTROL THEORY[текст].2 книга. - Universita di Milano-Bicocca, 2014 - 143 с.
) Токарев В. В. Методы оптимальных решений. - М.: Изд-во ФИЗМАТЛИТ, 2011 - 422 с.
) Фесько О. В. Программный комплекс оптимизации динамических систем на множествах управлений[текст].- Изд-во Вестник БГУ, 2010 -68 с.
) Кротов В.Ф. Основы теории оптимального управления[текст]. - М.:Высш. Шк.,1990-430с.
) Галеев
Э.М. Курс лекций по вариационному исчислению и оптимальному управлению [текст].
- М.: МГУ.,1996 - 160 c.
Приложение А(обязательное)
Текст программы
using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Threading.Tasks;System.Windows.Forms;WindowsFormsApplication4
{partial class Form1 : Form
{Form1()
{();
}x1_shtr(double t, double x1,double alfa,double u)
{x1 * alfa*u;
}x2_shtr(double t, double x1, double alfa, double u)
{x1 *(1-u)*alfa;
}void таблицаToolStripMenuItem_Click(object sender, EventArgs e)
{panel1.Visible = false;.Text = "Решение представленно в таблице";.Visible = true;.Visible = false;.Visible = false;.Visible = false;.Visible = false;.Visible = false;.Visible = false;
}void графикиToolStripMenuItem_Click(object sender, EventArgs e)
{.Visible = false;.Visible = true;.Text = "Решение представленно на графиках";.Visible = false;.Visible = true;.Visible = true;.Visible = true;.Visible = true;.Visible = true;.Visible = false;.Visible = false; }void
public void Out(int q, double[] t, double[] x1, double[] x2, double[] u1,double J1)
{int k = 0; int q1; q1 = q;(q1 != 0)[] u1 = new double[q]; ;[] psi1 = new double[q + 1];[] psi2 = new double[q + 1];J, J1;t[0] = 0;(int i = 0; i <= q - 1; i++)[i + 1] = t[i] + h;(int i = 0; i <= q - 1; i++)[i] = 0.5;[0] = 1;(int i = 0; i <= q - 1; i++)[i + 1] = x1[i] + (1 - u[i]) * x1[i] * h;[0] = 0;(int i = 0; i <= q - 1; i++)[i + 1] = x2[i] + u[i] * x1[i] * h;= -x2[q];label:[q] = 0; psi2[q] = 1;(int i = q - 1; i >= 1; i--)