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

2701

.pdf
Скачиваний:
1
Добавлен:
15.11.2022
Размер:
2.09 Mб
Скачать

Итак, окончательно двойственная задача имеет вид:

 

+

≥ 0,

 

 

+

(2.60)

и

= 0 - допустимая точка для этой задачи.

2.6. Метод одновременного решения прямой и двойственной задач

Иначе этот метод называется методом последовательного сокращения невязки.

Каноническая задача линейного программирования имеет вид:

→ max

= { | = , ≥ 0}( ≥ 0). (2.61)

Двойственная к ней задача имеет вид:

min

= {

|

≥ }

 

(2.62)

Пусть известен некоторый план задачи (2.62)

 

.

Обозначим:

(

) = { |( )

=

 

= { | = 1,..., },

} (2.63)

Введем в рассмотрение следующую задачу:

41

 

 

=

 

 

 

 

 

 

 

 

(

+

 

))

 

(2.64)

 

≥ 0,

≥ 0,

 

= ( ,...,

 

 

 

 

Сузим эту задачу следующим образом:

 

 

 

 

 

 

 

 

 

=

 

 

 

 

 

 

 

 

 

≥ 0

+

 

(

)

 

 

 

 

 

 

 

при

 

 

 

(2.65)

 

 

 

 

при

 

 

 

 

 

 

 

= 0

 

≥ 0.

(

)

 

 

 

 

 

Справедлива следующая теорема. Если решение задачи

(2.65) таково, что

 

 

(т.е.

 

 

 

), то

 

 

 

будет решением( , )

задачи (2.61),=а0

 

решением задачи (2.62).

 

 

 

 

= 0

 

 

=

 

Доказательство.

Очевидно,

 

, так как

≥ 0 и

= . Заметим далее, что:

(

) ( − ∑

) = 0

(2.66)

[

−(

) ] = 0

(2.67)

Соотношение (2.67) выполняются в силу условий зада-

чи (2.65). Таким образом, для допустимых векторов ,

вы-

полняются соотношение (2.66), (2.67), т.е. выполнены условия

2-ой теоремы двойственности. Следовательно,

и

-

оптимальные векторы.

 

 

Заметим, что задача (2.65) строится таким образом, что

42

 

= 0

условие (2.67) выполняется "насильственно". Равенство

 

соответствует попаданию

 

 

 

в допустимую область за-

дачи (2.65). Таким образом,=

признаком оптимальности яв-

ляется равенство

= 0

, или попадание в допустимую область

задачи (2.61).

 

 

 

 

 

 

 

 

Пусть оказалось, что

 

 

. Метод решения со-

стоит в том, что

задачу

(2.65)> 0изменяют (расширяя

множество

) так,

чтобы уменьшалось

.

 

 

 

 

 

 

 

 

 

форме:

Запишем( )задачу (2.65) в следующей

 

 

 

 

 

=

,

или в форме:

(

)

 

+

 

=

)

 

≥ 0,

(

≥ 0,

где

= (

)

(

 

.≥ 0,

 

 

 

 

)

 

 

 

 

Выпишем двойственную задачу к (2.68):

≥ 0

≥ −1.

0 , или

Если теперь обозначить−1

= − ,

то

двойственная к

(2.68) задача имеет вид:

≤ 0

(

).

(2.69)

= 1,...,

≤ 1

 

43

 

 

 

Заметим, что задачи (2.68), (2.69) разрешимы, так как их допустимые множества не пусты. Действительно, в качест-

ве допустимого решения задачи (2.68) можно

взять

 

,

=

≥ 0;

ветор

= 0

является

допустимым

для

задачи

 

 

 

 

= 0

 

(2.69).

Обозначим

∆ =

 

 

,

 

=

 

, где - решение

 

 

 

 

задачи (2.69).

 

 

 

 

 

 

 

 

 

 

 

Рассмотрим несколько случаев:

 

 

 

 

 

 

 

1) В силу условий задачи (2.69) для

 

 

имеем,

что

 

. Зная

 

 

и

, построим новый(

вектор

 

 

 

 

 

 

> 0)

 

 

 

 

оптимальное значение целевой функции задачи:

 

такой, чтобы( )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( )

=

 

 

 

 

 

 

 

 

 

 

 

+

 

 

 

 

 

(2.70)

 

 

 

Z

≥ 0,

 

j J(y)

 

 

 

 

 

 

 

 

 

 

 

≥ 0

 

 

 

 

 

 

 

 

 

 

было меньше, чем

.

 

 

 

 

 

 

 

 

 

 

Возьмем:

 

 

=

 

 

,

 

 

 

 

 

 

где ≥ 0.

 

 

 

 

 

 

 

 

(2.71)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вычислим:

 

=

 

 

 

 

=

 

 

 

 

 

∆=

 

 

 

 

 

(2.72)

 

 

 

= ∆ −

 

 

= ∆ −

 

 

 

 

 

 

 

 

Отсюда следует,

что для выполнения условия

 

 

требуется соблюдение неравенства

 

 

 

. В

рассматриваемом

 

 

0

 

 

 

 

 

случае это эквивалентно требованию∆≥:

 

 

 

 

 

 

 

 

 

 

 

 

44

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

> 0

 

(2.73)

Выберем:

 

=

 

= min :

 

=

.

 

 

Тогда

.

 

 

 

(2.74)

, но

Итак,

> 0.

 

 

 

.

 

 

 

 

 

 

> 0 →

Заметим,

что

 

 

 

Действительно

 

( )

∆ > 0.

 

=

 

> 0

 

 

 

 

 

 

 

 

Заметим также, что ∆ = 0, т.е. в систему J(y) войдет новый индекс K.

Покажем теперь, что( , )является крайней точкой задачи (2.70). Для этого достаточно показать, что:

 

 

 

 

 

|

> 0

 

 

(

).

 

 

 

 

кроме

В самом деле, для тех j , для которых

 

,

;

того, в

силу второй

теоремы

двойственности

 

( )

 

 

:

 

> 0 ∆ = 0

= 0

для

: > 0

 

 

 

 

 

 

 

 

> 0

=

 

 

 

 

. Следовательно, для

 

 

.

 

а по

 

 

∆ = ∆

 

= 0,

 

 

 

 

 

 

 

построению

 

 

 

 

 

 

=

 

}.

 

 

 

Таким образом(, ) = { |∆ −

 

 

 

 

 

 

 

 

 

 

 

 

 

решении задачи (2.70). В базис

 

Далее метод состоит|

>в

 

0

 

( ).

 

 

 

 

 

вводится вектор

, для которого

 

 

 

 

т.е. нарушено огра-

ничение в двойственности к (2.70)

задаче. Следовательно, это

 

 

> 0,

 

 

 

 

 

соответствует обычному итерационному шагу симплексного

метода. Поэтому

> 0

становится меньше

.

Тогда:

,

≤ 0.

 

2) Пусть

 

 

 

 

 

 

 

45

 

 

=

для ≥ 0, т.к. ∆= ∆ −

≥ 0;

 

 

 

=

 

=

→ +∞

(2.75)

 

 

 

=

 

 

Здесь

 

 

 

как оптимальные значения целе-

вых функций

прямой (2.65) и двойственной (2.65) задач (этот

 

= ∑

 

,

 

 

 

 

результат непосредственно следует из 2-ой теоремы двойственности).

Из соотношения (2.75) следует, что допустимое множество исходной задачи пусто.

Здесь описан очередной шаг итеративного процесса. Затем все повторяется.

3. МЕТОДЫ РЕШЕНИЯ ЗАДАЧ НЕЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ

3.1.Использование методов линейного программирования для решения задач выпуклого программирования

Вобщем случае, математическая модель принятия оптимального решения, сводится к задаче нелинейного программирования:

min ( , ,…, ),

(3.1)

где

= ∩ ; = { | ≤ ≤ , = 1, };

(3.2)

= { | ( ) ≥ 0, = 1, }.

 

Предположим, что критерий оптимальности Q(x) является выпуклой функцией, а область допустимых решений D образует выпуклое односвязное множество. В этом случае задача оптимизации (3.1) называется задачей выпуклого программирования. В дальнейшем, где это необходимо, будем

46

считать, что функция Q(x), q(х),

= 1,

— непрерывны и

дифференцируемы.

i

 

Рассмотрим класс алгоритмов

реализующих методы

линейной аппроксимации, в которых решение задачи (3.1) — (3.2) на каждой итерации сводится к задаче линейного программирования, в которой многогранник условий Dk является аппроксимацией на k-м шаге области допустимых решений D.

Алгоритм основывается на сведении на каждой итерации исходной задачи выпуклого программирования (3.1)

— (3.2) к задаче линейного программирования, которая получается путем разложения в ряд Тейлора до членов первого порядка критерия оптимальности Q(x) и ограничений gi(х) в ∆ -

окрестности точки

 

:

)+(

т(

),∆)}

 

 

min{ (

(3.3)

при условии, что:

 

(

),∆) ≥ 0,

= 1, ;

 

(

) +(

(3.4)

 

≤ ∆ ≤

,

= 1, ,

(3.5)

где * — оптимальное решение задачи линейного программирования (3.3) — (3.5). Однако, если *-окрестность аппроксимации окажется достаточно большой, то во вновь полученном приближении xk+1 ограничения (3.2) исходной задачи оптимизации могут нарушиться, т.е. xk+1 не будет принадлежать области допустимых решений D. В связи с этим наложим на приращение дополнительное ограничение:

− ≤ ∆ ≤ , = 1, ,

(3.7)

где - положительный параметр, который вводится для ограничения ∆-окрестности аппроксимации исходной задачи.

47

По этой причине говорят, что алгоритм

является реа-

лизацией градиентного метода линеаризации с малым шагом.

Сделаем замену переменного:

 

∆ = ∆ − ∆ , = 1, ,

(3.8)

где ∆ ≥ 0,∆ ≥ 0. Хотя этот шаг удваивает число варьируемых переменных, он необходим в связи с тем, что сим- плекс-метод имеет дело только с неотрицательными переменными. После подстановки переменных j из (3.8) в выражения (3.3) - (3.5), получаем задачу линейного программирования, которая решается на k-й итерации симплекс-методом:

min(∆ ,∆ ){ (

) +

Т(

 

∆ −

Т(

)∆ },

(3.9)

при условии, что:

)∆ −

Т(

)∆ ≥ 0,

= 1,

;

 

( ) +

Т(

(3.10)

max − ,

≤ ∆

− ∆ ≤ min

,

,

(3.11)

 

 

= 1,

;

= 1, .

 

 

 

 

 

∆ ≥ 0,∆

≥ 0,

 

 

 

(3.12)

Оптимальное решение (+)*,(-)*задачи линейного программирования (3.9) - (3.12) позволяет построить точку очередного испытания:

 

 

xk+1 = xk + (+)*

– (-)*

(3.13)

Если точка xk+1 принадлежит области допустимых ре-

шений (

) и выполняется условие:

,

 

 

max

|∆48

−∆ | ≤

(3.14)

то исходная задача выпуклого программирования (3.1)- (3.2) считается решенной. При нарушении условия окончания

поиска (3.14) для вновь полученного приближения

про-

формулируется и решается очередная задача линейного

 

граммирования (3.9) - (3.12). В том случае, когда новое приближение хk+1, полученное из выражения (3.13), не принадле-

жит области допустимых решений

(

 

 

 

,

параметр

должен быть уменьшен

 

 

 

 

задача линейного

(-

 

 

, а

)

 

 

 

программирования (3.9)

(3.12) решена заново для приближе-

=

⁄ , > 1)

 

 

 

 

 

ния

 

, полученного на предыдущей итерации.

 

 

 

 

Величина параметра

сильно влияет на скорость схо-

димости алгоритма F24. При малых значениях

 

 

 

при-

 

 

*

+

 

 

 

 

 

 

сходимости будет

ращение = -

 

будет мало и скорость

 

 

,

= 1,

 

медленной.

При больших значениях параметра

 

 

точка оче-

редного испытания xk+1, определенная по формуле (3.13), может оказаться не принадлежащей области допустимых решений D, в связи с чем на k-й итерации задачу линейного про-

граммирования (3.9) - (3.12) для точки

 

придется ре-

шать несколько раз, что также*

 

процесс поиска точ-

замедляет

 

 

ки локального минимума х исходной задачи выпуклого программирования (3.1) - (3.2). Другим недостатком рассмотренного алгоритма F24 является то, что информация, полученная на предыдущих шагах поиска, не используется в дальнейшем.

Предположим, что исходная задача выпуклого программирования сформулирована как задача минимизации линейной формы на выпуклом замкнутом множестве:

min{

0,

 

где = {x|g (x) ≥ 0,i = 1,m}.

(3.15)

Это предположение не нарушает общности рассмотрения, так как исходная задача выпуклого программирования

49

(3.1) - (3.2) эквивалентна задаче нелинейного программирования:

min { +1}

(3.16)

где

= { | ( ) = +1− ( ) ≥ 0}.

Особенностью задачи оптимизации (3.16) является то, что оптимальное решение х* находится на границе допустимой области D, где хотя бы одно из ограничений обращается в равенство.

Для решения задачи (3.16) рассмотрим алгоритм, реализующий метод отсекающих гиперплоскостей.

Основная идея этого метода состоит в аппроксимации допустимой области решений D семейством содержащих ее полупространств, что, в свою очередь, позволяет заменить ограничения gj(x) > 0 совокупностью линейных неравенств, получаемых путем разложения функции gi (х) в ряд Тейлора до членов первого порядка.

На первой итерации (k = 1) аппроксимирующая область D0 задается в виде многогранника, включающего в себя область допустимых решений D:

≤ ≤ , = 1, −1; ≤

(3.17)

+ ,

где ai, bi, — постоянные величины, выбираемые таким образом, чтобы область D полностью содержалась в многограннике D0. На построенном многограннике решается задача линейного программирования:

min {∑

},

(3.18)

50

 

 

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