Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методы оптимальных решений. Учебное пособие-1

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
Предположим, что все условные оптимальные управления и условные оп-
тимальные выигрыши (на всех шагах, начиная от данного и до конца) извест-
ны. Это значит: мы знаем, что надо делать, как управлять на данном шаге и что мы за это получим на «хвосте», в каком бы состоянии ни был процесс к началу шага. Теперь мы можем построить уже не условно оптимальное, а про-
сто оптимальное управление x* и найти не условно оптимальный, а просто оп­тимальный выигрыш W*.
В самом деле, пусть неизвестно, в каком состоянии S0 была управляемая система (объект управления S) в начале первого шага. Тогда мы можем вы­брать оптимальное управление x
на первом шаге. Применив его, мы изменим
i
состояние системы на некоторое новое Si*; в этом состоянии мы подошли ко второму шагу. Тогда нам тоже известно условное оптимальное управление x которое к концу второго шага переводит систему в состояние Si*, и т. п. Что касается оптимального выигрыша W* за всю операцию, то он нам уже изве­стен: ведь именно на основе его максимальности мы выбирали управление на первом шаге.
Таким образом, в процессе оптимизации управления методом динамиче-
ского программирования многошаговый процесс «проходится» дважды: пер­вый раз – от конца к началу, в результате чего находятся условные оптималь­ные управления; второй раз – от начала к концу, когда нам остаётся только «прочитать» уже готовые рекомендации и найти безусловное оптимальное
управление x*, состоящее из оптимальных шаговых управлений x
, x
, …,
x*m.
Первый этап – условной оптимизации – несравненно сложнее и длительнее
второго. Второй этап почти не требует дополнительных вычислений.
6.4. Принцип оптимальности Беллмана
,
В основе общей концепции метода динамического программирования ле-
жит принцип оптимальности Беллмана, названный так по имени его разработ-
чика. Решение задач методами динамического программирования проводится на основе сформулированного Р. Беллманом принципа оптимальности: опти-
мальное поведение обладает тем свойством, что какими бы ни были первон а­чальное состояние системы и первоначальное решение, последующее решение должно определять оптимальное поведение относительно состояния, получен-
ного в результате первоначального решения.
Из этого следует, что планирование каждого шага должно проводиться с учетом общей выгоды, получаемой по завершении всего процесса, что и поз-
воляет оптимизировать конечный результат по выбранному критерию.
71
6.5. Уравнения Беллмана
1
( , )
j
k k k
ki
f x s
ji,
*
1
x
*
n
x
*
0
s
*
k
s
*
k
x
*
1ks
n,1
*
k
s
1,1 n
*
i
x
*
j
x
*
1is
*
1is
*
1is
ji,
**
1
( , )
j
k k k
ki
f x s
j
ik
kkk
sxf ),(
1
0
k
x
n,1
0
k
x
*
k
x
1,1 i
nj,
0
k
x
ji,
1
1
*1*
),(
j
k
kkk
sxf
*
1i
s
n
jk
kkk
sxf
1
*1*
),(
1
**
1
1
( , )
j
k k k
k
f x s
*
1i
s
**
1
1
( , )
n
k k k
kj
f x s

Задачу Pn(s0, S
) можно сформулировать следующим образом: найти
управление, которое с наибольшим эффектом за n шагов переводит объект из состояния s0 в одно из состояний sSn.
Определения и обозначения
Пусть 1 ≤ i ≤ j ≤ n, x(i, j) = (xi, …, xj)T, s
i – 1Si – 1
, Tj Sj.
Обозначим P
F
j – i + 1
Задача P
j – i + 1(si –1
j – i + 1(si – 1
(x(i, j), s
xkXk(s
, Tj) следующую задачу оптимизации:
) =
i – 1
) и sk = k(xk, s
k – 1
→ max при условиях
) для k
k – 1
, sjTj.
, Tj) определяет последовательность управлений для ша-
гов с номерами от i до j, которая с максимальным эффектом переводит систему из состояния s
в одно из состояний, входящих в Tj.
i –1
Теорема 6.1 (оптимальность частей оптимального решения). Пусть x* = (
, …,
) для k
)T –оптимальное решение задачи Pn(s0, Sn). Положим,
, Tn = Sn и Tk = {
} для k
. Если 1 ≤ i ≤ j ≤ n, то вектор x*(i,
= s0,
= k(
,
j) = (
, …,
)T является оптимальным решением задачи P
j – i + 1
(
, Tj).
Доказательство. Предположим, что вектор x*(i, j) не является оптималь- ным решением задачи P
j – I + 1
= (xi, …,xj)T и последовательность состояний s
xkXk(s
) и sk = k(xk, s
k – 1
) для k
k – 1
(
, Tj). Тогда существуют вектор x(i, j) =
, …, sj такие, что s
i – 1
, sjTj,
F
j – i + 1
(x*(i, j), s
i –1
) =
<
= F
j – i + 1
(x(i, j), s
Построим вектор x0 = (
| k
)T следующим образом:
=
для k
,
= xk для k
.
Вектор x0 удовлетворяет условиям теоремы и
Fn(x*, s0) =
+ F
j – i + 1
(
, x*(i, j)) +
<
i –1
i –1
).
=
,
<
что противоречит выбору x*. #
72
+ F
j – i + 1
(
, x(i, j)) +
= Fn(x0, s0),
Задача P
*
1is
ji,
n,1
nk,
nk,
)(*sZ
k
1,1 n
*
1
()
kk
Zs
nk,
)(*sZ
k
)(*sZ
n
= max{Zn(xn, s) | xn  Xn(s), n(xn, s) Sn}.
(6.3)
1,1 n
)(*sZ
k
= max{Zk(xk, s) | xkXk(s)} = max{fk(xk, s) +
*
1
( ( , ))
k k k
Z x s
| xk  Xk(s)}.
(6.4)
1,1 n
nk,
nk ,1
6
j – i + 1
(
, T
) требует найти оптимальное управление для шагов с
j
номерами k ны в соответствии с планом x
при условии, что граничные условия на шагах i и j установле-
. Теорема 6.1 доказывает, что всякий «отрезок»
оптимального управления тоже является оптимальным управлением в соответ-
ствующей задаче ДП.
Определения и обозначения
Для k
Если задача Qk(s) имеет решение, обозначим его x(k, s) = (xj(k, s) | j Это условно оптимальное управление для шагов с номерами i
и s S
положим Qk(s) = P
k – 1
n – k + 1
(s, Sn).
)T.
.
максимум
= F
.
n – k + 1
(x(k, s), s), если задача Qk(s) имеет решение. Это условный
Для k
, s S
и xk Xk(s) положим Zk(xk, s) = fk(xk, s) +
k –1
, где
sk = k(xk, s).
Для s S
и xnXn(s) положим Zn(xn, s) = fn(xn, s).
n –1
Задача Qk(s) находит управление, которое оптимально для шагов с номе- рами i
при условии, что к шагу k система приходит в состоянии s. Zk(xk, s) –
это максимальный эффект, достижимый на шагах k, …, n, если шаг k начинает­ся в состоянии s и на этом шаге применяется управление xk.
– это макси-
мальный эффект, достижимый на шагах k, …, n, если шаг k начинается в состо­янии s.
Теорема 6.2. (Уравнения Беллмана.)
Если задача Qn(s) имеет решение, то
Если k
и задача Qk(s) имеет решение, то
Доказательство. Задача Qn(s) = P1(s, Sn) имеет вид
F1(xn, s) = fn(xn, s) → max при условиях xn  Xn(s), sn = n(xn, s) Sn,
что эквивалентно равенству (6.3).
Пусть k
и задача Qk(s) имеет решение x(k, s) = (xj(k, s) | j
T
)
. По
теореме 6.1 вектор x(k + 1, s) = (xj(k + 1, s) | j
Q
k + 1(k(xk
(k, s), s)). Поэтому
В теории оптимизации термин «условный максимум» имеет другое значение.
)T является решением задачи
73
)(*sZ
k
= fk(xk(k, s), s) +
*
1
( ( ( , ), ))
k k k
Z x k s s
*
1
( ( , ))
k k k
Z x s
*
1
( ( , ))
k k k
Z x s
)(*sZ
k
)(*sZ
k
)(*sZ
k
*
1()k
Zs
)(*sZ
k
)(*sZ
k
*
1()k
Zs
)(
*
1sZk
= max{f
k –1(xk –1
, s) +
*
11
( ( , ))
k k k
Z x s

| x
k –1
X
k –1
(s)}.
(6.5)
*
11
( ( , ))
k k k
Z x s

*
1()k
Zs
)(*sZ
k
n,2
≤
≤ max{fk(xk, s) +
| xkXk(s)} = max{Zk(xk, s) | xk Xk(s)}.
С другой стороны, Zk(xk, s) = fk(xk, s) + xk  Xk(s), следовательно, max{Zk(xk, s) | xk Xk(s)} ≤
≤
для всех
. Отсюда получаем
(6.4). #
Функции
называют функциями Беллмана, а связывающие их функци-
ональные уравнения (6.3), (6.4) – уравнениями Беллмана. Уравнение Беллмана для k < n использует функцию
для вычисления функции
. Такие
уравнения называют рекуррентными.
Уравнение (6.3) формализует следующее интуитивно ясное соображение. Если к последнему шагу система пришла в состоянии s, то эффекты предыду-
щих шагов уже определены, поэтому задача максимизации суммарного эффек-
та сводится к поиску допустимого на шаге n управления, которое с максималь-
ным эффектом переводит систему в одно из терминальных состояний. Другими
словами, формула (6.3) при фиксированном s описывает задачу оптимизации по одной скалярной переменной xn при ограничениях xn  Xn(s) и n(xn, s) Sn. Сложность этой задачи определяется свойствами функций fn(xn, s), n(xn, s) и множеств Xn(s), S всех s S
n – 1
.
. Сложность увеличивается тем, что задачу нужно решить для
Формула (6.4) утверждает, что оптимальное управление для шага k < n не должно (в отличие от управления для шага n) максимизировать эффект, полу-
ченный на текущем шаге. Это управление следует выбрать так, чтобы максими­зировать сумму эффекта, полученного на шаге k, и наилучшего суммарного ре-
зультата, который можно получить на шагах с номерами от k + 1 до n из того состояния, в котором система закончит шаг k.
Если k > 1 и удалось вычислить функцию нение (6.4) позволяет построить функцию тельно, в (6.4) заменим k –1 на k и подставим выражение для Z
для всех s S
для всех s S
k – 1(xk – 1
, то урав-
k – 1
. Действи-
k – 2
, s):
Если s S
значения
для каждого s S
переменной x
k –2
и x
k –1
X
k –1
определены для всех x
является задачей оптимизации по одной скалярной
k – 2
при ограничении x
k –1
(s), то
k – 1
k –1(xk –1
X
k – 1
, s) S
k –1
(s).
по теореме 6.1. Поэтому
k –1
X
(s). Тогда вычисление
k –1
Вычисление
для каждого k
– это одномерная задача парамет-
рической оптимизации, так как нужно найти максимум Zk(xk, s) по xk при всех
74
значениях параметра s из множества S
)(
*
1
sZ
= max{f1(x1, s) +
)),((
11*2
sxZ
| x1  X1(s)}.
(6.6)
)(
*
1
sZ
n,1
)(*sx
k
)(*sZ
n
)(*sx
n
1,2 n
)(*sZ
k
)(*sx
k
)),((
011*2
sxZ
)(
0*1
sZ
*
1
x
)(
0*1
sx
*
0
s
n,2
*
k
x
**
1
()
kk
xs
*
k
s
*
k
x
*
1ks
n,1
)(*sZ
k
)(*sZ
n
)(*sZ
n
. Формулы (6.3) и (6.4), в принципе,
k – 1
позволяют последовательно решать эти задачи для значений k от n до 2.
При k = 1 формула (6.5) принимает вид
Функцию
нужно найти для всех s S0 = {s
}, поэтому здесь оптими-
зация не параметрическая: достаточно решить задачу оптимизации при s = s0.
Обозначение. Для k по xk на множестве Xk(s), точку максимума обозначим
и s S
, если функция Zk(xk, s) имеет максимум
k – 1
.
6.6. Метод динамического программирования
Теперь мы можем сформулировать вычислительную схему метода дина-
мического программирования.
1. Решая задачу параметрической оптимизации (6.3), находим значения
функций
и
для всех s S
n – 1
.
2. Рекуррентно (последовательно) решаем задачи параметрической опти-
мизации (6.5) для k
для всех s S
k – 1
.
3. Решаем задачу Z1(x1, s0) = f1(x1, s0) +
x1  X1(s
). Находим
. При каждом k находим значения функций
→ max при условии
и
=
. Положим
= s0.
и
4. Для k
последовательно находим
=
и
= k(
,
).
Первый этап метода ДП (п. 1 и 2) часто называют условной оптимизацией, а второй (п. 3 и 4) – безусловной оптимизацией. Заметим, что такое словоупо-
требление специфично для динамического программирования, в теории опти­мизации эти термины имеют другие значения. Более удачные названия для ука-
занных этапов метода ДП ― обратный ход и прямой ход.
Следствие 6.1. Пусть k
то
равно оптимальному значению ЦФ в задаче Qk(s).
, s S
. Если значение найдено методом ДП,
k – 1
Доказательство. Проведем индукцию по k, начиная с k = n.
Из определения Zn(xn, s) и описания метода ДП (п. 1) следует, что
= max{fn(xn, s) | xn  Xn(s), n(xn, s) Sn}.
Задача Qk(s) по определению имеет вид
fn(xn, s) → max при условиях xn  Xn(s), n(xn, s) Sn.
Очевидно, что
– оптимальное значение ЦФ в задаче Qk(s).
75
При k < n предположим, что утверждение верно для k + 1. Тогда для любо-
1
1
( , )
n
i i i
ik
f x s

)(
*
1sZk
nk ,1
)(*sZ
k
*
1
( ( , ))
k k k
Z x s
nk,
1
( , )
n
i i i
ik
f x s
1
1
( , )
n
i i i
ik
f x s

*
1
( ( , ))
k k k
Z x s
)(*sZ
k
)(
0*1
sZ
*
1
s
*
n
s
*
1
x
*
n
x
Fn(x, s0) =
1
1
( , )
n
k k k
k
f x s
→ max при условиях
x = (x1, …, xn)T  Rn, xk  Xk(s
k – 1
) и sk = k(xk, s
k –1
) для k
n,1
, sn  Sn
)(
0*1
sZ
Fn(x, s0) =
1
1
( , )
n
k k k
k
f x s
→ max при условиях
x = (x1, …, xn)T  Rn, xk  Xk(sk
– 1
) и sk = k(xk, s
k – 1
) для k
n,1
, sn  Sn ,
*
1
x
)(
0*1
sZ
го s Sk и любого допустимого решения x = (x
, …, xn)T задачи Q
k +1
(s) спра-
k + 1
ведливо неравенство
F
где sk = s, si = i(xi, s
) для I
i – 1
n – k
(x, s) =
. По построению (п. 2 и 3 описания метода
≤
,
ДП)
= max{fk(xk, s) +
| xk  Xk(s)}
для любого s Sk. Пусть x = (xk, …, xn)T – допустимое решение задачи Qk(s), si = i(xi, s дачи Q
k + 1(sk
) для I
i –1
). Поэтому
, s
= s. Тогда (x
k –1
, …, xn)T – допустимое решение за-
k + 1
F
n – k + 1
(x, s) =
= fk(xk, s) +
≤ fk(xk, s) +
≤
.
Это завершает шаг индукции, так как F
n – k + 1
(x, s) – это целевая функция
задачи Qk(s). #
Теорема 6.3 (корректность метода ДП).
Метод динамического программирования определяет значение последовательность s* = (s0,
, …,
) и вектор x* = (
, …,
T
)
, если и только
R,
если задача
разрешима. В этом случае оптимальное значение ЦФ в этой задаче равно
, вектор x* является оптимальным управлением, а последовательность s*
указывает оптимальную траекторию в пространстве состояний.
Доказательство
1. Пусть задача
2.
она же – задача Pn(s0, Sn) – имеет решение.
По определению Pn(s0, Sn) = Q1(s0), следовательно, задача Q1(s шение
. Оптимальное значение ЦФ этой задачи мы обозначили
76
) имеет ре-
. Из
)(*sZ
k
= max{Zk(xk, s) | xk  Xk(s)} = max{fk(xk, s) +
*
1
( ( , ))
k k k
Z x s
*
1
s
*
1
x
)(
*1*
2
sZ
*
1
s
* 2
x
)(
0*1
sZ
)(
0*1
sZ
)(
0*1
sZ
| xk  Xk(s)} при
k = 1 следует, что при
что задача Q2(
) имеет решение
= 1(
, s
) определено значение
, а это значит,
. Продолжая рассуждение, построим вектор
x* и последовательность s*.
2. Допустим, что метод ДП определил значение
R. Тогда, в соот-
ветствии с п. 3 и 4 описанной выше процедуры, можно найти вектор x* и после­довательность s*. Они по построению удовлетворяют всем ограничениям зада­чи. При k = 1 и s = s0 заключаем, что
равно оптимальному значению ЦФ в
задаче Q1(s0), которая совпадает с задачей.
3. Если задача Q1(s0) разрешима, то Fn(x*, s0) =
ние целевой функции в задаче достигается при x = x x* соответствует последовательность состояний s
, определенная в соответствии
. Оптимальному решению
, оптимальное значе-
с п. 3 и 4 описания метода ДП. #
На наглядном примере рассмотрим применение метода динамического программирования. Необходимо найти кратчайший путь из пункта A в пункт N. Графическая иллюстрация этой идеи представлена на рис. 6.2.
Рис. 6.2. Иллюстрация идеи динамического программирования
Как следует из рис. 6.2, полный перебор всех возможных вариантов ре­шения задачи в целях поиска оптимального пути весьма трудоемок даже для
данной простейшей сетевой модели. В то же время задача решается достаточ-
но элементарно с использованием принципа Беллмана.
На первом шаге определяются оптимальные расстояния от пунктов H, L и M до пункта N (они равны, соответственно, отрезкам HN, LN и MN) и осу­ществляется переход ко второму шагу расчетов.
На втором шаге последовательно определяются оптимальные расстояния:
1) от пункта E до пункта N: opt Е = min{(EH + HN); (EL + LN); (EM+
MN)};
77
2) от пункта F до пункта N: opt F = min{(FH + HN); (FL + LN);(FM +
MN)};
3) от пункта G до пункта N: opt G = min{(GH + HN); (GL + LN); (GM +
MN)}.
На третьем шаге рассчитываются оптимальные расстояния:
1) от пункта B до пункта N: opt B = min{(BE + opt E); (BF+ opt F); (BG +
opt G)};
2) от пункта C до пункта N: opt C = min{(CE + opt E); (CF+ opt F); (CG +
opt G)};
3) от пункта D до пункта N: opt D = min{(DE + opt E); (DF + opt F); (DG +
opt G)}.
На последнем, четвертом шаге осуществляется расчет оптимального пути
от пункта A до пункта N:
opt A = {(AB + opt B); (AC + opt C); (AD + opt D)}.
Таким образом, использование принципа оптимальности динамического программирования позволило заменить вычисление оптимума по множеству переменных в исходной постановке решением простейших задач, в каждой из
которых оптимум находится лишь по одной переменной (как операция опре­деления минимального числа из множества чисел).
Вместе с тем, ДП свойственны и недостатки. Прежде всего, в нем нет
единого универсального метода решения. Практически каждая задача, решае­мая этим методом, характеризуется своими особенностями и требует проведе­ния поиска наиболее приемлемой совокупности методов для ее решения. Кро­ме того, большие объемы и трудоемкость решения многошаговых задач, име­ющих множество состояний, приводят к необходимости отбора задач малой
размерности, либо использования сжатой информации.
Последнее достигается с помощью методов анализа вариантов и перера­ботки списка состояний. Ниже мы рассмотрим основные типы прикладных за­дач динамического программирования, содержание которых требует выбора
переменных состояния и управления.
6.7. Модели динамического программирования
6.7.1. Задача оптимального распределения ресурсов
Метод динамического программирования наиболее эффективен для ре-
шения нелинейных задач. К такому типу относится задача оптимального рас-
пределения ресурсов между экономическими объектами.
Пусть имеется какая-то инстанция, располагающая ограниченным объе-
мом некоторого ресурса X единиц. Существуют K объектов, претендующих на
78
этот ресурс. Необходимо так распределить располагаемый системой объем ре-
)(kkxf
k
x
0 1 2
…
X
)(11xf )0(1f )1(1f )2(1f
…
)(1Xf
)(22xf )0(2f )1(2f )2(2f
…
)(2Xf
… … … … …
…
)(kkxf )0(kf )1(kf )2(kf
…
)(Xf
k
)(...)()(
2211 kk
xfxfxf
Xxxx
k
...
21
Xxk0
)(XF
k
)(...)()(max)(
2211 kkk
xfxfxfxF
Xxxx
k
...
21
Xxk0
Kk ,1
)(kx
)(
k
xX
)(
1 kk
xXF
)()()(
1 kkkkk
xXFxfXF
k
x
)()(max)(
1 kkkkk
xXFxfXF
,
Xxk0
.
(6.7)
сурса, чтобы получить максимальную суммарную прибыль.
Для этого должны быть известны целевые функции, обозначим их fk(xk),
kє{1, …, K}, где xk – объем ресурса, выделяемый k-му объекту.
Исходные данные для целевых функций представим в табл. 6.1.
Т а б л и ц а 6.1. Функции эффективности
Суммарный доход в этом случае можно рассчитать по следующей форму-
ле:
при
,
, k{1, …, K}.
Оптимальный суммарный доход
от распределения X ресурсов
между K объектами вычислим по формуле
при
,
,
.
Заметим, что оптимизация такого функционала представляет значитель­ные вычислительные трудности, так как предполагает полный перебор огром-
ного числа вариантов.
Пусть в распоряжении k-го объекта находится
величину
распределим между остальными объектами, но не произ-
ресурс. Оставшуюся
вольно, а оптимальным образом, т. е. с получением максимального дохода
. Тогда общий доход может быть рассчитан следующим образом:
.
Однако этот доход является условно оптимальным, так как с изменением
величины
он тоже изменяется. Формула безусловного оптимального дохода
имеет вид
79
В последней формуле известны все величины
)(kkxf
k
x
 
Xx
kk
k
xXF
0
1
)(
)()(max)(
12111
kkkkk
xXFxfxF
Xxk10
)(2xF
k
)()(max)(
21222
xXFxfxF
Xx 20
t
x
t
x
),...,1( nk
k
t
k
t
ktk
t
k
t
aP
k
t
ktk
t
k
t
bz
n
k
k
tt
zx
1
1
tk
k
t
PP
,
t
P
n
k
k
tt
PP
1
n
k
kk
x
axf
n
k
k
k
1
000
0
0
1
0
max)(
)(),...,(),()(
0
2
0
1
00
xxxx
n
)),((),(max)(
001000
)(
0
00
uxQfuxhxf
N
xUu
N
n
k
kk
x
t
xfaxf
n
r
k
k
1
110001
)(max)(
0
0
1
00
)(),...,(),()(
0102101101
xxxx
n
tttt
)(),...,(),()(
00
2
0
1
0
xxxx
n
TTTT
)(0xf
T
для всех значений
(последняя строка таблицы функций эффективности), однако неизвестны ве-
личины
.
Определим эти величины по той же самой рекуррентной формуле (6.7):
,
.
Затем определяем
и т. д.
Таким образом, дойдём до последней формулы, определив
,
.
6.7.2. Задача о распределении денежных ресурсов
Пусть на предприятии имеется n видов оборудования. Объём инвестиций в оборудование в расчёте на год t равен
, так что величина
направляется на приобретение оборудования
. Сумма
делится на n слагаемых
k-го вида. Эффективность вложений в оборудование k-го вида оценивается ве- личиной годовой прибыли
. По итогам года за счёт оборудования k-го
вида, приобретённого в начале года на сумму
ный фонд в объёме
, так что
, формируется инвестицион-
. Задан период планирования
[0, T]. Нужно найти такое распределение инвестиций в каждом году периода, чтобы максимизировать суммарную прибыль за период
Решение. Обозначим через
. Рассмотрим функцию
шением будет вектор
прибыль, полученную в году t, так что
. Пусть оптимальным ре-
.
Через рекуррентное соотношение
следовательно вычисляем функции
.
по-
.
Пусть оптимальным решением будет вектор
. Тогда оптимальной T-шаговой стратегией будет чению прибыли за период.
80
, а
будет равно максимальному зна-
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]