Цель лекции: Показать применение дифференциальных уравнений в задачах управления. Показать эффективность объектно-ориентированного управления в задачах построения управляемых систем.
Многие процессы, описываемые дифференциальными уравнениями, являются управляемыми системами. Дадим формальное описание управляемой системы.
Пусть $$D$$, $$D_\Bbb{T}$$ имеют тот же смысл, что и в прошлой лекции. Пусть теперь еще выделено семейство множеств $$U(x,t)\subset\Bbb{R}^m$$, где $$x\in\Bbb{R}^n$$ и $$t\in[0,\Bbb{T}]$$ являются параметрами. Множество $$U(x,t)$$ называется множеством допустимых управлений.
Пусть теперь задана функция $$f(x,u,t)$$, которая определена при $$x\in\overline{D}$$, $$u\in\bigcup\limits_{x\in\overline{D},t\in[0,\Bbb{T}]}U(x,t)$$, $$t\in[0,\Bbb{T}]$$. Будем рассматривать обыкновенное дифференциальное уравнение с управлением$$\begin{array}{c} y'(t)=f(y(t),u(t),t), \\ \\ u(t)\in U(y(t),t)\ t\in[0,\Bbb{T}].\\ \end{array}$$ и начальным условием$$y(0)=y^0,\ y_0\in D.$$ Решением задачи 18.1-18.2 на $$[0,T]$$ является измеримая функция $$u(t)\in U(y(t),t)$$ и абсолютно непрерывная функция $$y(t)\in \overline{D}$$, $$t\in[0,T]$$, и эти функции удовлетворяют 18.1-18.2.
Мы сформулировали задачу на управления решениями дифференциальных
уравнений в довольно общем виде. Однако, как правило, управление
осуществляется с некоторой целью. Для этого вводится так
называемый целевой функционал. Целевым функционалом
называется любая числовая функция определенная на решении задачи
18.1-18.2. Обозначим этот функционал следующим
образом$$I=I(y,u)\in\Bbb{R}.$$
При наличии целевого функционала мы приходим к задаче оптимального
управления, то есть задаче о нахождении такого решения, которое
доставляет максимум (или минимум) целевому функционалу. На
практике, однако, часто применяется понятие решение задачи
управления, удовлетворительное с точки зрения целевого
функционала. Мы будем говорить, что решение задачи управления ---
Обратимся к моделированию задач управления. Общая схема такова
Следует отметить, что далеко не всегда удовлетворительное с точки зрения целевого функционала решение задачи управления является оптимальным решением. Более того, существует такие задачи управления решениями, для которых не существует оптимального решения.
Реализуем эту схему в виде абстрактного класса, который мы создадим, как наследник класса $$TRungeKutta$$.
$$\begin{verbatim} abstract class TControlSystem : TRungeKutta { public int M; public double[] U; public TControlSystem(int N, int M) : base(N) { this.M = M; U = new double[M]; } abstract public void SetU(); public override void NextStep(double dt) { SetU(); base.NextStep(dt); } } \end{verbatim}$$Рассмотрим модельную систему управления на основе уравнений, описывающих математический маятник. Будем рассматривать следующую управляемую систему дифференциальных уравнений.$$y''(t)+u(t)y'(t)+y(t)=0,$$ с начальными условиями$$y(0)=1,$$ $$y'(0)=0.$$ Здесь управление осуществляет изменением коэффициента затухания. Мы будем рассматривать множество допустимых управлений состоящее всего из двух точек:$$U=\{0,1\}\subset\Bbb{R}.$$ Нулевое значение управления соответствует отсутствию затухания в системе, а равное единице - наличию постоянного затухания. При отсутствии затухания наша система будет совершать гармонические колебания. Предположим, что наша цель состоит в том, чтобы поддерживать гармонические колебания с амплитудой 0.2. Мы будем использовать так называемое программное управление, т.е. будем выбирать наше управление зависящим от текущего положения системы. Будем использовать следующую формулу нашего управления:$$u(y,t)=\left\{% \begin{array}{ll} 0, |y|\le 0.2 \\ 1, |y|>0.2 \\ \end{array}% \right.$$ Таким образом, если положение осциллятора меньше заданного, то мы не используем затухания, а в случае, когда положение осциллятора больше заданного, мы используем затухание. Реализуем сказанное.
$$\begin{verbatim} class TOscControl : TControlSystem { public TOscControl() : base(2, 1) { U[0] = 0; } public override void SetU() { if (Math.Abs(Y[0]) > 0.2) { U[0] = 1; } else { U[0] = 0; } } public override void F(double t, double[] Y, ref double[] FY) { FY[0] = Y[1]; FY[1] = -Y[0] - U[0] * Y[1]; } } \end{verbatim}$$И проведем вычислительный эксперимент.
$$\begin{verbatim} TOscControl Osc = new TOscControl(); Osc.SetInit(0, new double[2] { 1, 0 }); double h = 0.01; StreamWriter F = File.CreateText("control.txt"); while (Osc.GetCurrent() < 50.0 + h / 2.0) { Console.WriteLine("{0}\t{1}\t{2}\t{3}", Osc.GetCurrent(), Osc.Y[0], Osc.Y[1], Osc.U[0]); F.WriteLine("{0}\t{1}\t{2}\t{3}", Osc.GetCurrent(), Osc.Y[0], Osc.Y[1], Osc.U[0]); Osc.NextStep(h); } F.Close(); \end{verbatim}$$На рисунке 18.1 мы приводим фазовый портрет нашей управляемой системы. Угловые точки на траектории отражают моменты переключения управления. Мы видим, что траектория быстро сходится к искомому предельному циклу. Предельным циклом называется периодическая (замкнутая) траектория в окрестности которой нет других периодических траекторий.
(рис 18.1) Фазовый портрет управляемой системыЗаметим, что хотя наше уравнение маятника является линейным относительно неизвестной функции $$y$$ и управление входит в это уравнение линейно, но зависимость решения от управления является уже нелинейной. Эта ситуация является общей для систем управления.
Другой пример управляемой системы состоит в следующем. Будем рассматривать простейшую систему автопилота самолета. Мы будем управлять курсовым углом самолета. Пусть нам задан нулевой курс. В линейном приближении колебания этого курса описываются системой дифференциальных уравнений:$$y''(t)=-y'(t)+u(t)$$ пусть начальные условия таковы$$y(0)=1,$$ $$y'(0)=0.$$ Предположим, что наше управление может принимать только два значения:$$U=\{-1,1\}\subset\Bbb{R}.$$ Программное управление выберем следующим естественным образом$$u(x,t)=\left\{% \begin{array}{ll} 1, y<0 \\ -1, y>0 \\ \end{array}% \right.$$ Реализуем эту систему
$$\begin{verbatim} class TPilotControl : TControlSystem { public TPilotControl() : base(2, 1) { U[0] = 1; } public override void SetU() { if (Y[0] < 0) { U[0] = 1; } else { U[0] = -1; } } public override void F(double t, double[] Y, ref double[] FY) { FY[0] = Y[1]; FY[1] = -Y[1] + U[0]; } } \end{verbatim}$$И проведем вычислительный эксперимент с нашим управлением.
$$\begin{verbatim} TPilotControl Pilot = new TPilotControl(); Pilot.SetInit(0, new double[2] { 1, 0 }); F = File.CreateText("pilot.txt"); while (Pilot.GetCurrent() < 50.0 + h / 2.0) { Console.WriteLine("{0}\t{1}\t{2}\t{3}", Pilot.GetCurrent(), Pilot.Y[0], Pilot.Y[1], Pilot.U[0]); F.WriteLine("{0}\t{1}\t{2}\t{3}", Pilot.GetCurrent(), Pilot.Y[0], Pilot.Y[1], Pilot.U[0]); Pilot.NextStep(h); } F.Close(); \end{verbatim}$$В результате на рисунке 18.2 мы получим колебания нашего курса. Можно видеть, что довольно быстро амплитуда колебаний нашего курса становится малой, однако в нашей системе возникли характерные автоколебания. Автоколебаниями называются незатухающие периодические колебания. При этом частота этих колебаний определяется свойствами самой нелинейной системы, а не частотой внешнего воздействия. Предельный цикл является одним из примеров автоколебаний.
(рис 18.2) Колебание курса автопилотаКлючевые термины
Множество допустимых управлений - множество, которому принадлежит управление.
Управляемая система - система, описывающаяся дифференциальным и уравнениями, содержащие управление.
Целевой функционал - функционал на решении, с помощью которого определяется оптимальное решение.
Краткие итоги: Рассмотрены методы управления дифференциальными уравнениями с помощью выбора правых частей. Проведены вычислительные эксперименты, позволяющие дать качественную картину некоторых задач управления.
Цель лекции: Показать применение дифференциальных уравнений в задачах управления. Показать эффективность объектно-ориентированного управления в задачах построения управляемых систем.
Многие процессы, описываемые дифференциальными уравнениями, являются управляемыми системами. Дадим формальное описание управляемой системы.
Пусть $$D$$, $$D_\Bbb{T}$$ имеют тот же смысл, что и в прошлой лекции. Пусть теперь еще выделено семейство множеств $$U(x,t)\subset\Bbb{R}^m$$, где $$x\in\Bbb{R}^n$$ и $$t\in[0,\Bbb{T}]$$ являются параметрами. Множество $$U(x,t)$$ называется множеством допустимых управлений.
Пусть теперь задана функция $$f(x,u,t)$$, которая определена при $$x\in\overline{D}$$, $$u\in\bigcup\limits_{x\in\overline{D},t\in[0,\Bbb{T}]}U(x,t)$$, $$t\in[0,\Bbb{T}]$$. Будем рассматривать обыкновенное дифференциальное уравнение с управлением$$\begin{array}{c} y'(t)=f(y(t),u(t),t), \\ \\ u(t)\in U(y(t),t)\ t\in[0,\Bbb{T}].\\ \end{array}$$ и начальным условием$$y(0)=y^0,\ y_0\in D.$$ Решением задачи 18.1-18.2 на $$[0,T]$$ является измеримая функция $$u(t)\in U(y(t),t)$$ и абсолютно непрерывная функция $$y(t)\in \overline{D}$$, $$t\in[0,T]$$, и эти функции удовлетворяют 18.1-18.2.
Мы сформулировали задачу на управления решениями дифференциальных
уравнений в довольно общем виде. Однако, как правило, управление
осуществляется с некоторой целью. Для этого вводится так
называемый целевой функционал. Целевым функционалом
называется любая числовая функция определенная на решении задачи
18.1-18.2. Обозначим этот функционал следующим
образом$$I=I(y,u)\in\Bbb{R}.$$
При наличии целевого функционала мы приходим к задаче оптимального
управления, то есть задаче о нахождении такого решения, которое
доставляет максимум (или минимум) целевому функционалу. На
практике, однако, часто применяется понятие решение задачи
управления, удовлетворительное с точки зрения целевого
функционала. Мы будем говорить, что решение задачи управления ---
Обратимся к моделированию задач управления. Общая схема такова
Следует отметить, что далеко не всегда удовлетворительное с точки зрения целевого функционала решение задачи управления является оптимальным решением. Более того, существует такие задачи управления решениями, для которых не существует оптимального решения.
Реализуем эту схему в виде абстрактного класса, который мы создадим, как наследник класса $$TRungeKutta$$.
$$\begin{verbatim} abstract class TControlSystem : TRungeKutta { public int M; public double[] U; public TControlSystem(int N, int M) : base(N) { this.M = M; U = new double[M]; } abstract public void SetU(); public override void NextStep(double dt) { SetU(); base.NextStep(dt); } } \end{verbatim}$$Рассмотрим модельную систему управления на основе уравнений, описывающих математический маятник. Будем рассматривать следующую управляемую систему дифференциальных уравнений.$$y''(t)+u(t)y'(t)+y(t)=0,$$ с начальными условиями$$y(0)=1,$$ $$y'(0)=0.$$ Здесь управление осуществляет изменением коэффициента затухания. Мы будем рассматривать множество допустимых управлений состоящее всего из двух точек:$$U=\{0,1\}\subset\Bbb{R}.$$ Нулевое значение управления соответствует отсутствию затухания в системе, а равное единице - наличию постоянного затухания. При отсутствии затухания наша система будет совершать гармонические колебания. Предположим, что наша цель состоит в том, чтобы поддерживать гармонические колебания с амплитудой 0.2. Мы будем использовать так называемое программное управление, т.е. будем выбирать наше управление зависящим от текущего положения системы. Будем использовать следующую формулу нашего управления:$$u(y,t)=\left\{% \begin{array}{ll} 0, |y|\le 0.2 \\ 1, |y|>0.2 \\ \end{array}% \right.$$ Таким образом, если положение осциллятора меньше заданного, то мы не используем затухания, а в случае, когда положение осциллятора больше заданного, мы используем затухание. Реализуем сказанное.
$$\begin{verbatim} class TOscControl : TControlSystem { public TOscControl() : base(2, 1) { U[0] = 0; } public override void SetU() { if (Math.Abs(Y[0]) > 0.2) { U[0] = 1; } else { U[0] = 0; } } public override void F(double t, double[] Y, ref double[] FY) { FY[0] = Y[1]; FY[1] = -Y[0] - U[0] * Y[1]; } } \end{verbatim}$$И проведем вычислительный эксперимент.
$$\begin{verbatim} TOscControl Osc = new TOscControl(); Osc.SetInit(0, new double[2] { 1, 0 }); double h = 0.01; StreamWriter F = File.CreateText("control.txt"); while (Osc.GetCurrent() < 50.0 + h / 2.0) { Console.WriteLine("{0}\t{1}\t{2}\t{3}", Osc.GetCurrent(), Osc.Y[0], Osc.Y[1], Osc.U[0]); F.WriteLine("{0}\t{1}\t{2}\t{3}", Osc.GetCurrent(), Osc.Y[0], Osc.Y[1], Osc.U[0]); Osc.NextStep(h); } F.Close(); \end{verbatim}$$На рисунке 18.1 мы приводим фазовый портрет нашей управляемой системы. Угловые точки на траектории отражают моменты переключения управления. Мы видим, что траектория быстро сходится к искомому предельному циклу. Предельным циклом называется периодическая (замкнутая) траектория в окрестности которой нет других периодических траекторий.
(рис 18.1) Фазовый портрет управляемой системыЗаметим, что хотя наше уравнение маятника является линейным относительно неизвестной функции $$y$$ и управление входит в это уравнение линейно, но зависимость решения от управления является уже нелинейной. Эта ситуация является общей для систем управления.
Другой пример управляемой системы состоит в следующем. Будем рассматривать простейшую систему автопилота самолета. Мы будем управлять курсовым углом самолета. Пусть нам задан нулевой курс. В линейном приближении колебания этого курса описываются системой дифференциальных уравнений:$$y''(t)=-y'(t)+u(t)$$ пусть начальные условия таковы$$y(0)=1,$$ $$y'(0)=0.$$ Предположим, что наше управление может принимать только два значения:$$U=\{-1,1\}\subset\Bbb{R}.$$ Программное управление выберем следующим естественным образом$$u(x,t)=\left\{% \begin{array}{ll} 1, y<0 \\ -1, y>0 \\ \end{array}% \right.$$ Реализуем эту систему
$$\begin{verbatim} class TPilotControl : TControlSystem { public TPilotControl() : base(2, 1) { U[0] = 1; } public override void SetU() { if (Y[0] < 0) { U[0] = 1; } else { U[0] = -1; } } public override void F(double t, double[] Y, ref double[] FY) { FY[0] = Y[1]; FY[1] = -Y[1] + U[0]; } } \end{verbatim}$$И проведем вычислительный эксперимент с нашим управлением.
$$\begin{verbatim} TPilotControl Pilot = new TPilotControl(); Pilot.SetInit(0, new double[2] { 1, 0 }); F = File.CreateText("pilot.txt"); while (Pilot.GetCurrent() < 50.0 + h / 2.0) { Console.WriteLine("{0}\t{1}\t{2}\t{3}", Pilot.GetCurrent(), Pilot.Y[0], Pilot.Y[1], Pilot.U[0]); F.WriteLine("{0}\t{1}\t{2}\t{3}", Pilot.GetCurrent(), Pilot.Y[0], Pilot.Y[1], Pilot.U[0]); Pilot.NextStep(h); } F.Close(); \end{verbatim}$$В результате на рисунке 18.2 мы получим колебания нашего курса. Можно видеть, что довольно быстро амплитуда колебаний нашего курса становится малой, однако в нашей системе возникли характерные автоколебания. Автоколебаниями называются незатухающие периодические колебания. При этом частота этих колебаний определяется свойствами самой нелинейной системы, а не частотой внешнего воздействия. Предельный цикл является одним из примеров автоколебаний.
(рис 18.2) Колебание курса автопилотаКлючевые термины
Множество допустимых управлений - множество, которому принадлежит управление.
Управляемая система - система, описывающаяся дифференциальным и уравнениями, содержащие управление.
Целевой функционал - функционал на решении, с помощью которого определяется оптимальное решение.
Краткие итоги: Рассмотрены методы управления дифференциальными уравнениями с помощью выбора правых частей. Проведены вычислительные эксперименты, позволяющие дать качественную картину некоторых задач управления.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.