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

Исследование операций и методы оптимизации. Часть 1. Лекционный курс

.pdf
Скачиваний:
76
Добавлен:
05.02.2023
Размер:
1.74 Mб
Скачать

110

ШАГ 1.

Задается исходная вершина симплекса.

x0 = (x10 ,...,xn0 )

Задается коэффициент сжатия γ [0,1] и размер симплекса L. Строится симплекс

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x0 ...

 

 

 

x0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1 ...

 

 

 

x1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

n

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(x j ) =

... ...

 

 

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(9.2)

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xn1 ...

 

xn1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xn ...

 

 

 

xn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Здесь j-я строка – это координаты j-ой вершины Vj

. ( j =1,...,n +1), где n - размерность

пространства (размерность вектора x ), i – номер координаты i =1,...,n .

 

Определение координат x j

, начиная со второй, производится по формуле

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x j

= x

0 + xɶj

 

, ( j =1,...,n;

 

i =1,...,n) ,

(9.3)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

i

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

где xɶj - матрица размерности (n +1)× n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

0

 

0

...

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p

q

 

q

 

...

 

q

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

n

 

 

 

n

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(xɶj

) = q

 

p

 

q

 

...

 

q

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(9.4)

 

 

 

 

 

 

 

i

 

 

 

 

 

n

 

n

 

 

n

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

... ... ...

... ...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

qn

 

qn

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

qn

 

 

pn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

где

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

L

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

L

 

 

 

 

 

 

 

p

 

=

 

 

 

( n +1 + n −1) ,

 

q = p

 

=

 

 

( n +1 −1).

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

n

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

n

 

 

 

 

 

 

n

2

 

 

 

 

 

 

Векторы соответствующие вершинам V1,...,Vn , определяемые формулой (9.2),

составят одинаковые углы с координатными осями

x ,..., x

n

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ШАГ 2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В вершинах симплекса вычисляется ЦФ f (x j ),

 

j = 0,...,n

 

ШАГ 3.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Проверяем условия:

 

 

x j

x j1

 

 

ε

1

,

 

f (x j ) − f (xj+1)

 

ε

2

 

 

 

 

 

 

 

 

 

 

 

 

 

Если «да», то конец; если «нет», то на ШАГ 4.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (x

j

)

f (x

j+1

) ε 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ШАГ 4.

Находится «наихудшая» вершина симплекса (при поиске минимума «наихудшая» вершина – та, в которой значение функции максимально).

f (xp ) = max{ f (x j ), j =1,n +1}

j

ШАГ 5.

111

Осуществляется расчет координат новой вершины (вершина отражения xp ):

 

 

2

 

n

 

 

 

xɶp =

 

 

xj xp

xp

 

n

 

 

 

j=0

 

 

ШАГ 6.

 

 

 

 

 

 

Если точка xɶp

оказывается «хуже»

всех остальных точек симплекса, то

осуществляется возврат к исходному симплексу с последующим его сжатием относительно «лучшей» из вершин xk

f (xk ) = min{f (x j ), j =1,n +1}

j

xɶs = γxk + (1− γ)xs, s = 0,1,...,n; s k ,

Переход на ШАГ 2.

Если xɶp не является «худшей» в новом симплексе, то перейти на ШАГ 3.

9.2.2 Метод Хука-Дживса

Процедура Хука–Дживса представляет собой комбинацию двух поисков:

а) "исследующий" поиск (для выявления характера локального поведения ЦФ и определения направления движения вдоль "оврагов") с циклическим изменением переменных;

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

Исследующий поиск. Выбирается некоторая исходная точка x0 . Задается величина шага i , которая может быть различной для разных координатных направлений и

изменяться в процессе поиска.

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

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

xkp+1 = xk + (xk xk 1) .

Как только движение по образцу не приводит к уменьшению ЦФ, точка xkp+1 фиксируется в качестве временной базовой точки и вновь проводится исследующий поиск. Если в результате получается точка с меньшим значением ЦФ, чем в точке xk , то она рассматривается как новая базовая точка xk +1. Но если исследующий поиск

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

Схема алгоритма Хука – Дживса

f (x1) = 153.

112

Введем следующие обозначения: xk - текущая базовая точка;

xk1- предыдущая

базовая точка; xk+1 - точка, построенная при движении по образцу;

xk+1 - следующая

p

 

 

 

 

 

 

(новая) базовая точка.

 

 

 

 

 

 

Критерий останова:

 

 

 

x

 

 

 

ε .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Шаг 1. Определить начальную точку x0 ; приращения (шаги)

 

 

i

, i =

1, n

; коэффициент

уменьшения шага α >1; параметр окончания поиска

 

 

 

 

 

.

 

 

 

 

 

Шаг 2. Провести исследующий поиск.

 

 

 

 

 

 

Шаг 3. Был ли исследующий поиск удачным (найдена ли точка с меньшим значением ЦФ)?

Да: переход на Шаг 5. Нет: продолжить, т.е. переход на Шаг 4.

 

 

 

 

 

 

Шаг 4. Проверка на окончание поиска. Выполняется ли

неравенство

 

x

 

 

 

 

ε ? Да:

 

 

 

окончание поиска, т.е. текущая точка аппроксимирует точку экстремума x .

 

Нет: уменьшить приращение i / α; i =1,2, ... ,n . Переход на Шаг 2.

 

 

 

 

 

 

Шаг 5. Провести поиск по образцу: xk+1

= xk

+ (xk

xk 1) .

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

 

Шаг 6. Провести

исследующий поиск,

используя

точку

xk +1 в

качестве временной

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

базовой точки. Пусть в результате получена точка xk +1.

 

 

 

 

 

 

 

 

 

Шаг 7. Выполняется ли неравенство: f (xk +1) < f (xk ) ?

 

 

 

 

 

 

 

 

 

Да: положить xk1 = xk ; xk = xk+1 . Переход на Шаг 5.

 

 

 

 

 

 

 

 

 

Нет: переход на Шаг 4.

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример 9.1. Найти точку минимума ЦФ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (x) = 8x2 + 4x x

2

+ 5x2 ;

 

 

 

 

 

 

 

 

 

 

 

1

1

2

 

 

 

 

 

 

 

 

 

начальная точка:

x0 = [4; 4]T .

 

 

 

 

 

 

 

 

 

 

 

 

 

Решение. Зададим следующие величины:

 

 

 

 

 

 

 

 

 

 

 

x = [1; 1]T - векторная величина приращения шага;

 

 

 

 

 

 

 

 

 

α = 2- коэффициент уменьшения шага x;

 

 

 

 

 

 

 

 

 

 

ε =104 - параметр окончания поиска.

 

 

 

 

 

 

 

 

 

 

 

 

Итерации начинаются с исследующего поиска

вокруг

точки

x0 ,

которой

соответствует значение ЦФ f (x0 ) = 272.

 

 

 

 

 

 

 

 

 

 

 

 

Фиксируя переменную x2 = −4 , дадим приращение x1:

x1 = −4 +1f (3;4) = 200 < f (x0 ) успех.

Далее, фиксируем x1 = −3 и дадим приращение x2 :

x2 = −4 +1f (3;3) =153 < 200 успех.

Таким образом, в результате исследующего поиска найдена точка x1 = [3;3]T ,

в которой значение ЦФ

Так как исследующий поиск был удачным, переходим к поиску по образцу:

x2p = x1 + (x1 x0 ) = [2; 2]T ; f (x2p ) = 68.

113

Далее проводится исследующий поиск вокруг точки x2p . В результате получаем точку x2 = [1;1]T , в которой значение ЦФ f (x2 ) = 17 .

Поскольку f (x2 ) < f (x1), поиск по образцу следует считать успешным, и x2

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

x = [0; 0]T .

Достоинства метода Хука-Дживса: несложная стратегия поиска, простота вычислений, малый объем требуемой памяти (меньше чем в симплексе - методе).

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

Возможные варианты модификации метода Хука - Дживса:

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

б) введение дополнительных правил увеличения и уменьшения приращения переменных и другое.

9.3 Градиентные методы

Предполагается, что целевая функция f (x) непрерывна и имеет, по крайней мере,

непрерывные первые производные. Необходимым условием существования экстремума является наличие стационарной точки ЦФ. Таким образом, основная идея многих методов

оптимизации без ограничений в пространстве Rn заключается в отыскании стационарной

точки x , в которой градиент ЦФ f (x )= 0.

Эта задача эквивалентна решению нелинейной системы уравнений вида:

f (x)

= 0, i =1,n .xi

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

В данном случае речь идет об итерационных процессах, порождающих последовательность точек x0 , x1,, xk , сходящихся к локальному экстремуму функции f в точке x .

На каждом k -ом этапе значение xk+1 определяется выражением: xk+1 = xk + λk dk ,

где dk - направление перемещения, которое может быть:

либо градиентом функции в точке xk , т.е. dk = −f (xk );

либо вычисленным, исходя из направления градиента f (xk );

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

этом случае должно выполняться неравенство вида: f T (xk )dk < 0.

Здесь λk - параметр, характеризующий длину шага.

 

 

 

 

114

Способ

определения dk

и

λk

на каждой итерации связан с особенностями

применяемого

метода. Обычно

выбор

λk осуществляется путем решения задачи

минимизации

f (x) в направлении

dk . Поэтому при реализации изучаемых методов

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

В семействе градиентных методов следует выделить методы с заданным шагом, в которых заранее задаются значенияλk .

Доказано, что построенная последовательность сходится к решению, т.е. xk x , если выполняются два условия:

1)

λk 0 при k → ∞;

 

 

 

 

 

1

 

2)

λk → +∞ (например, λk

=

).

 

 

k =0

 

k

Данная процедура ("метод расходящегося ряда") может оказаться медленной. Критерии останова (наиболее употребительные).

Пусть ε > 0 - заданная точность:

 

 

 

f

 

 

 

 

 

 

 

 

 

 

 

n

 

f

2

 

 

 

 

 

 

 

 

 

 

 

 

 

1) max

 

 

 

≤ ε;

2)

 

 

f

2

=

 

≤ ε;

 

xi

 

 

 

xi

 

i=1,n

 

 

 

 

 

 

 

 

 

 

 

i=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f ( xk+1) ( xk )

 

 

 

 

 

 

 

 

n

 

 

f

 

2

 

 

 

 

 

 

 

 

 

3)

≤ ε; 4)

 

f

 

=

 

 

 

≤ ε;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i=1

 

 

xi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5)x= xk+1 xk ≤ ε .

9.3.1Метод сопряженных направлений

Данный метод и его модификации являются наиболее эффективными алгоритмами прямого поиска.

Метод ориентирован на решение задач с квадратичными целевыми функциями и

основывается на фундаментальных теоретических результатах.

 

 

Основная идея алгоритма: если квадратичная функция f (x), x = (x ,..., x

n

) ,

1

 

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

Рассмотрим общие принципы. Пусть имеем квадратичную функцию ( в окрестности точки оптимума любую нелинейную функцию можно аппроксимировать квадратичной функцией) вида

 

1

 

 

T

 

T

f (x) =

 

x

 

 

Ax + b x + c ,

2

 

 

 

 

 

 

 

 

 

где A – положительно определенная симметричная матрица порядка n × n; b n -

вектор (b ,...,b

n

)T ;

c - константа.

1

 

 

 

 

 

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

x0 , минимизировать последовательно

f (x) по n линейно независимым направлениям

d0 , d1,..., dn−1 , обладающим свойством быть попарно сопряженными относительно квадратичной формы f (x).

115

Это условие записывается в виде

 

i, j (i, j = 0,...,n 1) dT

Ad

j

= 0.

(9.3)

 

 

 

 

i

 

 

 

 

 

точки xk , k =

 

 

 

с xk1,

Итак,

предположим, что

0,n 1

определены, начиная

формулой

 

 

 

 

 

 

 

 

 

 

xk = xk1 − λkdk1,

 

 

 

 

где λk

значение величины

λ, минимизируещее значение одномерной

функции

f (xk1 − λ dk1).

Теорема. Точка

 

n1

 

xn = x0

λ j+1 d j

(9.4)

j=0

полученная на n – ом этапе, является точкой минимума функции f (x), т.е. будет

удовлетворять соотношению:

 

f (xn ) = Axn + b = 0 .

(9.5)

Таким образом, начиная с точки x0 шаг за шагом строится последовательность x1,x2,..., xn , определенная соотношениями:

f (x1) = f (x0 − λ1d0) = min f (x0 − λd0) ;

λ

f (x2) = f (x1 − λ2d1) = min f (x1 − λd1);

λ

f (xn ) = f (xn1 − λndn1) = min f (xn1 − λdn1) .

λ

Точка xn и является точкой минимума функции f (x), т.е. x* = xn .

Займемся теперь вопросом вычисления сопряженных направлений d0,d1,...,dn1.

Зададим начальную точку x0 , начальное направление d0 и вычислим точку

x1 по

формуле

 

 

 

x1 = x0 − λ d

0

,

(9.10)

1

 

 

где λ1 – скалярная величина, определяется из условия минимума функции f (x) вдоль направления d0, т.е. из условия f T (x1)d0 = 0 (см. формулу (9.7) при k =1). Определим направление d1 по формуле

d = − f (x1) + µ d

0

(9.11)

1

1

 

так, чтобы оно было сопряжено с направлением d0, т.е.

 

dT

Ad = 0 .

 

(9.12)

0

1

 

 

Здесь µ1 – скалярный параметр, который мы будем определять из уравнения (9.12). Разложим градиент f (x) в окрестности точки x0 и подставим x = x1:

116

f (x1) f (x0) = A(x1 x0) . С учетом (10) получим

f (x1) f (x0) = −λ1Ad0 . Отсюда получим выражение для d0T :

 

 

 

 

 

d0T = −

( f (x1) f (x0))T A1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

λ1

 

 

 

 

.

 

 

 

 

 

 

(9.13)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Подставим выражения (9.11) и (9.13) в формулу (9.12), получим:

 

 

 

 

 

 

 

 

 

 

( f (x1) f (x0))T (f (x1) + µ1d0 )= 0. Отсюда выражение для µ1:

 

 

µ =

( f (x1) f (x0))T f (x1)

=

(A(x1 x0))T (Ax1 + b)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

(9.14)

 

( f (x1) f (x0))T d0

 

 

 

 

(A(x1 x0))T d0

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Если потребовать выполнения дополнительного условия ( f (x1))T f (x0) = 0,

то вместо (14) получим

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( f (x1) f (x0))T f (x1)

 

(Ax1 + b)T (Ax1 + b)

 

 

 

 

 

 

µ =

 

 

 

 

 

 

 

 

 

=

 

 

 

 

 

 

 

.

(9.15)

 

 

 

( f (x1) f (x0))T d0

 

 

(A(x1 x0))T d0

 

 

 

1

 

 

 

 

 

 

 

 

 

 

Далее, направление d

2

находим по формуле d

2

= − f (x2 ) + µ

2

d , где x2

= x1

− λ

2

d .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

1

Проводя аналогичные рассуждения, получим для µ2 :

 

 

 

 

 

 

 

 

 

 

 

 

µ2 =

( f (x2 ) f (x1))T f (x2 )

=

(A(x2 x1))T (Ax2 + b)

 

 

 

 

 

 

 

 

 

 

 

 

(A(x2 x1))T d1

.

 

 

 

 

 

 

 

 

 

( f (x2 ) f (x1))T d1

 

 

 

 

 

 

 

 

 

 

Потребовав выполнения дополнительного условия ( f (x2 ))T f (x1) = 0,

 

 

 

 

 

 

 

получим

 

 

 

 

 

 

 

 

 

 

 

 

 

 

µ2 =

( f (x2 ) f (x1))T f (x2 )

=

(Ax2 + b)T (Ax2 + b)

 

 

 

 

 

 

 

 

 

 

 

 

 

(A(x2 x1))T d1

 

 

 

 

 

 

 

 

 

 

( f (x2 ) f (x1))T d1

 

 

 

 

 

 

 

 

 

 

На k -ом шаге получим:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( f (xk ) f (xk1))T f (xk )

 

(A(xk xk1))T (Axk + b)

 

 

 

 

µk =

 

( f (xk ) f (xk1))T dk1

 

=

 

(A(xk xk1))T dk1

,

(9.16)

 

 

 

 

 

или с учетом условия

( f (xk ))T f (xk1) = 0

 

 

 

 

 

 

µk =

 

( f (xk ))T f (xk )

 

 

=

(Axk + b)T (Axk + b)

,

 

 

 

(9.17)

 

 

 

(A(xk xk1))T dk1

 

 

 

 

( f (xk ) f (xk1))T dk1

 

 

 

 

 

117

 

 

 

 

 

 

dk = − f (xk ) + µkdk1,

(9.18)

где

 

 

 

 

 

 

 

xk

= xk1 − λkdk1,

 

 

(9.19)

λ

k

=

dkT1(Axk1 + b)

, k =1,2,...,n .

(9.20)

 

 

 

dkT1Adk1

 

 

 

 

 

 

 

 

 

В качестве начального направления d0 можно взять, например,

 

 

 

d0 = − f (x0) = −(Ax0 + b).

f (x) методом

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

сопряженных направлений.

 

 

 

Шаг 0. Задаем начальную точку x0 и вычисляем начальное направление d0 по

формуле (19).

 

 

 

 

 

 

 

Шаг k . По формуле (9.20) вычисляем λ

k

и затем по формуле (9.19) — точку xk .

 

 

 

 

 

 

 

Затем по формулам (9.16) (либо (9.17)) и (9.18) вычисляем параметр µk

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

dk . При k = n процесс вычислений заканчиваем. В качестве точки минимума берем

точку xn .

 

 

 

 

 

 

 

Замечание. Формула для µk может быть получена непосредственно из (9.18) с учетом

условия (9.12) dT Ad

= 0 . В результате имеем

 

 

 

 

 

 

 

 

 

 

 

 

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

µk =

( f (xk ))T

Adk1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

(9.22)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dkT1Adk1

 

 

 

 

 

 

 

 

 

К такому же результату мы придем, если в формуле (9.16) заменим (xk xk1)

на

 

(−λkdk1) (см. формулу (9.19)).

 

 

 

 

 

 

 

 

 

 

 

Пример 9.2. Найти минимум функции

f (x) = 8x

2

+ 4x x

2

+ 5x2

+ x x

+ 2x x

3

+ x2

 

 

 

 

 

 

 

 

 

1

1

2

1

3

2

3

методом сопряженных направлений. Начальная точка x0 = (5,5,5)T .

 

 

 

 

Решение. Вычислим матрицу Гессе A = 2 f (x)

и

вектор коэффициентов линейной

части

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

16

4

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A =

4

10

2

, b

=

0

.

 

 

 

 

 

 

 

 

 

 

 

 

1

2

2

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Тогда функцию f (x) можно представить в матричной форме f (x) = 12 xT Ax + bT x + c,

где c = 0 .

Шаг 0. Вычисляем начальное направление d0 = −(Ax0 + b) = −(105,80,25)T .

 

dT (Ax0

+ b)

 

Шаг 1. Вычисляем λ =

0

 

= −0.056 ,

 

 

1

d0T Ad0

 

 

 

118

x1 = x0 − λ d

 

= (0.884, 0.516,3.599)T ,

µ

=

(A(x1 x0))T (

Ax1 + b)

= 0.011,

0

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

(A(x1 x0))T d0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d

 

= − f (x1) + µ d

0

= −(Ax1

+ b) + µ d

0

= (7.292,9.734,7.630)T .

 

 

1

 

 

 

 

1

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dT (Ax1 + b)

 

 

 

 

 

 

 

 

 

 

 

 

Шаг 2. Вычисляем λ2

=

 

1

 

 

= −0.132,

 

 

 

 

 

dT

Ad

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

x

2 = x1 − λ

 

d = (0.085, 0.777,2.584)T

, µ

 

=

(A(x2 x1))T

(Ax2 + b)

= 0.095,

2

2

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(A(x2 x1))T d1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d

2

= − f (x2 ) + µ

2

d

= −(Ax2 + b) + µ

2

d

 

= (0.147,1.333,4.429)T .

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dT (Ax2 + b)

 

 

 

 

 

 

 

 

 

 

 

 

Шаг 3. Вычисляем λ3

=

 

2

 

 

= −0.583,

 

 

 

 

 

 

d2T

Ad2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x3 = x2 − λ3d2 = (0, 0,0)T . Точка минимума x* = x3 = (0,0,0)T .

9.3.2 Метод наискорейшего спуска (метод Коши)

Известный французский математик Коши Огюстен Луи (21.08.1789–23.05.1857) первым использовал аналогичный алгоритм для решения системы линейных уравнений.

В этом широко используемом методе (МК) λk выбираются так, чтобы минимизировать функцию по λ:

g (λ) = f xk − λ f (xk )

на множестве значений λ ≥ 0 (одномерная минимизация).

Алгоритм Коши

Шаг 1.

 

Выбрать начальную точку x0 .

 

 

Шаг 2.

 

На k -ой итерации, где d

k

= − f (xk ), найти такое λ

k

, что

 

 

 

 

 

 

 

 

 

f (xk + λ

k

d

k

)= min f (xk + λd

k

).

 

 

 

 

 

λ≥0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Положить xk+1 = xk + λk dk . Шаг 3. Проверка критерия останова.

Да: окончание поискаконец. Нет: k = k + 1, Ш. 2.

МК обладает устойчивостью, т.е. при достаточно малом значенииλk

обеспечивается выполнение неравенства:

f (xk +1 )f (xk ).

119

МК позволяет существенно уменьшить значение ЦФ (быстро спуститься на "дно оврага")

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

Недостаток: для некоторых типов функций сходимость может оказаться медленной. В самом деле, если λk минимизирует функцию

 

g(λ) = f (xk + λd

k

), то должно быть

dg (λk )

 

 

 

 

 

 

 

= d

 

f (xk + λ

 

 

d

 

)= dT f (xk +1 )= 0,

 

k

k

k

dλ

 

 

 

 

 

k

 

 

 

 

 

 

 

 

 

 

откуда вытекает равенство:

dkT dk +1 = 0,

которое доказывает, что последовательные направления ортогональны. В случае

Рис. 9.2. Метод Коши-«зацикливание» траектории спуска

ярко выраженной нелинейности ("овражности") ЦФ происходит "зацикливание" (см. рис. 9.2).

Пример 9.3. Методом Коши найти

 

 

 

 

 

 

 

 

 

 

 

 

min f (x)= 8x2

+ 4x x

2

+ 5x2

;

x0 = [10;10]T .

1

 

 

 

 

1

2

 

 

 

 

 

 

 

 

 

 

 

 

 

Критерии останова:

 

 

 

f (xk )

 

 

 

≤ ε или

 

 

 

 

xk +1 xk

 

 

 

≤ ε.

 

 

 

 

 

 

 

 

 

 

Решение. Вычислим компоненты градиента:

 

f

= 16x + 4x

2

;

 

 

 

 

f

= 10x

2

+ 4x .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

x2

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

x1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (x0 )построим первое приближение:

 

 

С помощью формулы xk +1 = xk

− λ

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1 = x0 − λ0 f (x0 ).

Выберем λ0 таким образом, чтобы минимизировать функцию по λ:

f (x1 )min → λ0 = 0,056 .

λ

Следовательно: x1 = [1,18;2,14]T . Далее найдем точку

x2 = x1 − λ1 f (x1),

вычислив градиент в точке x1 и проведя поиск вдоль прямой.

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