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

optBook1

.pdf
Скачиваний:
26
Добавлен:
27.03.2015
Размер:
574.28 Кб
Скачать

1.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 выполнено

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]