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

Методы оптимизации алгоритмические основы задач оптимизации. Курс лекций

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
Вычитая из второго равенства первое, получаем
(B(2) – A(2))
T
Cd = 0, (2.16)
что и является доказательством теоремы.
Построение вектора S, сопряженного с вектором d, показано на
рис. 2.3.
Рис. 2.3. Геометрическая интерпретация теоремы
о сопряженных направлениях
Рассмотренная теорема распространяется на N-мерное простран-
ство, что приводится ниже без доказательства.
Справедливо следующее утверждение. Пусть в N-мерном простран­стве x имеются M взаимно сопряженных направлений s(j), j = 1, M. Вы­берем две произвольные несовпадающие точки A(1) и B(1). Найдем минимумы q(x) из точки A(1) последовательно по всем
направлениям s(j), начиная каждый раз движение из точки предыдущего минимума. Последний минимум, найденный в направлении s(M), обозначим че­рез A(2). Точно так же найдем из точки B(1) минимум по всем на­правлениям B(2).
Тогда направление s(M + 1) = B(2) – A(2) является C-сопряженным
со всеми направлениями s(j).
Произвольный
выбор двух начальных точек и начального направ­ления неудобен для построения алгоритма. Более рациональное пра­вило предложено Пауэллом. Рассмотрим его для двумерного про­странства x.
21
Выберем произвольно одну начальную точку x(0). Пусть A(1) =
A
(2)
2
=
2
x
x
1
x
(0) = A
(1) B
B
(2)Sx
*
= x(0) и направление d равно орту e(2). Найдем точку A(2) – минимум
функции f(x) в направлении d, выходящем из точки x(0). Найдем те­перь точку B(1) как минимум f(x) в направлении орта e(1), выходяще­го из точки A(2) (рис. 2.4).
(1)
d = e(2)
Рис. 2.4. Иллюстрация алгоритма Пауэлла
Затем найдем точку B(2) как минимум f(x) в направлении d, выхо­дящем из точки B(1) (т.е. орта e(2)). По определению направление S = = B(2) – A(2) является C-сопряженным с направлением орта e(2). Найдем точку x
*
– минимум f(x) в направлении S, выходящем из точ-
ки B(2) Если f(x) является квадратичной формой, то найденная точка есть минимум f(x) по x. В противном случае нужно проверить усло­вие минимума, т.е. факт увеличения f(x) в окрестности найденной точки x
f(x
*
:
*
) < f(x* + dx) (2.17)
при малых приращениях dx по всем компонентам вектора x.
Если условие минимума не выполнено, нужно повторить поиск по сопряженным направлениям. Для этого в качестве нового направле­ния d принимаем найденное направление S. Новая точка A(1) есть
B(2). Новая точка A(2) уже найдена – это x
*
. Новая точка B(1) опре-
деляется как минимум f(x) в направлении e(2), выходящем из точки
22
A(2). Новая точка B(2) есть минимум f(x) в новом направлении d, вы- ходящем из B(1).
Далее определяем новое направление S. Таким образом, в очередном цикле поиска в паре направлений первое из них заменяется на второе, а второе – на вновь найденное направление, сопряженное со вторым.
Цикл повторяется, пока не будет выполнено
условие минимума.
В многомерном случае алгоритм Пауэлла может выглядеть сле­дующим образом.
1. Задать x(0), N, k = 1 (счетчик числа проходов по сопряженным
направлениям) и начальную систему направлений в виде ортов: d(i) =
= e(i); i = 1, N.
2. Найти точку A2 как минимум f(x) в направлении d(N), выходя-
щем из
точки x(0).
3. Проверить условие k > = N. Если оно не выполнено, идти к 5.
4. Проверить условие минимума. Если оно выполнено, идти к 9,
иначе k = 1.
5. Присвоить xmin(0) = A2. Найти последовательно xmin(i) как
минимум f(x) из точки xmin(i – 1) в направлении d(i), i = 1, N. При­своить B2 = xmin(N).
Вычислить сопряженное направление S = B2 – A2.
6.
7. Произвести замену направлений: d(i) = d(i + 1), i = 1, N – 1, d(N) = S.
8. k = k + 1, идти к 2.
9. Вывод результатов, STOP.
Вообще говоря, в этом алгоритме целесообразно еще предусмот­реть контроль количества возвратов к оператору k = 1 (п. 4) во избе­жание зацикливания в случае функций сложной формы.
2.2.3. Методы случайного поиска
Методы случайного поиска предусматривают генерацию серии случайных направлений из очередной точки поиска и выбор из этой серии направления, в котором функция уменьшается. Методы разли­чаются способом выбора направления и способом перемещения в очередную точку.
Пусть r(l) – некоторый случайный вектор, где l – индекс, озна­чающий порядковый номер
генерации. При этом l принимает значе­ния от 1 до L, где через L обозначено общее число генераций. Ком­понентами r(l) являются случайные числа в интервале (–1, +1). Обычно источником получения случайных чисел является генератор, производящий числа E в интервале (0, 1). Компонента вектора r(l) вычисляется по формуле
23
r
(l) = –1 + 2Ej; j = 1, N. (2.18)
j
Количество генераций L выбирают достаточно большим. Для двумерного пространства обычно L > 10. Для N-мерного пространст­ва это число порядка 10N. Суммарное число включений генератора случайных чисел, таким образом, может быть равно NL.
После того как сгенерирован вектор r(l), вычисляется очередная пробная точка
x^(k, l) = x(k) +
δr(l),
где x(k) – очередная точка поиска;
δ – так называемый пробный шаг (намного меньший единицы).
Затем вычисляется приращение функции:
Δ f(k, l) = f(x^(k, l) – f(x(k)). (2.19)
Существуют два варианта определения направления S(k):
– первый – в качестве S(k) фиксируется первый из векторов r(l), при котором значение
Δ f(k, l) отрицательное;
– второй – генерируются все L векторов r(l) и определяется ин­декс lmin, при котором обеспечивается минимум
Δ f(k, l) по l. При
этом S(k) = r(lmin).
После выбора направления производится рабочий шаг: x(k + 1) = x(k) + α(k)S(k). (2.20)
Здесь также имеются два варианта перемещения в заданном на­правлении:
– первый – α (k) = α = const;
– второй – x(k + 1) определяется в результате поиска локального минимума из точки
x(k) в направлении S(k).
Для генерации псевдослучайных чисел E можно использовать следующую процедуру: переменные z и zm объявляются длинными целыми, в начале главной программы переменная z обнуляется, а пе­ременной zm присваивается максимальное значение. Затем выпол­няются операторы:
E = sin(20.5z – 8.5cos(10.5z)) E = (E + 1)/2 (2.21)
z = z + 1 i
24
f z > zm – 1 then z = 0
Правило останова для метода случайного поиска: Δ f(k, l) ≥ 0 для
)
k
)()
)()
i
x
ε
всех l.
Несмотря на то что генератор псевдослучайных чисел является достаточно короткой процедурой, большое количество генераций делает иногда рассмотренные варианты метода неэффективными. В связи с этим имеет смысл испытать на эффективность методы с ма­лым числом генераций. Но просто уменьшить число генераций нель­зя, так как
при этом сразу уменьшается вероятность нахождения эф­фективного направления в связи с ограниченным выбором. Компро­миссным решением является метод случайного поиска с адаптацией.
В этом методе для k-го шага генерируется только один случайный вектор r(k). Очередная точка x(k + 1) вычисляется по следующим формулам:
x(k + 1) = x(k) +
α
kk
()
S
k
+ (1 – β (k)) r(k));
()()(
bS
S(k) = γS(k –1) + (1 – γ) (x(k) – x(k – 1));
Δf(k) = f(x(k) – f(x(k –1)); (2.22) α(k) =
β(k) =
(
αα
kk
−−
11
() ()
αα
−−
kk
11
(
αα
kk
−−
11
() ()
αα
−−
kk
11
,
+Δ Δ
−Δ Δ
+Δ Δ
−Δ Δ
если <0;
если >0;
, ,
если <0;
если >0,
,
f
f
f
f
где Δα, Δβ и γ – константы, меньшие единицы.
Адаптация состоит в настройке коэффициентов α(k) и β(k) – уве­личение при удачном шаге (уменьшение функции) и уменьшение при неудачном шаге.
2.2.4. Метод покоординатного спуска
В методе покоординатного спуска, судя по его названию, в каче­стве направления очередного шага поиска S(k
) принимается один из ортов. В n-мерном пространстве переменных орты выбираются по порядку: e
, e2, ..., en. Алгоритм поиска минимума в этом методе реа-
1
лизован следующим образом. На k-м шаге поиска выбирается оче­редной орт e
– точность поиска.
где ε
x
и производится пробный шаг по переменной xi:
i
xx
=+
,
i
25
В пробной точке вычисляется значение функции:
( ( )) ( ( ), ( ), ..., ( ),..., ( )).
(()) (()) (()) 0,
i
x
ε
fxk fxk xk xk xk=
iin
12
(2.23)
Если разность
S(k) = e
и производится поиск локального минимума в найденном
i
fxk fxk fxkΔ =−< то принимается
ii
направлении (напомним, что это рекомендуется сделать методом «золотого сечения»).
В противном случае делается пробный шаг
xx
=−
.
i
Если при этом в пробной точке функция уменьшилась, то в каче-
стве направления поиска принимается S(k) = –e
и также производит-
i
ся поиск локального минимума в направлении S(k).
Найденная таким образом точка принимается в качестве x(k + 1).
Если же функция увеличивается в обеих пробных точках (и при шаге +ε щий орт e
, и при шаге – εx), то для пробного шага выбирается следую-
x
.
i + 1
Останов алгоритма происходит по признаку: функция f(x) увели­чивается во всех пробных точках.
Первый пробный шаг из точки x(0) производится по орту e
.
1
Правило останова является прямым аналогом проверки условия ми­нимума по признаку возрастания функции в ε
-окрестности точки x(k).
x
Однако для функций сложной формы возрастание функции только по ортам не является достаточным признаком минимума. В этом случае все же требуется сканирование ε
-окрестности точки останова.
x
2.3. Методы первого порядка
2.3.1. Метод градиента
Градиентные методы основаны на определении направления спуска к минимуму, обеспечивающему максимальное уменьшение значения функции из очередной точки поиска x(k) (при относительно малом шаге Δx).
Запишем разложение функции f(x) в окрестности точки x(k) по формуле Тейлора:
f(x) = f(x(k)) + (grad f(x(k)))
и ограничимся двумя первыми членами разложения ввиду малого значения Δx.
26
T
Δx + ... (2.24)
Отсюда
f(x) = f(x) – f(x(k)) = (gradf(x(k)))TΔx. (2.25)
Δ
Скалярное произведение справа максимально при коллинеарности
соответствующих векторов, т.е. если Δx = α(grad f(x(k))), α = const.
Следовательно,
Δx(k) = x(k + 1) – x(k) = – αgrad f(x(k)). (2.26)
Знак «минус» поставлен с учетом того, что функция должна
уменьшаться. Поэтому в формуле
x(k + 1) = x(k) + αS(k
) (2.27)
нужно принять S(k) = –grad f(x(k)).
Компоненты градиента вычисляются так же, как в разд. 2.4. В качестве правила останова в методе градиента применяется условие
||grad f(x(k))|| ≤ ε
. (2.28)
g
Однако оно «срабатывает», только если градиент в точке мини­мума существует. В противном случае для гарантированного остано­ва алгоритма нужно добавить еще два условия:
|Δf(x(k))| ≤ ε
; ||Δx(k)|| ≤ εx. (2.29)
f
Вектор-градиент в точке x(k) перпендикулярен касательной к ли­нии уровня функции, проходящей через эту точку. Траектория поис­ка минимума методом градиента показана на рис. 2.5.
2.3.2. Метод наискорейшего спуска
Метод наискорейшего спуска отличается от метода градиента способом вычисления точки x(k + 1): точка эта находится как ло­кальный минимум из точки
x(k) в направлении
S(k) = –grad f(x(k)).
Траектория поиска минимума показана на рис. 2.6.
Надо отметить, что геометрически траектория наискорейшего спуска длиннее траектории метода градиента. Но эта траектория имеет больше точек, где вычисляется градиент, и поэтому проигры­вает по числу операций.
27
x
x
x
x
*
1
2
x
(2)
x
(1)
x
(0)
x
*
Рис. 2.5. Траектория поиска минимума методом градиента
(0)
Рис. 2.6. Траектория поиска минимума методом наискорейшего спуска
28
2.3.3. Метод сопряженных градиентов
.
2
xCx
.
ll
Метод градиента теряет эффективность при поиске минимума функций сложной формы. Это в первую очередь касается функций с переменной кривизной поверхности (резкая смена значений произ­водных), а также «овражных» функций. В методе сопряженных гра­диентов используется идея вычисления некоторого среднего направ­ления по градиентам в нескольких точках.
вывода аналитической процедуры метода предполагается, что
Для в окрестности очередной точки x(k) функция аппроксимируется квадратичной формой:
T
f(x) = a + b
T
x +
(2.30)
При условии что матрица C является симметрической, справедли­во следующее выражение для градиента:
grad f(x) = b + Cx. (2.31)
Для более короткой записи выражений введем обозначения:
g(k) = grad f(x(k)); Δx(k) = x(k + 1) – x(k). (2.32)
Запишем выражение для приращения Δg(k) градиента между точ­ками x(k) и x
(k + 1):
Δg(k) = g(k+1) – g(k) = C(x(k+1) – x(k)) = CΔx(k). (2.33)
В методе сопряженных градиентов предполагается, что очередная точка x(k + 1) находится как локальный минимум из точки x(k) в на­правлении S(k), вычисляемом по формуле
1
k
−
() ()
S
S(k) = –g(k) +
∑
l
=
γ
0
(2.34)
При этом S(0) = –g(0).
Поскольку x(k + 1) есть локальный минимум в направлении S(k), то градиент в точке x(k + 1) перпендикулярен направлению S(k), по­скольку это направление является касательной к линии уровня функ­ции (рис. 2.7). Поэтому
T
g(k + 1)
S(k) = 0. (2.35)
29
Рис. 2.7. Взаимное положение векторов S(k) и g(k + 1)
Значения множителей γ(l) выбираются таким образом, чтобы на­правление S(k) было C-сопряженным со всеми ранее найденными направлениями S(l) (l = 0, k – 1).
Напомним, что условием C-сопряженности является
T
S(k)
CS(l) = 0. (2.36)
Для получения формулы, по которой вычисляются коэффициенты γ(l), рассмотрим начало поиска из точки x(0). Как упоминалось выше, S(0) = –g(0). В этом направлении найдена точка x(1). Построим на­правление S(1):
S(1) = –g(1) + γ (0) S(0) = –g(1) – γ (0)g(0). (2.37)
Наложим ограничение, следующее из условия C-сопряженности:
T
S(1)
CS(0) = 0.
Отсюда
T
(g(1) + γ (0)g(0))
CS(0) = 0. (2.38)
Но поскольку x(1) = x(0) + α(0) S(0) (где α(0) есть некоторое чис­ло), то
30
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]