Материал: Бородакий Нелинейное программирование в современных задачах оптимизации 2011

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Будем полагать, что в точке x имеется хотя бы одно активное ограничивающее уравнение g(x) = 0 , при этом точка x лежит на

границе допустимой области. В противном случае нет проблем с выбором направления – это антиградиент.

Предположим, что антиградиент не является возможным направлением, то есть при движении по нему нарушается, по крайней мере, одно ограничивающее уравнение.

Если ограничивающее уравнение линейно, то «лучшее» направление S получается проекцией вектора – f ( x ) на

многообразие, характеризуемое линейным ограничивающим уравнением(рис. 1.28).

f ( x )

g(x) = 0

уменьшение f (x)

x

X допустимая область

Рис. 1.28. Проекция антиградиента на активное ограничение

Если активное ограничивающее уравнение является нелинейным, проблема выбора направления становится сложнее. Помимо условия < f (x), S >< 0 (движение в сторону уменьшения

f (x) ), должно удовлетворяться условие < g(x), S >< 0 (движение

всторону уменьшения g(x) ), где g(x) – активное

ограничивающее неравенство (рис. 1.29).

Возможными являются направления S , для которых < g(x), S >< 0 (при условии выпуклости g(x) ).

Оказывается, что при выборе возможного направления нужно принимать во внимание не только ограничения, которые в данной точке выполняются точно, но и те, которые выполняются «почти точно», так как в противном случае может произойти сколь угодно

81

сильное измельчение шага вдали от точки минимума. При этом процесс не обязательно будет приводить в точку минимума. Эти соображения включены в алгоритм выбора направления.

g(x)

x

Касательная плоскость к g(x) = 0

g(x) = 0

S S

X (g(x))

Рис. 1.29. Выбор возможных направлений при нелинейном ограничивающем уравнении

Возможное и приемлемое направление S получается путем решения следующей вспомогательной задачи условной оптимизации: найти max{ϕ(σ, S) = σ} при ограничениях:

< gi (x), S > +σ ≤ 0, i Iε ;

<f (x), S > +σ ≤ 0 .

<S, S >=1 .

В данной задаче Iε = {i : −ε ≤ gi (x) 0; 0 < ε <<1}, т.е. множество Iε включает в себя индексы «почти активных»

ограничений, значения которых находятся в ε-близости от границы

( − εi gi (x) 0 ).

Очевидно, если полученное в результате решения вспомогательной задачи максимальное значение σ > 0 , то смещение в направлении S приводит к уменьшению значения функции f (x) , что следует из второго условия в ограничениях

вспомогательной задачи, и не нарушает никаких ограничений основной задачи, что следует из первого условия в ограничениях вспомогательной задачи. Последнее ограничение – это условие нормировки вектора S . Чаще всего это ограничение заменяют

82

следующим: 1 s j 1, j =1, n , s j – элемент вектора направления

S. Таким образом, вспомогательная задача становиться задачей линейного программирования, для решения которой существуют конечно-шаговые методы (симплекс-методы). Неизвестными параметрами в этой задаче линейного программирования являются σ, и элементы вектора S ( s1 , s2 , , sn ).

Рассмотрим один из алгоритмов метода возможных направлений.

В качестве начального приближения x0 может быть выбрана любая точка множества X , а ε0 выбирают из интервала (0, 1].

Пусть в результате k-й итерации вычислены xk и εk . Опишем k +1 итерацию.

1.Решить вспомогательную задачу и вычислить σk 0 и Sk (если Iε пусто, т.е. xk – внутренняя точка, то Sk совпадает с антиградиентом).

2.Если σk ≥ εk , то перейти к вычислению величины шага λk .

Это можно сделать одним из двух способов:

 

 

 

а) решая

задачу

одномерной

минимизации

функции

ϕ(λ) = f (xk ) + λSk , причем

λ

должна

лежать

в

интервале

0 ≤ λ ≤ λдоп . Здесь λдоп – расстояние от точки xk

до ближайшей

по направлению

Sk

точки

границы

множества

X ,

т.е. точка

y = xk + λдопSk

принадлежит

границе

множества

X

(если луч

xk + λдопSk

не пересекается с границей, а полностью принадлежит

множеству X , то λдоп = +∞ );

 

 

 

 

 

 

 

б) число

λk можно выбрать так, чтобы функция f (x) была в

точке xk+1 меньше, чем в точке xk .

 

 

 

 

Например, в качестве λk

можно взять наибольшее из чисел,

удовлетворяющих соотношениям:

 

 

 

 

 

f (xk ) f (xk

+ λk Sk )

1

λk σk ,

0 ≤ λk ≤ λдоп .

 

 

 

 

 

2

 

xk+1 = xk + λk Sk ,

 

После определения

λk вычислить

положить

εk +1 = εk и прейти к шагу 1.

 

 

 

 

 

 

 

 

 

 

 

83

 

 

 

 

 

3.

Если

0 < σk < εk , то положить

xk+1 = xk ,

εk+1 = γεk , где γ

удовлетворяет условию 0 < γ <1, и перейти к шагу 1.

4.

Если

σk = 0 , то вычислить

σ*k , решив

вспомогательную

задачу с ε = 0 . Если σ*k = 0 , то процесс поиска точки минимума

закончен

( x* = xk ). В

противном

случае положить

xk +1 = xk ,

εk +1 = γεk

и перейти к шагу 1.

 

 

 

 

 

Замечание. Условие

σ*k = 0

является необходимым и достаточным

условием

оптимальности

точки

 

 

это доказывается с

помощью

 

x

специальной теоремы [2].

 

 

 

 

 

 

1.4.4.Метод проекции градиента

Вслучае задач безусловной минимизации весьма распространенным является метод градиентного спуска. Однако для задач с ограничениями направление вдоль антиградиента не обязательно является возможным. В случае, когда множество X

выпукло,

для отыскания направления в точке xk напрашивается

мысль спроектировать точку yk

= xk − νk f (xk ) ( νk

– некоторое

фиксированное положительное

число)

на множество X

и

в

качестве

направления спуска

взять

Sk = pk xk ,

где

pk

проекция точки yk на допустимое множество X (рис. 1.30). После этого надо осуществлять спуск вдоль полученного направления. Выпуклость множества X гарантирует, что такое направление Sk является возможным. Проекция точки y k на множество – ближайшая к y k точка этого множества.

Рис. 1.30. Определение направления в методе проекции градиента

84

Итак, метод проекции градиента состоит в вычислении

проекции pk

точки yk = xk − νk f (xk )

на множество X и в

выборе шага

λk таким образом,

чтобы в точке

xk+1 = xk − λk Sk ,

где Sk = pk xk , выполнялось

условие

движения к минимуму

( f (xk+1 ) < f (xk ) ).

 

 

 

В зависимости от способа выбора шага λk

можно получить

различные варианты метода проекции градиента (можно использовать одномерную минимизацию и т.д.).

Прекращения процесса является условие pk = xk , которое является необходимым и достаточным условием того, что точка xk

– точка минимума (доказывается с помощью специальной теоремы).

Например, pk = xk , если f ( xk ) = 0 , так как тогда yk = xk , и нет перемещения из точки xk . Аналогичная ситуация возникает,

если xk лежит на границе и градиент ортогонален границе допустимой области (рис. 1.31).

f ( x )

Рис. 1.31. Направление градиента совпадает с направлением градиента к границе допустимой области

Для того чтобы найти проекцию точки yk на множество X , необходимо решить задачу минимизации квадратичной функции yk x 2 на множестве X (т.е. x X ) – тем самым будет найдена ближайшая к yk точка множества X . В общем случае эта задача

того же порядка сложности, что и исходная. Поэтому методом проекции градиента обычно пользуются лишь в тех случаях, когда проекция точки на множество легко определяется, например, когда

множество X представляет собой шар или параллелепипед в E n ,

85

Источник: https://studfile.net/preview/16708738/