Задача 3 Метод динамічного програмування Беллмана

 

Короткі теоретичні відомості

У техніці існує клас об’єктів і процесів, керування якими здійснюється на підставі обмеженої кількості рішень, що приймають послідовно у деякі фіксовані моменти часу. Для розв’язування задач оптимізації таких об’єктів американський вчений Р.Беллман запропонував метод, що отримав назву динамічного програмування. Цей термін означає прийняття рішень у часі.

Пояснимо метод динамічного програмування на простому прикладі керування об’єктом, рух якого описується рівнянням (2.1):

причому на керуючий вплив накладені обмеження u(t) Gu, а також задані початкові умови: y(t0) = y0.

Необхідно мінімізувати функціонал:

(3.1)

де - деякий функціонал, що залежить від значення вихідної координати у кінці інтервалу часу Т, тобто значення критерію при останньому кроці на ділянці dt (без урахування попередніх).

Для розв’язування задачі Беллман застосував прийом, що полягає у просуванні від кінця процесу (t =T) до його початку (t=0).

У результаті було отримане рівняння динамічного програмування у безперервній формі, яке у найпростішому випадку для системи першого порядку з однією керуючою дією має вигляд:

(3.2)

де y0, u0 – початкові значення вихідної координати і керування;

S – мінімальне значення функціоналу (3.1), яке залежить від початкових умов.

Для отримання мінімуму рівняння (3.2) необхідно продиференціювати за керуванням u. Тоді умову мінімуму (3.2) можна замінити системою:

(3.3)

де y, u – поточні значення вихідної координати і керування.

З другого рівняння системи (3.3) визначають dS(y)/dy, а потім з першого рівняння знаходять шукану залежність u=f(y).

У випадку, коли система має n вихідних координат і m керувань, рівняння (3.3) матимуть вигляд:

(3.4)

Наведена система рівнянь є найпоширенішою формою запису рівнянь Беллмана. При цьому функція має бути безперервною й диференційованою за yі, а dS/dyі відіграє ту саму роль, що і множник l у задачі на умовний екстремум. Функція j аналогічна рівнянню зв’язку (2.1).

Завдання до задачі

Задача 3.1Розв’язати задачу 2.2 методом динамічного програмування. Вихідні дані у таблиці 2.2.

Розв’язати задачу (приклад 2.2) методом динамічного програмування.

Маємо рівняння об’єкта:

Функціонал:

Тоді система (3.3) має вигляд:

(3.5)

Звідси знаходимо: dS/dy = - 2u/b;

або

Отримали квадратне рівняння відносно u, корені якого є шуканими керуваннями:

Другий корінь відкидаємо як такий, що не відповідає умовам стійкості, й остаточно запишемо:

(3.6)

що співпадає з розв’язком (2.19), (2.20).

З рівнянь (3.5) можна виключити u і тоді визначити функцію S.

Задача 3.2Розв’язати методом динамічного програмування задачу з обмеженням.

Рівняння об’єкта:

де x = f(u) – нелінійна функція з обмеженням (рис. 3.1).

Функціонал, що мінімізується, має вигляд:

Вихідні дані наведені у таблиці 3.1.

 

 

Таблиця 3.1

№ вар. q c a b g
-4

Розв’язати задачу з обмеженням:

де x = f(u) – нелінійна функція з обмеженням (рис. 3.1).

Функціонал, що мінімізується, має вигляд:

У даному випадку:

Тоді рівняння Беллмана матимуть вигляд:

(3.7)

З другого рівняння отримуємо:

З останнього рівняння:

Тоді перше рівняння системи (3.7) матиме вигляд:

Отримали рівняння, аналогічне попередньому прикладу, розв’язок якого має вигляд: , де коефіцієнт k0 той самий, що у виразі (3.6).

Розв’язок рівняння дає константу f(u)=const. З урахуванням обмежень маємо |f(u)| = g.

Отже, закон регулювання (з урахуванням від’ємного зворотного зв’язку) має вигляд:

При цьому d = g/k0.

Висновок

Задачі оптимального керування об’єктами, рівняння яких відомі, простіше розв’язувати методом динамічного програмування Беллмана. Якщо, крім того, накладено додаткові обмеження на координати і керування, такі задачі не можна розв’язати методами класичного варіаційного числення (методами Ейлера, Лагранжа), необхідно застосування сучасних методів, наприклад методу Беллмана.