АЛГОРИТМ ХУКА – ДЖИВСА
ПРЯМЫЕ МЕТОДЫ БЕЗУСЛОВНОЙ МИНИМИЗАЦИИ
Этот алгоритм содержит две основные процедуры:
а) исследующий покоординатный поиск в окрестности данной точки, предназначенный для определения направления убывания f (х);
б) перемещение в направлении убывания.
Опишем алгоритм исследующего покоординатного поиска из заданной точки х с приращениями по каждой координате Dj , j = 1, …, n
Шаг 1. Положить = x , i = 1.
Шаг 2. Сделать пробный шаг y= – Dje j, где e j –j–й базисный вектор. Если f ( ) £ f (y), то перейти к шагу 3, иначе – к шагу 4.
Шаг 3. Сделать пробный шаг y= +Dje j . Если f ( ) £ f (y), то перейти к шагу 5, иначе – к шагу 4.
Шаг 4. Положить = у.
Шаг 5. Положить j = j + 1. Если j £ n, то перейти к шагу 2. В противном случае исследующий поиск окончен – получена точка для которой f ( ) < f (y), если ¹ х.
Замечание. В результате исследующего поиска может оказаться, что =х. Тогда исследующий поиск считается неудачным. Если при этом норма приращения D =(D1,.., Dn ) мала, т.е. ||D|| £ e, где e – заданная точность, то полагают х* = х. Если заданная точность не достигнута, то полагают D=D/g (постоянная g >1 – коэффициент уменьшения шага) и повторяют исследующий поиск.
Приведем теперь полный алгоритм Хука – Дживса.
Шаг 0. Выбрать начальную точку х0 , вектор приращений D =(D1,.., Dn ), коэффициент уменьшения шага g >1, параметр окончания поиска e > 0.
Шаг 1. Провести исследующий покоординатный поиск из точки х0, т.е. найти точку . Если ¹ х , то перейти к шагу 3, иначе – к шагу 2.
Шаг 2. Проверка на окончание поиска. Если ||D||<e, то прекратить поиск и положить х*=х0. Иначе – положить D=D/g и перейти к шагу 1.
Шаг 3. Перемещение из точки х в направлении убывания – х0 : положить х1 = + ( – х0) = 2 – х0 .
Шаг 4. Провести исследующий поиск в точке х1 , т.е. найти точку . Если f ( ) < f ( ), то положить х0 = , = и перейти к шагу 3. Иначе – положить х0 = и перейти к шагу 1.
Пример 3.7. Рассмотрим графическую иллюстрацию решения задачи f (х)=(x1+ 1)2+х22 ®min методом Хука – Дживса из начальной точки х0 =(2,3),вектор перемещений D=(1/2,1).
Целевая функция f (х) представляет собой квадрат расстояния между точками х и х* =(–1,0). Линии уровня f (х) – это окружности с центром в точке х*. Поэтому значения f (х) в промежуточных точках алгоритма легко сравнивать, оценивая их расстояния от точки х* на рис. 3.9. На рисунке пунктиром выделены траектории исследующего поиска, сплошными линиями – перемещения в направлении убывания. Убедитесь в соответствии графической иллюстрации описанному алгоритму.
Все описанные выше прямые методы безусловной минимизации функции многих переменных содержат детерминированные процедуры поиска точек с меньшим значением функции.
Однако разработано довольно много методов минимизации, где в процедуру поиска точек минимума намеренно вводят элементы случайности.
Рис. 3.9. К примеру 3.7.