
Исследование операций и методы оптимизации. Часть 1. Лекционный курс
.pdf
110
ШАГ 1.
Задается исходная вершина симплекса.
x0 = (x10 ,...,xn0 )
Задается коэффициент сжатия γ [0,1] и размер симплекса L. Строится симплекс |
|
|||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x0 ... |
|
|
|
x0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x1 ... |
|
|
|
x1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
n |
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(x j ) = |
... ... |
|
|
... |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(9.2) |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
xn−1 ... |
|
xn−1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 j−1 |
|
|
≤ ε |
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 и провести исследующий поиск с целью выявления нового направления минимизации. В конечном итоге возникает ситуация, когда такой поиск не приводит к успеху. В этом случае уменьшается шаг путем введения коэффициента α и возобновляется исследующий поиск.
Схема алгоритма Хука – Дживса
112
Введем следующие обозначения: xk - текущая базовая точка; |
xk−1- предыдущая |
|||||||||||||
базовая точка; 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 ) ? |
|
|
|
|
|
|
|
|
|
|||||
Да: положить xk−1 = 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; |
|
|
|
|
|
|
|
|
|
|
||||
ε =10−4 - параметр окончания поиска. |
|
|
|
|
|
|
|
|
|
|
|
|
||
Итерации начинаются с исследующего поиска |
вокруг |
точки |
x0 , |
которой |
||||||||||
соответствует значение ЦФ f (x0 ) = 272. |
|
|
|
|
|
|
|
|
|
|
|
|
Фиксируя переменную x2 = −4 , дадим приращение x1:
x1 = −4 +1→ f (−3;− 4) = 200 < f (x0 ) → успех.
Далее, фиксируем x1 = −3 и дадим приращение x2 :
x2 = −4 +1→ f (−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 = |
|
|
|
с xk−1, |
||
Итак, |
предположим, что |
0,n −1 |
определены, начиная |
|||||
формулой |
|
|
|
|
|
|
|
|
|
|
xk = xk−1 − λkdk−1, |
|
|
|
|
||
где λk – |
значение величины |
λ, минимизируещее значение одномерной |
функции |
f (xk−1 − λ dk−1).
Теорема. Точка
|
n−1 |
|
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 (xn−1 − λndn−1) = min f (xn−1 − λdn−1) .
λ
Точка xn и является точкой минимума функции f (x), т.е. x* = xn .
Займемся теперь вопросом вычисления сопряженных направлений d0,d1,...,dn−1.
Зададим начальную точку 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 A−1 |
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
λ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 (xk−1))T f (xk ) |
|
(A(xk − xk−1))T (Axk + b) |
|
|
|
|
||||||||||||||||
µk = |
|
( f (xk ) − f (xk−1))T dk−1 |
|
= |
|
(A(xk − xk−1))T dk−1 |
, |
(9.16) |
|||||||||||||||||
|
|
|
|
|
или с учетом условия |
( f (xk ))T f (xk−1) = 0 |
|
|
|
|
|
|
|||||||||||||
µk = |
|
( f (xk ))T f (xk ) |
|
|
= |
(Axk + b)T (Axk + b) |
, |
|
|
|
(9.17) |
||||||||||||||
|
|
|
(A(xk − xk−1))T dk−1 |
|
|
|
|||||||||||||||||||
|
( f (xk ) − f (xk−1))T dk−1 |
|
|
|

|
|
117 |
|
|
|
||
|
|
|
dk = − f (xk ) + µkdk−1, |
(9.18) |
|||
где |
|
|
|
|
|
|
|
xk |
= xk−1 − λkdk−1, |
|
|
(9.19) |
|||
λ |
k |
= |
dkT−1(Axk−1 + b) |
, k =1,2,...,n . |
(9.20) |
||
|
|||||||
|
|
dkT−1Adk−1 |
|
|
|
||
|
|
|
|
|
|
||
В качестве начального направления 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 |
Adk−1 |
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
. |
|
|
|
|
|
|
|
|
(9.22) |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
dkT−1Adk−1 |
|
|
|
|
|
|
|
|
|
||
К такому же результату мы придем, если в формуле (9.16) заменим (xk − xk−1) |
на |
|
|||||||||||||||||
(−λkdk−1) (см. формулу (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 и проведя поиск вдоль прямой.