Методы оптимизации и исследование операций для бакалавров информатики. Часть 2
.pdf200 Глава 12. Многомерная оптимизация с ограничениями
Так как f и gi выпуклы, то выпуклы и g˜i, преобразованная задача есть задача с линейной целевой функцией и выпуклыми ограничениями. Легко видеть, что новая задача эквивалентна исходной.
Теория
Пусть имеется задача минимизации л и н е й н о й
метода
целевой функции при выпуклых нелинейных ограни-
чениях (если задача преобразовывалась, то рассматривается уже преобразованная задача, нумерация переменных и ограничений новая, знаки тильды опущены):
L(→− ) = |
→− →− |
→ |
min, |
|
|
|
||
X |
|
|
c T X |
|
|
|
|
|
gi(→− |
|
0, i = 1, . . . , m, |
(12.33) |
|||||
X ) |
|
|
|
|
||||
→− |
0. |
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||
Метод Кэлли является методом первого порядка, так как пред- |
||||||||
|
|
|
|
|
|
→− g |
(→− |
|
полагает знание градиентов ограничивающих функций i |
X ) |
. |
||||||
|
По концепции он близок методу Гомори в целочисленном программировании [9, гл. 7], также основанному на отсечениях.
Метод предполагает сведение нелинейной задачи к последовательности задач линейного программирования. Поскольку целевая функция в задаче (12.33) уже линейна, осталось линеаризовать ограничения. Это предлагается сделать следующим образом.
X (0) |
— некоторая начальная точка. Для каждой нели- |
|||||||||||
Пусть →− |
||||||||||||
|
X ) |
построим линеаризованную функцию |
||||||||||
нейной функции gi(→− |
|
|||||||||||
G(0) |
(→− ) = |
g |
|
(→− |
) + →− |
T g |
(→− |
)(→− →− |
) |
, |
||
X |
|
X (0) |
|
X (0) |
X |
− |
X (0) |
|
||||
i |
|
|
i |
|
i |
|
|
|
|
|
которая действительно является линейной функцией векторного |
|||||||||||||||||||||||||||||||||||||||||
аргумента |
→− |
, в чем легко убедиться, раскрыв скобки: |
|
|
|
||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
G(0) |
(→− ) = |
g |
|
(→− |
|
|
+ |
→− |
T g |
|
(→− |
|
|
)(→− →− |
|
|
) = |
|
|
|
|
|
|
||||||||||||||||||
|
X |
|
|
i |
X (0)) |
|
|
i |
X |
(0) |
|
X |
− |
X (0) |
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
→− |
|
|
g |
i |
(→− ) |
→− |
i |
(→− ) |
|
|
→− |
|
|
i |
(→− |
|
)→− |
|
|
|
= ( |
→− i |
) |
|
→− |
i |
|
|||||||||||||
|
|
T |
|
|
|
|
(0) |
|
|
|
|
(0) |
− |
T |
|
|
(0) |
|
|
(0) |
|
|
T |
|
|
||||||||||||||||
= |
|
|
|
|
|
|
X |
|
|
|
|
|
X +g |
|
|
X |
|
|
|
|
|
|
|
g X |
|
|
X |
|
|
|
|
a |
|
|
X +b |
|
. |
||||
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
(→− |
) |
T |
|
|
|
|
|
|
|
|
|
bi |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
a |
(0) |
|
|
|
|
|
|
|
|
|
|
|
|
(0) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12.6.. Метод секущих плоскостей |
|
|
|
|
|
|
|
|
201 |
|
|||
|
G |
(0) |
(→− ) = ( |
|
(0) |
) |
T |
→− |
|
(0) |
0 |
|
|
Тогда одно неравенство |
|
i |
X |
→− i |
|
|
X |
+ b |
i |
опреде- |
|||
|
|
|
a |
|
|
|
|
|
|
|
лит полупространство, а совокупность m неравенств в сочетании с ограничениями на неотрицательность задаст выпуклое многогранное множество M (0).
Легко убедиться, что оно включает в себя множество планов исходной задачи (12.33), которое мы обозначим через D. Действи-
тельно, по свойству 6 выпуклых функций (с. 31) |
|
|
|
|
(→− ) |
|
|
||||||||||||||||||||||||||||||||||
|
|
|
|
|
→− |
|
|
g (→− |
|
|
) + |
→− |
|
|
|
(→− |
|
)(→− →− |
|
) = |
G(0) |
|
|
||||||||||||||||||
|
|
|
g |
(X ) |
i |
X (0) |
|
|
|
|
|
T g |
i |
X (0) |
|
X |
− |
X (0) |
|
|
|
X |
. |
|
|||||||||||||||||
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
X |
|
|
|
D |
, т. е. |
g |
(X ) |
|
0, |
то |
G(0)(X ) |
|
||||||||||
Отсюда следует, что если →− |
|
|
i |
→− |
|
|
|
i |
→− |
||||||||||||||||||||||||||||||||
|
|
i(→− |
|
0 |
, т. е. |
→− |
|
|
M (0) |
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
g |
|
X ) |
|
|
|
|
|
X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
Теперь можно поставить задачу линейного программирования |
|||||||||||||||||||||||||||||||||||||||
(задачу 0) |
|
|
|
|
→− |
|
|
|
|
→− |
→− |
→ min |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
L(X ) = |
c T X |
|
|
|
|
, |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
→− i |
|
|
) |
T |
→− − i |
, i = 1, . . . , m, |
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
( a |
(0) |
|
X |
|
|
|
|
|
|
b |
(0) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
→− |
|
0, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
X |
(1) |
, являющуюся одной из крайних точек |
|||||||||||||||||||||||||
ее решение даст точку →− |
|
|
|
||||||||||||||||||||||||||||||||||||||
множества M (0). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
X (1) |
удовлетворяет условиям исходной задачи, т. е. все |
|||||||||||||||||||||||||||||||||||
|
|
Если →− |
|
|
|||||||||||||||||||||||||||||||||||||
|
X (1)) |
|
0, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
X |
|
|
||||
gi(→− |
|
|
то это и есть искомый оптимальный план →− . Если |
||||||||||||||||||||||||||||||||||||||
|
|
X (1) |
нарушает ограничения, т. е. для некоторого |
p |
имеет место |
||||||||||||||||||||||||||||||||||||
же →− |
|
||||||||||||||||||||||||||||||||||||||||
|
X (1)) > 0, |
то строится линейное отсечение |
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||
gp(→− |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||
G(1) |
(→− |
|
|
|
|
|
→− |
|
|
−→ |
|
→− →− −→ |
(1)) = ( a |
|
|
|
→− |
+b(1) |
0. |
||||||||||||||||||||||
X ) = g |
|
(X (1))+ |
|
T g |
(X (1))(X |
− |
X |
(1))T X |
|||||||||||||||||||||||||||||||||
|
p |
|
|
|
|
p |
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
|
|
|
|
|
|
→− p |
|
|
|
|
p |
|
||||||||
|
|
Можно показать, что это отсечение является правильным, т. е. |
|||||||||||||||||||||||||||||||||||||||
|
|
|
X |
(1) |
будет отсечена от множества D. Действительно, если |
||||||||||||||||||||||||||||||||||||
точка →− |
|
подставить координаты этой точки в уравнение гиперплоскости, получим
G(1) |
(→− |
→− |
(1)) + |
→− |
T g |
→− →− →− |
→− |
(1)) > 0. |
||
X |
(1)) = g (X |
|
(X (1))(X (1) |
− |
X |
(1)) = g (X |
||||
p |
|
p |
|
p |
|
|
p |
|
202 Глава 12. Многомерная оптимизация с ограничениями
Добавляя полученное отсечение к ограничениям задачи 0, получаем задачу 1
L(→− = c |
|
→− |
→ |
|
||||||
X ) |
|
→− |
T X |
min, |
||||||
|
→− |
|
|
|
||||||
→− i |
|
) |
T |
− i |
, i = 1, . . . , m, |
|||||
( a |
(0) |
|
X |
|
|
b |
(0) |
|||
|
|
|
|
|
|
|
|
|||
( a |
|
|
) |
|
→− |
− |
|
p |
, |
|
→− p |
|
|
T X |
|
|
|||||
→− |
(1) |
|
|
|
b(1) |
|||||
|
0, |
|
|
|
|
|
|
|||
X |
|
|
|
|
|
|
|
|||
X (2) |
и т. д. |
|
|
|
||||||
дающую решение →− |
|
|
|
|
|
На каждой итерации добавляется новая отсекающая плоскость, в результате чего образуется сжимающаяся последовательность вложенных друг в друга многогранников, охватывающих нелинейную выпуклую область планов D:
M (0) M (1) · · · M (k) · · · D.
Решения линейных задач при этом образуют последовательность приближений, сходящуюся к точке минимума:
→−X (k) → −→X .
В отличие от метода Гомори, метод Кэлли не гарантирует сходимости за конечное число итераций, при этом на каждой итерации точка приближенного решения остается з а п р е д е л а м и области допустимых значений.
Для того чтобы определить, какую конкретно отсекающую
плоскость следует построить на k-й итерации, рекомендуется под-
→− (k)
ставить текущее приближение X во все ограничения и найти то из них, которое нарушается в наибольшей степени. Ему соответствует индекс
−→
p = arg max cut[gi(X (k)],
i
где cut[x] — функция срезки (с. 158 ). Если при этом текущее приближение оказывается достаточно близко к допустимой области,
12.6.. Метод секущих плоскостей |
203 |
−→
о чем свидетельствует выполнение соотношения gp(X (k)) < ε, где ε — предустановленный параметр точности, то работа алгоритма завершается.
−→
Замечание. Если gi(X ) – линейная функция, то дополнительно линеаризовать ее не нужно, на любой итерации линеаризованная
|
|
|
|
|
|
|
|
|
|
|
(k) |
X ) = g (X ). |
Действительно, пусть |
||||||||
функция совпадает с исходной: Gi |
(→− |
|
i |
→− |
|||||||||||||||||
g |
→− |
|
→− |
+ |
b |
|
→− |
g |
|
→− |
|
|
|
|
|
|
|
|
|
|
|
(X ) = a T X |
. Тогда |
|
(X ) = a |
|
|
|
|
|
|
|
|
|
|||||||||
i |
|
→− |
|
|
|
i |
|
→− и |
|
|
|
|
|
|
|
|
|||||
|
G(k) |
(→− |
|
→− |
(k)) + |
→− |
T g |
|
→− →− →− |
(k)) = |
|
|
|
|
|
||||||
|
X ) = g |
(X |
|
(X (k))(X |
− |
X |
|
|
|
|
|
||||||||||
|
i |
|
i |
|
|
|
|
i |
|
→− |
|
|
|
|
→− →− + |
|
= |
|
→− |
||
|
|
|
|
|
|
→− →− |
|
|
|
→− − →− |
|
|
i |
||||||||
|
|
|
|
= a T X (k) + b + a T (X X |
(k)) = a T X |
b |
|
g |
(X ). |
П о д г о т о в и т е л ь н ы й э т а п
Если целевая функция задачи нелинейна, производится ее линеаризация, для чего вводится дополнительная переменная и дополнительное ограничение (да-
лее функции ограничений gi уже новые).
Н а ч а л ь н а я з а д а ч а
|
|
|
|
|
|
|
|
|
|
|
X (0) |
|
|
|
X (0) |
= 0 |
. |
||||
Шаг 1. Выбирается начальная точка →− |
|
|
|
, например →− |
|
||||||||||||||||
Шаг 2. Строится задача линейного программирования |
|
|
|||||||||||||||||||
|
|
→− |
|
→− |
→− |
→ min |
|
|
|
|
|
|
|
|
|
||||||
|
L(X ) = |
c T X |
|
|
|
, |
|
|
|
|
|
|
|
|
|
||||||
|
|
−→i |
|
→− − i , i = 1, . . . , m, |
|
|
|||||||||||||||
|
a |
|
|
T X |
|
|
b(0) |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
(0) |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
→− |
|
0, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
в которой матрица условий формируется из строк |
|
|
|||||||||||||||||||
|
|
|
→− i |
|
|
= →− |
|
gi(→− |
|
|
) |
|
|
|
|
||||||
|
|
|
|
|
a (0) T |
|
|
T |
|
X |
(0) |
|
, |
|
|
|
|||||
а вектор правых частей набирается из компонент |
|
|
|||||||||||||||||||
|
b(0) |
= g (→− |
|
|
) + |
→− |
T g |
|
(→− |
|
)→− |
|
|
||||||||
− |
|
− i |
X |
(0) |
|
|
i |
|
|
X |
(0) |
X (0). |
|
|
|||||||
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12.6.. Метод секущих плоскостей |
205 |
П о д г о т о в и т е л ь н ы й э т а п
Введя дополнительную переменную x3 и дополнительную ограничивающую функцию g˜4, сформулируем новую задачу с линейной целевой функцией и нелинейными ограничениями. Функции g˜1, . . . , g˜4 теперь зависят от т р е х переменных (для упрощения обозначений знаки тильды далее опускаем):
x3 → min;
g1(x1, x2, x3) = x21 + x22 − 4 0, g2(x1, x2, x3) = −x1 + x2 0, g3(x1, x2, x3) = x2 − 1 0,
g4(x1, x2, x3) = (x1 − 2)2 + (x2 − 2)2 − x3 0, x1, x2, x3 0.
Н а ч а л ь н а я з а д а ч а
X (0) |
= 0 . |
Ш а г 1. Выберем исходную точку →− |
→− |
Ш а г 2. Строим начальную задачу линейного программирования. Поскольку функции g2 и g3 линейные, то потребуется знание
градиента только для g1 и g4: |
→− 4 |
|
|
|
2x2 |
|
|
4 |
|
|
|
||||||||||||||||||||
|
|
→− g1(→− |
|
|
2x2 |
|
|
→− |
|
|
− |
|
|
|
|||||||||||||||||
|
|
|
|
|
X ) = |
|
|
2x1 |
|
|
|
|
|
g (X ) = |
|
2x1 |
4 |
|
|
|
|||||||||||
|
|
|
|
|
0 |
, |
|
|
|
|
1 |
|
. |
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
− |
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
− |
|
|
|
|
|
|||||||||
Для исходной точки вычисляем |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
g (→− |
|
|
4, |
- |
|
|
|
. |
T |
= |
→− |
|
4 |
→− |
|
|
|
|
|
|
|
|
|
b(0) |
= 4, |
|
|
||||
4 |
(→− |
|
|
|
|
→− |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
1 |
0 ) = |
− |
|
a |
(0) |
|
|
T g |
(0, 0, 0) = (0, 0, 0), |
|
|
||||||||||||||||||||
|
|
|
|
→− |
1 |
|
|
|
|
|
|
1 |
|
|
|
− |
|
|
− |
|
− |
|
1 |
|
− |
|
|||||
|
|
|
|
|
-→− |
4 . |
T |
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
||||||||||
g |
0 ) = 8, |
|
|
a |
(0) |
|
= |
|
|
T g |
( 0 ) = ( |
|
4, |
|
4, |
|
|
1), b(0) = |
|
8. |
Таким образом, задача линейного программирования для нахождения первого приближения имеет вид
206 |
Глава 12. Многомерная оптимизация с ограничениями |
||||
|
|
|
x3 |
→ min |
|
|
0x1 |
0x2 |
0x3 |
4, |
|
|
−x1 |
+x2 |
|
|
0, |
|
−4x1 |
x2 |
|
|
1, |
|
−4x2 |
−x3 |
−8, |
x1, x2, x3 0.
Первое ограничение получилось тривиальным, но оно не нарушает корректности постановки задачи и не должно нас смущать.
И т е р а ц и я 1
Ш а г 3. Решаем данную задачу симплексным методом, полу-
−→
чаем оптимальный план X (1) = (68.8506, 0.9951, 0)T , он выходит
далеко за допустимую область.
−→(1)
Ш а г 4. Подставляя X в каждое из ограничений, получа-
ем четыре числа: (4737.4, −67.9, 0, 4470.0). Нарушаются первое и четвертое ограничения, причем первое нарушается сильнее, поэтому индекс p = 1, δ(1) = 4737.4. На основе этого ограничения строим новое отсечение. Вычисляем
→− |
1 |
= |
p |
(→− |
(1) |
) = (137 |
7 |
|
1 |
990 |
0) |
|||||||
a |
|
g |
|
|
||||||||||||||
|
|
|
|
|
|
X |
|
→− |
|
|
|
. |
, |
|
. |
, |
T , |
|
b |
= g (→− |
|
|
|
|
|
→− →− |
(1) = 4745.4. |
||||||||||
1 |
|
− 1 |
|
X (1)) + |
|
T g |
(X |
(1))X |
||||||||||
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
||||
Ш а г 5. Добавляя новую строку, достраиваем задачу линей- |
||||||||||||||||||
ного программирования: |
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
x3 |
|
→ min |
|||
|
|
|
|
0x1 |
|
0x2 |
0x3 |
|
|
|
4, |
|||||||
|
|
|
−x1 |
|
+x2 |
|
|
|
|
|
|
|
0, |
|||||
|
|
|
−4x1 |
|
|
x2 |
|
|
|
|
|
|
|
1, |
||||
|
|
|
−4x2 −x3 |
|
|
|
−8, |
|||||||||||
|
|
137.7x1 |
1.99x2 |
|
|
|
|
|
|
4745.4, |
||||||||
|
|
|
|
x1, x2, x3 0. |
|
|
|
|
|
|
|
12.6.. Метод секущих плоскостей |
207 |
И т е р а ц и я 2
Ш а г 3. Решаем новую задачу симплексным методом, полу-
→−
чаем оптимальный план X (1) = (33.6886, 0.5549, 0.0000)T .
−→(1)
Ш а г 4. X также выходит за допустимую область, но уже меньше, так как δ(2) = 1131.2 < δ(1) = 4737.4.
Ш а г 5. Достраиваем задачу линейного программирования, переходим к новой итерации и т. д.
В табл. 12.3 приведены первые 10 итераций метода секущих плоскостей. Хорошо видно, что оптимальная точка все время остается за пределами допустимой области, хотя монотонно приближается к ней.
Таблица 12.3. Итерации метода секущих плоскостей для примера
k |
x(k) |
x(k) |
x(k) |
δ(k) |
|
1 |
2 |
3 |
|
1 |
68.850 |
0.995 |
0.000 4737.400 |
|
2 |
33.688 |
0.554 |
0.000 1131.228 |
|
3 |
15.034 |
0.044 |
0.000 |
222.034 |
4 |
3.881 |
0.775 |
0.000 |
11.666 |
5 |
1.008 |
0.998 |
4.000 |
1.986 |
6 |
2.195 |
0.997 |
1.000 |
1.815 |
7 |
1.780 |
1.000 |
0.450 |
0.597 |
8 |
1.780 |
1.000 |
1.047 |
0.171 |
9 |
1.732 |
1.000 |
1.069 |
0.002 |
10 |
1.732 |
1.000 |
1.071 |
0.002 |
208 Глава 12. Многомерная оптимизация с ограничениями
12.7. Исторические замечания
Численные методы нелинейной оптимизации с ограничени-
ями |
в силу их вычислительной трудоемкости стали актив- |
но |
развиваться только в середине XX века после создания |
электронных вычислительных машин, хотя некоторые фундаментальные идеи были высказаны заблаговременно при решении прикладных физических и технических задач. В частности, идея штрафных функций была предложена в ста-
тье5, опубликованной еще в 1943 г. Ее автором был выдающийся математик XX века Рихард Курант (Courant,
Richard; 1888–1972). Курант повторил судьбу многих европейских ученых еврейского происхождения. С 1920 по 1933 г. он был профессором Гёттингенского университета в Германии, после прихода нацистов к власти и разгрома Математического института Курант эмигрировал в США. С 1936 г. работал профессором Нью-Йоркского университета, где ему было поручено создание специального математического института (с 1964 г. называется Куран-
Рихард Курант товский институт математических наук). Расцвет численных методов нелинейного
программирования пришелся на 1960–1970-е годы, в эпоху общего бума исследования операций. Активные исследования велись параллельно во многих научных коллективах, в мировой математической литературе появились тысячи публикаций на эту тему, некоторые впоследствии были признаны классическими. Хотя национальная принадлежность их авторов была весьма широкой, наиболее существенные результаты были получены в США и Великобритании, где на базе ведущих университетов и крупнейших корпораций развились научные коллективы, возникшие во време-
5Courant R. Variational methods for the solution of problems of equilibrium and vibrations // Bull. Amer. Math. Soc. 1943. V. 49. P. 1–23.