2.3. Применение цвм для определения алгоритма оптимального управления методом динамического программирования
Мы уже отметили, что аналитическое решение уравнений Беллмана удается найти лишь в сравнительно несложных случаях. Основное же назначение метода динамического программирования состоит в том, чтобы он позволил строить вычислительные алгоритмы для решения задач на ЦВМ. Для этого задача формируется с помощью разностных уравнений.
Любую систему обыкновенных дифференциальных уравнений в принципе можно заменить системой уравнений в конечных разностях.
Пусть объект управления описывается дифференциальным уравнением в векторной форме:
(2.17)
Зададим функционал:
, (2.18)
где Т – фиксированная величина.
Разобъем Т на N интервалов с шагом дискретности t, т.е. Т = Nt.
Осуществляем дискретизацию непрерывного процесса x(t)=x(nT).
Дифференциальное уравнение (2.17) заменим уравнением в конечных разностях:
или:
, (2.19)
где .
Функционал (2.18) также приближенно заменим суммой:
. (2.20)
Уравнения (2.19) и (2.20) записаны в векторной форме. Для простоты изложения метода динамического программирования с целью построения вычислительного алгоритма рассмотрим x и U как скалярные функции и примем значение t равным единице. Тогда математическая постановка задачи управления запишется в следующем виде:
(2.21)
разностные уравнения, которые описывают поведение объекта управления и критерий оптимальности
. (2.22)
Начальное состояние системы задано условием x(0) = x0.
Требуется найти управление, удовлетворяющее ограничению и доставляющее минимум сумме (2.22).
Решение задачи начинается с конца траектории управления, т.е. с последующего интервала , считая состояние x(N-1) известным. Значение IN-1 на этом интервале равно:
Учитывая соотношение (2.21) выразим x(N) через x(N-1) и U(N-1).
Тогда
. (2.23)
получаем функцию (2.23) одной переменной U(N-1).
С помощью известных правил можно найти оптимальное значение U*(N-1), которое доставляет минимум IN-1. Обозначим минимальное значение IN-1 через SN-1.
Запоминаем значения SN-1 и U*(N-1).
Далее рассмотрим интервал [N-2,N], состоящий из двух интервалов: последнего и предпоследнего. Для него
.
В соответствии с принципом оптимальности состояния x(N-2) полностью определяет оптимальное управление на данном интервале.
Тогда
.
полученное функциональное уравнение содержит также одну только переменную U(N-2). Из него находим оптимальное значение
U*(N-2). Запоминаем значения U*(N-2) и SN-2.
Аналогично, продолжая «попятное» движение, можно получить общую рекуррентную формулу:
(2.24)
В результате минимизации по переменной U (N-k) находим оптимальное значение U*(N-k). Причем значения x(N-k), x(N-k+1),…,
x(N-2) считаются условно известными. Эти значения определяются в процессе вычислений.
Поступаем следующим образом. Так как в последнем соотношении x(0) задано, находим U*(0) и по формуле:
вычисляем x*(1) и затем по формуле (12) находим U*(1) и так далее до x*(k), U*(k).
В случае, когда `x(k) и`U(k) – векторы, то вид рекуррентной формулы (2.24) сохраняется, только в ней x, U, f – векторы и минимум SN-K ищется по m-скалярным аргументам U1(N-k),…,Um(N-k).
Пример 2.3. Минимизация времени переправы лодки через реку.
Математическое описание процесса переправы лодки через реку.
Введем обозначения:
Vл – скорость лодки в стоячей воде; Vт – скорость течения воды; x – ось направления к противоположному берегу; y – ось направления по течению; φ – угол между вектором и осью x; скорость лодки по оси x.
Изобразим на рисунке 2.3 прямоугольную систему координат x0y с началом в точках старта лодки.
Рис. 2.3. Схема движения лодки.
Для простоты описания задачи примем:
Vл=1; Vт=0,1;
начальное состояние лодки;
конечное состояние лодки.
Задачи минимизации процесса переправы лодки имеет следующее математическое описание (в соответствии с рис. 2.3).
Тогда
и .
Управление и преобразуем исходную задачу.
Проведем подстановки и упрощения, с учетом, что :
, .
Тогда, исключив время
,
получаем
.
Критерием оптимальности является
I = T → min (2.25)
и функционал имеет вид:
.
Из начальных состояний лодки
0 ≤ x ≤ 4, y(0) = y(4) = 0,
и значений скоростей:
, при Vл=1 и Vт=0,1
(2.26)
Тогда получаем:
и
.
Введем дискретизацию по x с шагом ∆x = 1:
; (2.27)
;
где ; ; .
Подготовим задачу для использования метода динамического программирования. Для этого построим элементарную операцию, которая бы позволяла найти управление Ui для перевода лодки из точки yi в точку yi+1.
Преобразуем исходное разностное уравнение (2.27):
и решим его относительно Ui:
.
На основе простых рассуждений можно убедиться, что исходному разностному уравнению удовлетворяет
.
Последнее выражение и является основным для нахождения оптимального варианта движения лодки.
Примем шаг дискретности по переменной y равным ∆y = 1. Тогда множество допустимых значений переменной yi при каждом фиксированном i составят числа -1, 0, 1.
Метод динамического программирования заключается в том, что на каждом шаге, начиная с последнего, вычисляют условное оптимальное управление Ui* (yi) и условное минимальное значение Si(yi).
Для простоты имеется по оси x рассмотрим четыре шага, так как конечное состояние лодки принято (рис.2.4).
Рис. 2.4. Граф движения лодки.
Начнем с предпоследнего шага, т.е. с третьего. Алгоритм расчета будет следующим. Для каждого допустимого значения y3 вычисляют:
разность ∆y3 = y4 - y3 = -y3;
управление ;
функционал .
На этом шаге отсутствует процесс минимизации, т.к. управление U3(y3) однозначно определяется из граничного условия y4 = 0, т.е. для каждой точки y3 существует только одна траектория, приводящая лодку в точку y4 = 0 (рис. 2.4).
Результаты расчета на третьем шаге сведены в таблицу 2.1.
Таблица 2.1.
Третий шаг
y4 |
0 |
||
y3 |
-1 |
0 |
1 |
∆y3 |
1 |
0 |
-1 |
U3 |
-0,755 |
-0,1 |
0,655 |
S3 |
1,526 |
1,005 |
1,324 |
S3 |
|
1,005 |
|
U3* |
|
-0,1 |
|
Из результатов (табл. 2.1) видим, что условное минимальное значение функционала и оптимальное управление .
На втором шаге алгоритм расчета несколько отличается. Здесь уже производят вычисления для каждого допустимого значения y2 и всех допустимых значений y3:
разности ∆y2 = y3 – y2;
управления ;
приращения функционала на втором шаге;
функционал ;
минимум ;
условное оптимальное управление U2*(y2) путем перебора.
На первом и нулевом шагах алгоритм расчета такой же, как и на втором. Результаты расчета на втором шаге сведены в таблицу 2.2, на первом шаге в таблицу 2.3 и на начальном шаге в таблицу 2.4.
Таблица 2.2.
Второй шаг.
y2 |
-1 |
0 |
1 |
||||||
y3 |
-1 |
0 |
1 |
-1 |
0 * |
1 |
-1 |
0 |
1 |
∆y2 |
0 |
1 |
2 |
-1 |
0 |
1 |
-2 |
-1 |
0 |
U2 |
-0,1 |
0,655 |
0,874 |
-0,75 |
-0,1 |
0,655 |
-0,91 |
-0,75 |
-0,1 |
∆I2 |
1,005 |
1,324 |
2,054 |
1,526 |
1,005 |
1,324 |
2,458 |
1,526 |
1,005 |
I2 |
2,01 |
2,329 |
3,059 |
2,531 |
2,01 |
2,329 |
3,463 |
2,531 |
2,01 |
S2 |
2,01 |
|
|
|
2,01 |
|
|
|
2,01 |
U2* |
-0,1 |
|
|
|
-0,1 |
|
|
|
-0,1 |
Таблица 2.3.
Первый шаг.
y1 |
-1 |
0 |
1 |
||||||
y2 |
-1 |
0 |
1 |
-1 |
0 * |
1 |
-1 |
0 |
1 |
∆y1 |
0 |
1 |
2 |
-1 |
0 |
1 |
-2 |
-1 |
0 |
U1 |
-0,1 |
0,655 |
0,874 |
-0,75 |
-0,1 |
0,655 |
-0,91 |
-0,75 |
-0,1 |
∆I1 |
1,005 |
1,324 |
2,054 |
1,526 |
1,005 |
1,324 |
2,458 |
1,526 |
1,005 |
I1 |
3,015 |
3,334 |
4,064 |
3,536 |
3,015 |
3,334 |
4,468 |
3,536 |
3,015 |
S1 |
3,015 |
|
|
|
3,015 |
|
|
|
3,015 |
U1* |
-0,1 |
|
|
|
-0,1 |
|
|
|
-0,1 |
Таблица 2.4.
Начальный шаг.
y0 |
0 |
||
y1 |
-1 |
0 * |
1 |
∆y0 |
-1 |
0 |
1 |
U0 |
-0,755 |
-0,1 |
0,655 |
∆I0 |
1,526 |
1,005 |
1,324 |
I0 |
4,541 |
4,02 |
4,339 |
S0 |
|
4,02 |
|
U0* |
|
-0,1 |
|
Из таблицы 2.4 видно, что в начальный момент при y0 = 0 и x0=0 оптимальное управления будет U0*= -0,1 и y1*= 0. Далее находим из таблицы 2.3 при y1*= 0 значения оптимального управления U1*= -0,1 и y2*=0, из таблицы 2.2 при y2*=0 оптимальное управление будет
U2*=-0,1 и y3*=0 и из таблицы 2.1 имеем: U3*= -0,1 и y4*=0.
2. Метод динамического программирования 29
2.1. Геометрическая интерпретация метода динамического программирования 30
2.2. Уравнение Беллмана для непрерывных систем 31
2.3. Применение ЦВМ для определения алгоритма оптимального управления методом динамического программирования 35