optBook1
.pdf1.2. Задача выпуклого программирования |
11 |
y z
z
y
a) |
b) |
Рис. 1.1.
На рис. 1.1a) изображено выпуклое множество, а на рис. 1.1b) — невыпуклое.
Упражнение 1.5. Докажите, что выпуклая оболочка является минимальным по включению выпуклым множеством, содержащим заданное множество точек. Для этого докажите, что 1) Conv M — выпуклое множество, 2) для любого выпуклого P , содержащего M, справедливо Conv M µ P . Это иллюстрируется рис. 1.2.
Рис. 1.2.
Рассмотрим примеры выпуклых множеств.
Определение 1.6. Замкнутым полупространством называется множе-
ство |
( |
i=1 |
· |
) |
|
|
n |
|
|
|
H(a; a0) = x : åaixi |
|
a0 ; |
где a = (a1; a2; : : : ; an), a =60.
Утверждение 1.7. Замкнутое полупространство выпукло.
12 |
Глава 1. Введение |
ДОКАЗАТЕЛЬСТВО. Пусть y = (y1; y2; : : : ; yn) и z = (z1; z2; : : : ; zn) — две точки замкнутого полупространства S(a; a0). Докажем, что точка ®z +
(1 ¡ ®)y, где 0 · ® · 1, также принадлежит S(a; a0). Для этого убедимся в справедливости неравенства
n |
|
|
åai(® ¢ zi + (1 ¡ ®) ¢ yi) · a0: |
(3) |
|
i=1 |
|
|
По определению для точек y и z выполняются неравенства |
|
|
n |
n |
|
åaizi · a0 и |
åaiyi · a0: |
|
i=1 |
i=1 |
|
Умножая эти неравенства соответственно на неотрицательные числа ® и (1 ¡ ®), а затем складывая, получим (3).
Определение 1.8. Шаром размерности n радиуса r называется множе-
ство |
( |
i=1 |
· |
) |
|
|
n |
|
|
|
Bn(r) = x : åxi2 |
|
r2 : |
Утверждение 1.9. Шар является выпуклым множеством.
ДОКАЗАТЕЛЬСТВО. Пусть y = (y1; y2; : : : ; yn) и z = (z1; z2; : : : ; zn) — точки из Bn(r). Покажем, что точка
® ¢ z + (1 ¡ ®) ¢ y = (®z1 + (1 ¡ ®)y1; : : : ; ®zn + (1 ¡ ®)yn);
где 0 · ® · 1, принадлежит Bn(r). Проделаем преобразования:
n |
n |
n |
n |
å(®zi + (1 ¡ ®)yi)2 = ®2 |
åzi2 + 2®(1 ¡ ®) åyizi + (1 ¡ ®)2 |
åyi2: |
|
i=1 |
i=1 |
i=1 |
i=1 |
Согласно неравенству Коши–Буняковского имеем:
ss
n |
n |
n |
åyizi · |
åyi2 ¢ |
åzi2: |
i=1 |
i=1 |
i=1 |
Заменяя во всех выражениях |
|
|
n |
n |
|
åyi2 |
и åzi2 |
|
i=1 |
i=1 |
|
1.2. Задача выпуклого программирования |
13 |
на r2, получаем неравенство
n
å(®zi + (1 ¡ ®)yi)2 · (®2 + 2®(1 ¡ ®) + (1 ¡ ®)2)r2 = r2;
i=1
что и требовалось.
Утверждение 1.10. Пересечение выпуклых множеств выпукло.
ДОКАЗАТЕЛЬСТВО. Пусть fMi : i 2 Ig — система (возможно бесконечная) |
|
выпуклых множеств и |
\ |
|
M = Mi: |
|
i2I |
Пусть y и z точки из M, 0 · ® · 1. Поскольку для каждого i справедливо включение M µ Mi, то точки y и z принадлежат Mi. Так как Mi — выпуклое множество, то точка (1 ¡ ®) ¢ y + ® ¢ z принадлежит Mi, а, значит, и пересечению M.
Определение 1.11. Полиэдром, или многогранным множеством, называется множество решений системы линейных неравенств
|
a11x1 + a12x2 + : : : + a1nxn |
b1; |
|
8 a21x1 + a22x2 + : : : + a2nxn |
· b2; |
||
> |
. . . . . . |
. . . . . . . . . . . . . . . . . . . . . . . |
.·. . . . . |
> |
|
|
|
< |
|
|
|
> |
|
|
|
: |
|
+ am2x2 + : : : + amnxn |
· bm; |
>am1x1 |
Из определения получаем, что полиэдр есть пересечение конечного числа замкнутых полупространств. Выпуклость полиэдра следует из утверждений 1.7 и 1.10.
Определение 1.12. Функция f(x) называется выпуклой на выпуклом множестве M, если для любых двух точек x и y из M и любого числа ® такого, что 0 · ® · 1, выполняется неравенство
f(®x + (1 ¡ ®)y) · ®f(x) + (1 ¡ ®)f(y): |
(4) |
Функция f(x) называется вогнутой на выпуклом множестве M, если для любых двух точек x и y из M и любого числа ® такого, что 0 · ® · 1, выполняется неравенство
f(®x + (1 ¡ ®)y) ¸ ®f(x) + (1 ¡ ®)f(y): |
(5) |
14 |
Глава 1. Введение |
Очевидно, функция f(x) является вогнутой тогда и только тогда, когда g(x) = ¡f(x) выпукла.
Геометрически неравенство (5) означает, что график выпуклой функции не должен быть расположен выше прямой, соединяющей любые две точки графика (см. рис. 1.3).
®f(x) + (1 ¡ ®)f(y)
f ¡®x + (1 ¡ ®)y¢
|
|
x |
|
|
M |
|
|
y |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
®x + (1 ¡ ®)y |
|
|
|
|
|
|
||||
|
|
Рис. 1.3. |
|
|
|
|
|
|
|
|
|
|
Лемма 1.13. Если |
( ) выпукла на |
M |
, |
xi |
2 M |
, |
®i ¸ |
0 ( |
i |
= 1 |
) и |
|
s |
f x |
|
|
|
|
|
; : : : ; s |
|||||
å ®i = 1, то |
|
|
|
|
|
|
|
|
|
|
|
|
i=1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
s |
|
|
s |
|
|
|
|
|
|
|
|
|
f å |
®ixi |
å®if(xi): |
|
|
|
|
|
||||
|
Ãi=1 |
! |
· i=1 |
|
|
|
|
|
|
|
ДОКАЗАТЕЛЬСТВО. Индукция по s.
Заметим, что если функция f(x) — выпуклая на выпуклом множестве M, то множество fx 2 M : f(x) · ¯g также выпукло. В частности, выпуклость множества H(a; a0) следует из выпуклости линейной функции
n
f(x) = åaixi;
i=1
а выпуклость шара Bn(r) вытекает из выпуклости функции
n
f(x) = åx2i :
i=1
1.2. Задача выпуклого программирования |
15 |
Определение 1.14. Задача минимизации выпуклой функции на выпуклом множестве и задача максимизации вогнутой функции на выпуклом множестве называются задачами выпуклого программирования.
Задача выпуклого программирования является частным случаем задачи математического программирования (2), когда M — выпуклое множество, а функция f(x) выпукла на M.
Важным свойством задачи выпуклого программирования является совпадение локального и глобального минимума.
Определение 1.15. Точка xe из M называется локальным минимумом
функции f(x) на M, если существует такое " > 0, что для любого y из M, удовлетворяющего неравенству jy ¡xej < ", выполняется неравенство f(xe) · f(y).
Другими словами, точка xe является точкой локального минимума, если найдется такая "-окрестность точки xe, что значение функции f(x) в любой точке этой окрестности не меньше f(xe).
Теорема 1.16. Всякий локальный минимум в задаче выпуклого программирования является оптимальным вектором.
ДОКАЗАТЕЛЬСТВО. Пусть xe — локальный минимум выпуклой на M функции f(x) и вопреки доказываемому утверждению существует xb 2 M такой, что f(xb) < f(xe). По определению выпуклой функции, при 0 < ® · 1 выполняются неравенства
f(®xb + (1 ¡ ®)xe) · ®f(xb) + (1 ¡ ®)f(xe) < f(xe):
Однако это противоречит локальной минимальности xe. Действительно, для любого " > 0 точка z = ®xb + (1 ¡ ®)xe, где
® = min |
½ |
2 |
; |
2 x" |
x ¾; |
|
|
1 |
|
|
|
jb ¡ ej
принадлежит как M (в силу выпуклости), так и "-окрестности точки xe (так как jz ¡ xej = ®jxb ¡ xej < ").
Таким образом, чтобы определить, достигает ли выпуклая на выпуклом множестве M функция f(x) минимума в точке xe, достаточно
16 |
Глава 1. Введение |
рассмотреть поведение f(x) вблизи xe; если xe — неоптимальный, то найдется отрезок (направление), двигаясь по которому можно получить новый допустимый вектор с меньшим, чем в xe, значением f(x). Методы, основанные на этой идее, называются градиентными.
Не так обстоит дело, если речь идет о максимизации выпуклой на выпуклом множестве M функции f(x).
Определение 1.17. Задача максимизации выпуклой функции на выпуклом множестве и задача минимизации вогнутой функции на выпуклом множестве называются задачами вогнутого программирования.
В таких задачах для нахождения оптимального вектора, вообще говоря (как правило, так оно и бывает), необходимо перебрать все локальные максимумы. Однако, если в рассматриваемом случае M задано в виде M = Conv fp1; : : : ; psg, то имеет место следующая теорема.
Теорема 1.18. Если M = Conv fp1; : : : ; psg и f(x) — выпуклая на M функция, то среди векторов p1; : : : ; ps есть оптимальный вектор задачи
(1).
ДОКАЗАТЕЛЬСТВО. Пусть k такое число, что
f(pk) = max ff(pi) : i = 1; : : : ; sg :
Тогда для любого p 2 Conv fp1; : : : ; psg имеет место
Ã!
s |
s |
f(x) = f å®ipi |
· å®if(pi) · f(pk); |
i=1 |
i=1 |
т. е. pk — оптимальный вектор задачи (1).
Разумеется, теорема 1.18 сводит дело к конечному перебору, однако число s в практически важных задачах настолько велико, что осуществить этот перебор не под силу и компьютеру. С другой стороны, известные из математического анализа условия, выделяют точки, «подозрительные» на локальный экстремум, лишь внутри области и, следовательно, здесь не работают.
Пусть теперь M = Conv fp1; : : : ; psg, а f(x) — линейная функция. В этом случае применимы и теорема 1.16 и теорема 1.18, и полный перебор векторов p1; : : : ; ps можно попытаться заменить их упорядоченным перебором. Симплекс-метод, рассматриваемый ниже, является конкретизацией этой идеи.
1.3. Задача линейного программирования |
17 |
1.3. Задача линейного программирования
Определение 1.19. Задача минимизации или максимизации линейной функции на полиэдре M называется задачей линейного программирования (ЗЛП).
Согласно определению, ЗЛП может быть записана в виде
|
max(c1x1 + c2x2 + : : : + cnxn) |
|
||
ai1x1 |
+ ai2x2 |
+ : : : + ainxn · bi |
(i = 1; : : : ; k); |
(6) |
8ai1x1 + ai2x2 + : : : + ainxn ¸ bi |
(i = k + 1; : : : ; k + s); |
|
||
: |
+ ai2x2 + : : : + ainxn = bi |
(i = k + s + 1; : : : ; m); |
|
|
<ai1x1 |
|
где величины cj, aij, bi (j = 1; 2; : : : ; n, i = 1; 2; : : : ; m) являются элементами некоторого подполя F поля вещественных чисел R. Умножив
неравенства с (k+1)-го по (k+s)-ое на ¡1 и переименовав коэффициенты, представим ЗЛП (6) в виде:
max(c1x1 + c2x2 + : : : + cnxn) |
|
|
ai1x1 + ai2x2 + : : : + ainxn · bi |
(i = 1; : : : ; k + s); |
(7) |
|
||
½ai1x1 + ai2x2 + : : : + ainxn = bi |
(i = k + s + 1; : : : ; m): |
|
Если вместо задачи на максимум в (6) рассматривается задача на минимум, то форму (7) легко получить умножением целевой функции на ¡1 и переименовыванием коэффициентов.
ЗЛП в форме (7) называется общей. Кроме общей формы ЗЛП выделяют также стандартную и каноническую формы. ЗЛП вида
|
|
max(c1x1 + c2x2 + : : : + cnxn) |
|
|
|
|
|||
|
a11x1 + a12x2 + : : : + a1nxn |
|
b1; |
|
|
||||
8 a21x1 + |
a22x2 + : : : + |
a2nxn |
· b2; |
|
(8) |
||||
> |
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .·. . . . . |
|
|||||||
> |
|
|
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
|
|
>a |
x + a x + : : : + a x |
|
b |
m |
; |
|
|||
> |
|
m1 1 |
m2 2 |
mn n |
|
|
|
|
|
< |
|
xj ¸ 0 (j = 1; 2; : : : ; n) |
· |
|
|
|
|
||
> |
|
|
|
|
|
||||
> |
|
|
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
|
|
>
:
18 |
|
|
|
|
Глава 1. |
Введение |
называется стандартной, а ЗЛП вида |
|
|
|
|||
|
|
max(c1x1 + c2x2 + : : : + cnxn) |
|
|
||
|
> |
a11x1 + a12x2 + : : : + a1nxn = b1; |
|
|||
|
> |
|
+ a22x2 + : : : + |
a2nxn = b2; |
(9) |
|
|
8 a21x1 |
|||||
|
< |
|
|
|
|
|
|
> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |
|
||||
|
>a x + a x + : : : + a x = b ; |
|
||||
|
> |
m1 1 |
m2 2 |
|
|
|
|
> |
mn n m |
|
|||
|
> |
|
||||
|
> |
|
|
|
|
|
|
> |
|
¸ 0 (j = 1; 2; : : : ; n) |
|
|
|
|
> |
xj |
|
|
||
называется |
канонической. |
|
|
|
|
|
: |
|
|
|
|
|
Пусть A = (aij) — матрица m £ n, b = (b1; : : : ; bm)> — вектор-столбец, c = (c1; : : : ; cn) — вектор-строка. Если a = (a1; : : : ; am) и b = (b1; : : : ; bm), то под неравенством a ¸ b будем понимать m неравенств ai ¸ bi (i =
1; : : : ; m).
Используя матричные операции, запишем стандартную и канониче-
скую ЗЛП в матричном виде: |
|
max cx |
max cx |
½ x ¸ 0; |
½ x ¸ 0 |
Ax · b; |
Ax = b; |
соответственно. Для аналогичного представления общей ЗЛП понадобит-
ся блочное представление: |
|
|
µ b000 ¶ |
|
|
A = |
µ A000 ¶ |
; |
b = |
; |
|
|
A |
|
|
b |
|
где A0 и b0 состоят из первых s строк матрицы A и первых s компонент вектора b, а A00 и b00 — из остальных строк матрицы A и остальных компонент вектора b соответственно. Общая ЗЛП примет вид:
max cx
½A0x · b0; A00x = b00:
Все введенные формы ЗЛП эквивалентны в том смысле, что каждую из них можно преобразовать к любой другой. Оставшаяся часть данного раздела посвящена доказательству этого факта.
1.3. Задача линейного программирования |
19 |
Покажем, как привести общую ЗЛП к стандартной. Для этого каждое
уравнение ai1x1 + ai2x2 + : : : + ainxn = bi из (8) заменим двумя неравенствами
ai1x1 + ai2x2 + : : : + ainxn · bi; ¡ai1x1 ¡ ai2x2 ¡ : : : ¡ ainxn · ¡bi;
положим xj = uj¡vj (j = 1; 2; : : : ; n) и потребуем выполнение неравенств uj ¸ 0, vj ¸ 0. Общая задача линейного программирования в новых переменных будет иметь вид стандартной ЗЛП:
8ai1 |
|
max(c1(u1 ¡ v1) + c2(u2 ¡ v2) + : : : + cn(un ¡ vn)) |
|||||||
(u1 |
¡ v1) + : : : + ain(un |
¡ vn) |
· |
bi |
(i = k + s + 1; : : : ; m); |
||||
> |
ai1 |
(u1 |
v1) + : : : + ain(un |
vn) |
|
bi |
(i = 1; : : : ; k + s); |
||
>ai1 |
(v1 |
¡u1) + : : : + ain(vn |
¡un) |
· |
bi |
(i = k + s + 1; : : : ; m); |
|||
< |
|
|
¡ |
|
|
¡ |
· ¡ |
(10) |
|
>uj |
¸ 0; vj ¸ 0 (j = 1; 2; : : : ; n); |
|
|||||||
> |
|
|
|
|
|
|
|
|
|
: |
|
|
|
|
|
|
|
|
|
или в матричном виде: |
|
|
|
|
|
|
|||
|
|
|
|
|
max(cv ¡ cu) |
|
|||
|
|
|
> |
|
A0 |
u ¡ A0 v · b0; |
|||
|
|
|
8 |
|
A00 u ¡ A00 v · b00; |
||||
|
|
|
> |
¡ |
A00 |
u + A00 v |
· ¡ |
b00; |
|
|
|
|
< |
|
|
|
|
||
|
|
|
> |
|
|
|
|
|
|
|
|
|
: |
|
u ¸ 0; |
v ¸ 0; |
|
||
|
|
|
> |
|
|
где u = (u1; u2; : : : ; un)>, v = (v1; v2; : : : ; vn)>.
Если общая задача линейного программирования имеет решение x, то стандартная ЗЛП (10) тоже имеет решение, которое можно найти по формулам:
uj = |
xj; |
если |
xj ¸ 0; |
и vj = |
½ |
0; |
если |
xj ¸ 0; |
½ |
0; |
если |
xj < 0 |
|
¡xj; |
если |
xj < 0: |
С другой стороны по решению (u; v) стандартной ЗЛП (10) можно найти решение x = u ¡ v общей ЗЛП. Очевидно, что значения целевых функций на соответствующих векторах равны. Таким образом, общая задача линейного программирования (7) легко сводится к стандартной задаче линейного программирования (10).
20 |
Глава 1. Введение |
Приведем стандартную ЗЛП (8) к каноническому виду. Для этого введем новые неизвестные yi (i = 1; 2 : : : ; m), называемые слабыми переменными, или невязками. Рассмотрим каноническую ЗЛП
|
|
|
max(c1x1 + c2x2 + : : : + cnxn) |
|
|
|||
|
> |
a11x1 + a12x2 + : : : + a1nxn + y1 |
|
= b1; |
|
|||
|
> |
|
a22x2 + : : : + |
a2nxn |
+ y2 |
= b2; |
(11) |
|
|
8 a21x1 + |
|||||||
|
< |
|
|
|
|
|
|
|
|
> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |
|
||||||
|
>a x + a x + : : : + a x |
|
+ y = b ; |
|
||||
|
> |
m1 1 |
m2 2 |
|
|
|
|
|
|
> |
mn n |
|
m m |
|
|||
|
> |
|
|
|||||
или в |
> |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
|
|
: |
|
|
|
yi ¸ 0 (i = 1; 2; : : : ; m); |
|
||
|
>xj ¸ 0 (j = 1; 2; : : : ; n); |
|
||||||
|
матричном виде: |
|
|
|
|
|
||
|
|
|
max cx |
|
|
|
||
|
|
|
Ax + y = b; |
|
|
|
||
|
|
|
8 x |
¸ |
0; |
|
|
|
|
|
|
< y |
0; |
|
|
|
|
|
|
|
: |
¸ |
|
|
|
|
где y = (y1; y2; : : : ; ym)>. Легко видеть, что между решениями x стандартной ЗЛП (8) и решениями (x; y) канонической ЗЛП (11) существует взаимно однозначное соответствие x $ (x; b¡Ax). Таким образом, стандартная ЗЛП сводится к канонической.
Так как каноническая ЗЛП является частным случаем общей задачи линейного программирования, то эквивалентность всех форм ЗЛП установлена.
1.4. Основная идея симплекс-метода
Попробуем показать, как из теорем 1.16 и 1.18 можно получить алгоритм решения ЗЛП. Более формальное изложение этого алгоритма, носящего название симплекс-метод, находится в последующих разделах.
Рассмотрим стандартную ЗЛП (8). Если b ¸ 0, то x = 0 — допустимый вектор. Если при этом c · 0, то для любого допустимого вектора справедливо cx · 0, следовательно, нулевой вектор является оптимальным. Если найдется такое s, при котором cs > 0, то попытаемся увеличить xs, не меняя при этом других координат и сохраняя условие допустимости (ср. с теоремой 1.16). Ясно, что если для всех i 2 f1; 2; : : : ; mg выполнено