- •Новокузнецк
- •Общие положения
- •1. Постановка задачи
- •2.1 Поисковые методы.
- •2.1.1 Метод сканирования.
- •2.1.2. Метод циклического координатного поиска Гаусса-Зейделя
- •2.1.2 Метод прямого поиска Хука - Дживса.
- •2.1.3. Метод Розенброка
- •2.2.1. Симплекс метод
- •2.2 Методы поиска экстремума функции, использующие расчет значений функции в вершинах многогранника.
- •2.2.2. Метод Нелдера и Мида.
- •2.3 Методы с использованием производных 1-го порядка
- •2.3.1 Градиентный метод
- •2.3.2. Метод наискорейшего спуска.
- •2.3.3 Метод крутого восхождения.
- •2.4 Методы с использованием производных 2-го порядка
- •2.4.1. Метод сопряженных направлений.
- •Алгоритмы и примеры решения задач многомерной оптимизации
2.1.3. Метод Розенброка
Метод Розенброка является итерационной процедурой, имеющей некоторое сходство с исследующим поиском Хука и Дживса. Отличие состоит в том, что с помощью дискретных шагов или одномерной оптимизации поиски осуществляются вдоль системы ортонормированных направлений S1(k), …, Sn(k), полученных при помощи процедуры Грама-Шмидта.
На
первой итерации процесс поиска из
начального приближения X(1)
осуществляется вдоль координатных
осей. Результатом этого процесса будет
точка X(2).
После этого происходит смена направлений.
Причем единичный вектор направления
совпадает с вектором перехода изX(1)
в X(2),
а
достраивается ортогонально к
.
В общем случае набор ортонормированных
векторов
на
(k+1)-м
этапе вычисляется при помощи следующих
соотношений
;
;
;
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
;
,
где ||ai|| - нормаai, являющаяся вектором перехода изX(k)вX(k+1)по направлениям.
Векторы ai рассчитываются по формуле:
![]()
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
![]()
где
- величина шага, равная переходу изX(k)вX(k+1)по направлениям.
Алгоритм метода Розенброка с минимизацией по направлению.
Начальный
этап.
Пусть
0 - скаляр, используемый в критерии
остановки. Выбрать в качестве
координатные
направления, начальную точку X(1),
положить Y(1) = X(1),
k = j = 1
и перейти к основному этапу.
Основной
этап. Шаг 1.
Найти j* - оптимальное
решение задачи минимизации f(Y(j) + j
)
и положить Y(j+1) = Y(j) + j*
.
Если j n,
то заменить j
на j + 1
и вернуться к шагу 1. В противном случае
перейти к шагу 2.
Шаг 2. Положить X(k+1) = Y(n+1). Если ||X(k+1) - X(k)|| , то остановиться; в противном случае положить Y(1) = X(k+1), заменить k на k + 1, положить j = 1 и перейти к шагу 3.
Шаг
3. Построить
новое множество линейно независимых и
взаимно ортогональных направлений в
соответствии с (2.5) и (2.6). Обозначить
новые направления через
и вернуться к шагу 1.
Алгоритм метода Розенброка с дискретным шагом.
Начальный
этап. Выбрать
число 0
для остановки алгоритма, коэффициент
растяжения 1
и коэффициент сжатия (-1,
0). Взять в качестве
координатные
направления и выбрать 1, …, n
0
начальную длину шага вдоль каждого из
направлений. Выбрать начальную точку
X(1),
положить Y(1) =
X(1),
k = j = 1.
При этом X(k)
- координаты минимальной точки на k-той
итерации, Y(j)
- координаты точки на j-том
шаге каждой итерации. Перейти к основному
этапу.
Основной
этап. Шаг 1.
Если f(Y(j) + j
) f(Y(j)),
то шаг по j-му
направлению считается “успешным”.
Положить Y(j+1) =Y(j) + j
и заменить
j
на j.
Если же f(Y(j) + j
)
f(Yj),
то шаг считается “неудачным”. Положить
Y(j+1) = Y(j)
и заменить j
на j.
Если j n,
то заменить j
на j + 1
и вернуться к шагу 1. В противном случае,
т.е. при j = n
перейти к шагу 2.
Шаг 2. Если f(Y(n+1)) f(Y(1)), т. е. если хотя бы один спуск по направлению при шаге 1 оказался успешным, положить Y(1) = Y(n+1), j = 1 и повторить шаг 1. Пусть f(Y(n+1)) = f(Y(1)), т.е. каждый из n последних спусков по направлению на шаге 1 был неудачным. Если f(Y(n+1)) f(X(k)), т.е. по крайней мере один удачный спуск встретился в течении k-й итерации на шаге 1, то перейти к шагу 3. Если f(Y(n+1)) = f(X(k)), т.е. не было не одного удачного спуска по направлению, то остановиться. При этом X(k) является приближенным оптимальным решением, если |j| для всех j. В противном случае положить Y(1) = Y(n+1), j = 1 и перейти к шагу 1.
Шаг
3. Положить
X(k+1) = Y(n+1).
Если ||X(k+1) - X(k)|| ,
то остановиться; X(k+1)
- приближенное оптимальное решение. В
противном случае вычислить 1,
…, n
из соотношения
построить
новые направления, обозначить их через
положитьY(1) = X(k+1),
заменить k
на k + 1
положить j = 1
и перейти к шагу 1.
Дискретные шаги выбираются вдоль n направлений поиска на шаге 1. Если движение вдоль Sj оказалось успешным, то j заменяется на j, если же на этом направлении постигла неудача, то j заменяется на j. Так как 0, то неудача приводит к сдвигу в обратном направлении вдоль j-го вектора на следующей реализации шага 1. Шаг 1 повторяется до тех пор, пока неудача будет иметь место при спуске по каждому направлению поиска. В этом случае строятся новые направления поиска.
Пример расчета экстремума функции методом Розенброка с дискретным шагом.
Постановка
задачи.
Минимизировать f(X) = (x1 - 2)4 + (х1 - 2х2)2
с точностью =0,01.
Эта функция имеет минимум в точке
X* = [2 1]Т,
где f(X) =
0. Выбираем начальное приближение
X(1) = [2.5
2.5]Т
и параметры алгоритма: 1 = 2 = 0,5;
= 3;
= 0,5;
направления начального поиска совпадают
с координатными осями
= [1
0]Т,
= [0
1]Т.
Исследующий поиск.
Вычислим f(Y(2)) в точке 2
Y(2) = 
Здесь f(Y(2)) = 5,0, т.е. имеет место “удача”, поэтому шаг по х1 увеличивается 1 = 30,5 =1,5. Затем вычисляем f(Y(3)) в точке 3
Y(3) = 
Здесь f(Y(3)) = 10,0, т. е. “неудача”, поэтому шаг по х2 уменьшается и направление изменяется на противоположное 2 = -0,50,5 = -0,25.
При наличии одной “удачи” поиск продолжаем. Считаем Y(1) = Y(3).
Вычисляем f(Y(2)) в точке 4
Y(2) = 
Здесь f(Y(2))=39,31, что говорит о “неудаче”, поэтому величина шага уменьшается 1 = -1,50,5 = -0,75.
Рассчитываем f(Y(3)) в точке 5
Y(3) = 
Здесь f(Y(5)) = 3,25. Следовательно, шаг является успешным, 2 = 30,25 = 0,75
Поиск продолжается аналогичным образом до 9 точки. На этом первый исследующий поиск заканчивается, т. к. два последних расчета 8 и 9 неудачны. В качестве результата принимается координата [3 1,5] 7 точки, которая обозначается за X(2) = Y(1).
Построение
новых направлений поиска.
Новое
направление
совпадает с вектором перехода изX(1)
в X(2),
а
достраивается ортогонально к
.
Рассчитаем единичные направления
по формуле (2.5), а векторыа1(1)
и а2(1)
по формуле (2.6).
Определяем
составляющие шага где
перехода изX(1) = [2.5
2.5]Т
в X(2) = [3
1,5]Т.
=3-2,5=0,5,
=1,5-2,5=-1
Находим компоненты векторов
а1(1) = 0,5
;а2(1) = -1
;
Рассчитываем
направления
и![]()
=[0,45-0,89]T
b2(1)=
;

На этом завершена первая итерация метода. Точка с 10 по 13 соответствуют результатам исследующего поиска на второй итерации. После 16 итераций получается следующий результат: X(*) = [1,99959 0,99979]; f(X(*)) = 0,28510‑13, что указывает на высокую эффективность метода. Результаты расчетов двух итераций метода с использованием табличного процессора EXСEL представлены в таблице 2.3. Траектория поиска приведена на рис.2.3.
Таблица 2.3
Расчет минимума функции f(X) = (x1 - 2)4 + (х1 - 2х2)2 методом Розенброка.
|
1. Исследующий поиск | |||||
|
№ |
x1 |
x2 |
s1 |
s2 |
f(x) |
|
1 |
2.50 |
2.50 |
|
|
6.313 |
|
2 |
3.00 |
2.50 |
0.50 |
0.00 |
5.000 |
|
3 |
3.00 |
3.00 |
0.00 |
0.50 |
10.000 |
|
4 |
4.50 |
2.50 |
1.50 |
0.00 |
39.313 |
|
5 |
3.00 |
2.25 |
0.00 |
-0.25 |
3.250 |
|
6 |
2.25 |
2.25 |
-0.75 |
0.00 |
5.066 |
|
7 |
3.00 |
1.50 |
0.00 |
-0.75 |
1.000 |
|
8 |
3.38 |
1.50 |
0.38 |
0.00 |
3.715 |
|
9 |
3.00 |
-1.25 |
0.00 |
-2.25 |
31.250 |
|
1. Поворот осей | |||||
|
|
x1 |
x2 |
||R|| |
f(x) |
|
|
|
3.00 |
1.50 |
|
1.000 |
|
|
λ |
0.50 |
-1.00 |
|
|
|
|
a1 |
0.50 |
-1.00 |
1.118 |
|
|
|
a2 |
0.00 |
-1.00 |
1.000 |
|
|
|
b2 |
-0.4 |
-0.21 |
0.452 |
|
|
|
S1 |
0.45 |
-0.89 |
|
|
|
|
S2 |
-0.8854 |
-0.465 |
|
|
|
|
2. Исследующий поиск в новой системе координат | |||||
|
№ |
x1 |
x2 |
s1 |
s2 |
f(x) |
|
|
3.00 |
1.50 |
|
|
1.000 |
|
1 |
3.22 |
1.05 |
0.22 |
-0.45 |
3.492 |
|
2 |
2.56 |
1.27 |
-0.44 |
-0.23 |
0.097 |
|
3 |
2.45 |
1.49 |
-0.11 |
0.22 |
0.328 |
|
4 |
1.23 |
0.57 |
-1.33 |
-0.70 |
0.361 |
На второй итерации метода реализован исследующий поиск с помощью дискретных шагов в новой системе координат. Из таблицы видно, что на шаге 3 и 4 происходит «неудача». Поэтому оптимальной точкой исследующего поиска будет точка 2 [2.56; 1.27]. В этой точке опять производится поворот координатных осей, и процедура расчета повторяется.
