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

Загребаев Методы матпрограммирования 2007

.pdf
Скачиваний:
124
Добавлен:
16.08.2013
Размер:
10.97 Mб
Скачать

Принимая во внимание последнее выражение, можно записать:

n1

 

n1

x

(x

) т

 

 

 

Ai

=

 

i

 

 

 

i

 

.

 

 

(xi )

т

 

 

 

 

i=0

 

i=0

Qxi

 

 

Рассмотрим выражение

 

 

 

 

 

 

 

 

 

 

 

 

 

n1

 

 

n1

xi (xi ) т Qx j

 

 

Ai

Qx j

=

 

 

 

 

 

 

 

 

 

.

(3.16)

 

 

(xi )

т

Qxi

i=0

 

 

i=0

 

 

 

 

Так как вектора xi , x j

(i, j =

 

; i j) – взаимно сопряжен-

1, n

ные, то все слагаемые в формуле (3.16), кроме j -го слагаемого,

равны нулю.

Таким образом, получаем:

n1

 

x j (x j

) т Qx j

 

 

Ai Qx j =

 

 

 

= ∆x j .

(x j )

т

Qx j

i=0

 

 

 

 

 

 

 

 

n1

 

Очевидно, такое возможно только, если Ai = Q1 .

 

 

 

 

i=0

 

n1

Также нетрудно доказать, что Bi = E .

i=0

Метод переменной метрики, так же как и метод сопряженных направлений, требует, чтобы нахождение минимума функции на данном направлении осуществлялось очень точно. В противном случае направления поиска не будут Q -сопряженными.

Если сравнить метод переменной метрики с методом сопряженных градиентов, то оказывается, что первый обеспечивает существенно более быструю сходимость, чем второй, но в большей мере подвержен влиянию ошибок вычислений. Поэтому часто используют метод переменной метрики со следующей модификацией: через конечное число шагов (обычно n ) осуществляют обновление матрицы ηk , т.е. полагают ηk = E и процесс начинается, как бы,

сначала. На рис. 3.26 приведена блок-схема метода переменной метрики с периодическим обновлением матрицы ηk .

221

вход

Исходные данные: f (x), f (x), x0 ,ε

k =1 ηf0=' =E f (x0 )

:

Найти λ*

λ* = arg min f (x0 ληf0 ')

π

x = x0 λ*ηf0 '

f 'ε

k = n

x = x x0

g = f (x)'f0 '(x0 )

Вычислить новое η

k = k +1

x0 = x f0 ' = f '

 

Здесь:

x0

- аргумент в начале итерации;

x

аргумент в конце итерации;

f0′ = ∆f (x0 ); f ′ = ∆f (x ) .

λ* значение λ, доставляющее одномерный минимум;

k номер итерации.

x * = x

выход

η = E k = k +1

Рис. 3.26. Блок-схема метода переменной метрики

222

3.4. Минимизация функций с ограничениями

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

рого подмножества X пространства R n . Подмножество X обычно задается неявно системой уравнений ограничений, которая состоит из ограничивающих равенств, неравенств или тех и других вместе.

Множество X называют допустимой областью, а точку x X – допустимым решением.

Итак, задача состоит в следующем: найти min( f (x)) при ограничениях

gi (x) 0, i =

1, m

.

(3.17)

3.4.1. Метод штрафных функций

Так как минимизация функции без ограничений представляет собой более легкую задачу, чем минимизация с ограничениями, то естественными являются попытки преобразования задач с ограничениями в задачи без ограничений. Существует несколько способов такого преобразования. В некоторых случаях для исключения ограничений, накладываемых на x , может быть использована простая замена переменных.

Например, если скалярная переменная x ограничена условием x 1 , то можно использовать следующую замену переменной:

x = sin θ или x = cos θ.

Если переменная x ограничена условием x 0 , то снять ограничения можно заменой x = y 2 . При этом переменная y не ограничена.

Если a x b , то возможна замена: x = a + (b a) sin 2 θ. Эти

приемы имеют ограниченное применение, тем не менее ими пренебрегать нельзя.

Более широкое применение получил, так называемый, метод штрафных функций. Это один из наиболее простых и широко из-

223

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

F (x,l) = f (x) + ψi (gi (x),li ) ,

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

где l

 

– некоторый

векторный

параметр

l = {li }, i =1, m ;

ψi (gi (x), li ) , i =

 

функция

штрафа, которая обладает сле-

1, m

дующим свойством:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

при

gi (x) 0,

 

 

 

i =1, m;

 

 

 

 

 

 

0

 

 

 

 

 

 

lim (ψi (gi (x), li )) =

в

противном

 

 

 

 

случае.

 

 

 

i

+ ∞

 

 

 

 

 

 

 

l →∞

 

 

 

 

 

 

 

 

 

 

 

 

 

 

) в области X

При таком задании штрафных функций F (x, l

близко к

f (x) , а вне области X

эта функция принимает большие

значения.

Идея метода штрафных функций состоит в том, чтобы вместо задачи (3.17) рассматривать задачу минимизации функции F (x, l ) при больших li .

В общем случае F (x, l ) строится так, чтобы она была гладкой и

была возможность применить один из быстро сходящихся методов минимизации функций без ограничений.

Например, штрафная функция может быть построена как взвешенная сумма квадратов невязок

m

F (x,l ) = f (x) + li ϕ2 (gi (x)) ,

i=1

где

ϕ(gi (x)) = gi

0,

 

__

(x), если gi (x) 0, i =

1, m;

__

 

если gi (x) < 0, i =1, m.

 

224

Замена решения задачи (3.17) минимизацией функции F (x, l )

при больших l позволяет приблизиться к решению исходной задачи.

Однако здесь возникают следующие вычислительные трудности.

1. Если функции gi (x) – невыпуклые, то F (x, l ) также не будет выпуклой по x . Поэтому она может обладать локальными минимумами. Так как все изученные нами методы предназначены для нахождения локального минимума, то при плохом начальном приближении x0 будет найден локальный минимум функции F (x, l ) , не совпадающий с минимумом исходной задачи.

Если функции gi (x) – выпуклые, то F (x, l ) также будет вы-

пуклой и данная проблема устраняется.

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

3. Функция F (x, l ) в точках x , для которых gi (x) = 0 при некоторых l не имеет вторых производных, т.е. градиент в этих точ-

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

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

225

3.4.2. Метод Фиакко и Мак-Кормика (метод барьерных функций, метод внутренней точки)

Этот метод основан на идее, близкой к методу штрафных функций, при этом в нем используется иная форма записи вспомогательной функции.

Итак, надо найти min f (x) при ограничениях gi (x) 0 , где функции gi (x) – выпуклые и допустимая область не пуста.

Составим вспомогательную функцию

F (xr, k) =

m

1

 

f (x) k

, k > 0 .

 

 

i=1 gi (x)

 

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

чина. При k 0 минимум функции F (x, k) стремится к минимуму функции f (x) с ограничениями gi (x) 0 .

Для повышения точности важно выбирать малые значения k . Однако при малых k небольшие изменения x приводят к резким изменениям функции F (x, k) . Другими словами, изменения гради-

ента F (x, k) вблизи границ допустимой области становятся более

резкими. Это затрудняет поиск минимума и значительно снижает ценность метода.

3.4.3. Методы возможных направлений

Методы возможных направлений – наиболее исследованный класс методов выпуклого программирования (задачи выпуклого программирования – это такие задачи нелинейного программирования, в которых целевые функции и функции ограничений выпуклы). Подробное описание данных методов было произведено в работах Зойтендейка.

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

226

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

Рассмотрим сущность этих методов.

Имеем задачу нелинейного программирования: найти min f (x) при ограничениях

gi (x) < 0, i =1, m ,

где gi (x) , f (x) – непрерывно дифференцируемые функции.

Последовательность точек будем, как всегда, строить по итерационной формуле

xk +1 = xk + λk Sk .

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

1) выбрать направление S , которое должно быть возможным и приемлемым, т.е. на этом направлении должны лежать точки, принадлежащие допустимой области X (возможность), и функция f (x) должна в этом направлении убывать (приемлемость);

2) решить, какой величины шаг должен быть сделан в выбранном направлении S .

Вообще говоря, существует много возможных и приемлемых

направлений.

S , т.е. такого, в котором

При выборе «лучшего» направления

функция убывает в наибольшей

степени, минимизируют

< f (x), S >.

 

Функция убывает в направлении S , если это скалярное произведение меньше нуля, т.е. направление S образует острый угол с антиградиентом (рис. 3.27).

S

f ( x )

f ( x )

Рис. 3.27. К выбору допустимых направлений

227

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

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

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

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

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

f ( x )

g(x) = 0

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

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

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

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

должно удовлетворяться условие < g(x), S >< 0 (движение в сторону уменьшения g(x) ), где g(x) – активное ограничивающее не-

равенство (рис. 3.29).

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

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

228

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

g(x)

x

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

g(x) = 0

S S

X (g(x))

Рис. 3.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 . Чаще всего это ограничение заменяют следующим: 1 s j 1,

229

j =1, n , s j – элемент вектора направления S . Таким образом,

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

ра S ( s1 , s2 , K, 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 ,

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

0 ≤ λk

≤ λдоп .

 

 

 

 

 

230