Практика 4: Метод Хукка-Дживса
Для начала необходимо задать стартовую точку = (; ), начальный шаг ( иногда ), точность (), параметр для шага по образцу ( иногда ). Суть алгоритма заключается в последовательном использовании двух шагов (поисков): иссследующего шага и шага по образцу. Подробнее об этом в теории.
Пример решения задачи
Дано:
Функция -
Начальная (базовая) точка - [; ] = [2; 3]
Шаг -
Точность -
1. Исследуюший шаг. Исследуем соседние с начальной точкой точки:
[; ] = [3, 3]
[; ] = [1, 3]
Выбираем наименьшее - это 10. Значит = 1. Далее проверяем соседей по .
[; ] = [1, 4]
[; ] = [1, 2]
Наименьшее 5. Теперь [1, 2] - новая базовая точка.
2. Шаг по образцу.
Используем формулу : , где (обычно) = 2.
=
Далее действия повторяются.
Затем снова исследуем окрестность точки (исследующий шаг). На этот раз = [0, 1]:
[0+p, 1] = [1, 1] f(x) = 2
[0-p, 1] = [-1, 1] f(x) = 2
так как тут равные значения, рассмотрим окрестности дальше
[0, 1+p] = [0, 2] f(x) = 4
[0, 1-p] = [0, 0] f(x) = 0
Наименьшее значение 0. Точка [0, 0] становится новой базовой точкой.
Шаг по образцу
x_3 = [1, 2] + 2 ([0, 0] - [1, 2]) = [-1, -2]
f(x) = 5
(Самое время подсчитать сколько раз ты считал значение функции, потому что в данном примере это 10ый подсчет и уже можно остановиться!)
Исследующий шаг
[-1+p, -2] = [0, -2] f(x) = 4
[-1-p, -2] = [-2, -2] f(x) = 8
[0, -2+p] = [0, -1] f(x) = 1
[0, -2-p] = [0, -3] f(x) = 9
Не удалось найти точку лучшую, чем базовая ([0, 0]). Уменьшаем шаг на 2 ().
Исследуем
[0+p, 0] = [0,5, 0] f(x) = 0,25
[0-p, 0] = [-0,5, 0] f(x) = 0,25
[0, 0+p] = [0, 0,5] f(x) = 0,25
[0, 0-p] = [0, -0,5] f(x) = 0,25
Нет лучшего решения, чем точка [0, 0], поэтому это ответ