Выполнение для задачи динамического программирования первого условия позволяет сформулировать для нее принцип оптимальности Беллмана. Прежде чем сделать это, надо дать определение оптимальной стратегии управления. Под такой стратегией понимается совокупность управлений U*=(u1*, u2*, …, un*), в результате реализации которых система S за n шагов переходит из начального состояния X(0) в конечное X(k) и при этом функция (1.3) принимает наибольшее значение.
Принцип оптимальности: какое бы не было состояние системы перед очередным шагом, надо выбрать управление на этом шаге так, чтобы выигрыш на данном шаге плюс оптимальный выигрыш на всех последующих шагах был максимальным.
Отсюда следует, что оптимальную стратегию управления можно получить, если сначала найти оптимальную стратегию управления на n-м шаге, затем на двух последних шагах, затем на трех последних шагах и т.д., вплоть до первого шага. Таким образом, решение рассматриваемой задачи динамического программирования целесообразно начинать с определения оптимального решения на последнем, n-м шаге. Для того чтобы найти это решение, очевидно, нужно сделать различные предположения о том, как мог окончиться предпоследний шаг, и с учетом этого выбрать управление un0, обеспечивающее максимальное значение функции Wn(X(n-1), un). Такое управление un0 выбранное при определенных предположениях о том, как окончился предыдущий шаг, называется условно оптимальным управлением. Следовательно, принцип оптимальности требует находить на каждом шаге условно оптимальное управление для любого из возможных исходов предшествующего шага.
Чтобы это можно было осуществить практически, необходимо дать математическую формулировку принципа оптимальности. Для этого введем некоторые дополнительные обозначения. Обозначим через Fn(X0) максимальный доход, получаемый за n шагов при переходе системы S из начального состояния X(0) в конечное состояние X(k) при реализации оптимальной стратегии управления U=(u1, u2, …, un), а через Fn-k(X(k)) –максимальный доход, получаемый при переходе из любого состояния X(k) в конечное состояние X(n) при оптимальной стратегии управления на оставшихся n-k шагах. Тогда:
|
; (1.4)
(). (1.5)
Последнее выражение представляет собой математическую запись принципа оптимальности и носит название основного функционального уравнения Беллмана или рекуррентного соотношения. Используя данное уравнение можно найти решение задачи динамического программирования.
Полагая k=n-1 в рекуррентном соотношении (1.5), получим следующее функциональное уравнение:
(1.6)
В этом уравнении F0(X(n)) будем считать известным. Используя теперь уравнение (1.6) и рассматривая всевозможные допустимые состояния системы S на (n-1)-м шаге X1(n-1), X2(n-1), …, Xm(n-1), …, находим условные оптимальные решения
и соответствующие значения функции (1.6)
Таким образом, на n-м шаге находим условно оптимальное управление при любом допустимом состоянии системы S после (n-1)-го шага. То есть, в каком бы состоянии система ни оказалась после (n-1)-го шага, будет известно, какое следует принять решение на n-м шаге. Известно также и соответствующее значение функции (1.6). Рассмотрим функциональное уравнение при k=n-2:
(1.7)
Для того чтобы найти значения F2 для всех допустимых значений X(n-2), необходимо знать Wn-1(X(n-2), un-1) и F1(X(n-1)). Что касается значений F1(X(n-1)), то они уже определены. Поэтому нужно произвести вычисления для Wn-1(X(n-2), un-1) при некотором отборе допустимых значений X(n-2) и соответствующих управлений un-1. Эти вычисления позволят определить условно оптимальное управление u0n-1 для каждого X(n-2). Каждое из таких управлений совместно с уже выбранным управлением на последнем шаге обеспечивает максимальное значение дохода на двух последних шагах.
|
Последовательно осуществляя описанный выше итерационный процесс, дойдем до первого шага. На этом шаге известно, в каком состоянии может находиться система. Поэтому уже не требуется делать предположений о допустимых состояниях системы, а остается лишь только выбрать управление, которое является наилучшим с учетом условно оптимальных управлений, уже принятых на всех последующих шагах.
Таким образом, в результате последовательного прохождения всех этапов от конца к началу определяется максимальное значение выигрыша за n шагов и для каждого из них находим условно оптимальное управление.
Чтобы найти оптимальную стратегию управления, то есть определить искомое решение задачи, нужно теперь пройти всю последовательность шагов, только на этот раз от начала к концу. А именно: на первом шаге в качестве оптимального управления u1* возьмем найденное условно оптимальное управление u10. На втором шаге найдем состояние X1*, в которое переводит систему управление u1*. Это состояние определяет найденное условно оптимальное u20 , которое теперь считается оптимальным. Зная u2*, находим X2*, а значит, определяем u3* и т.д. В результате этого найдется решение задачи, то есть максимально возможный доход и оптимальную стратегию управления U*, включающую оптимальные управления на отдельных шагах: U*= (u1*, u2*,…, un*).
|