- •Новокузнецк
- •Общие положения
- •1. Постановка задачи
- •2.1 Поисковые методы.
- •2.1.1 Метод сканирования.
- •2.1.2. Метод циклического координатного поиска Гаусса-Зейделя
- •2.1.2 Метод прямого поиска Хука - Дживса.
- •2.1.3. Метод Розенброка
- •2.2 Методы поиска экстремума функции, использующие расчет значений функции в вершинах многогранника.
- •2.2.1. Симплекс метод
- •2.2.2. Метод Нелдера и Мида.
- •2.3 Методы с использованием производных 1-го порядка
- •2.3.1 Градиентный метод
- •2.3.2. Метод наискорейшего спуска.
- •2.3.3 Метод крутого восхождения.
- •2.4 Методы с использованием производных 2-го порядка
- •2.4.1. Метод сопряженных направлений.
- •Алгоритмы и примеры решения задач многомерной оптимизации
2.2.2. Метод Нелдера и Мида.
Отмеченные выше недостатки регулярного симплекса, а также отсутствие ускорения поиска и трудности при проведении поиска на искривленных “оврагах” и “хребтах” явились причиной разработки Нелдером и Мидом метода, в котором симплекс меняет свою форму, т. е. представляет деформируемый многогранник. Изменение формы многогранника происходит за счет операций растяжения, сжатия и редукции.
1. Построение начального многогранника. Выбирается произвольной формы многогранник с координатами вершин
Xi(k) = [xi1(k), …, xij(k), …, xin(k)]Т, i = 1, …, n+1.
Индекс (k) будет обозначать k-й этап поиска. Значение целевой функции в Xi(k) равно f(Xi(k)).
2. Расчет координат центра тяжести. Определяют те векторы х многогранника, которые дают максимальное и минимальное значение f(X), а именно
f(Xh(k)) = maxf(X1(k)), …, f(Xn+1(k));f(Xl(k)) = min f(X1(k)), …, f(Xn+1(k)).
Тогда координаты центра тяжести рассчитываются по формуле
, j = 1, …, n,
где индекс jобозначает координатное направление.
3. Отражение. Представляет проектирование Xh(k) через центр тяжести в соответствии с соотношением
,
где 0 - коэффициент отражения;
Xh(k)- вершина, в которой функцияf(X) имеет наибольшее значение.
В обычном симплексе = 1.
4. Растяжение. Происходит в случае, если . Вектор () увеличивается в соответствии с соотношением
,
где 1 - коэффициент растяжения.
Если , то заменяется на и процедура продолжается с этапа 2 при k = k + 1. Иначе заменяется на и также осуществляется переход к этапу 2 при k = k + 1.
5. Сжатие. Если для всех i h, то вектор () уменьшается в соответствии с формулой
,
где 0 1 - коэффициентом сжатия.
Затем заменить на и происходит возврат к операции 2 приk = k + 1.
6. Редукция. Происходит при условии, если . Все векторы () уменьшаются в 2 раза с отсчетом от в соответствии с формулой
, i=1, …, n+1.
Затем возвращаемся к операции 2 для продолжения поиска на (k+1)-м шаге.
Для окончания поиска Нилдер и Мид используют критерий вида
,
где - заданная точность поиска;
- значение функции в центре тяжести.
Пример расчета минимума функции методом деформируемого многогранника.
Постановка задачи. Рассматриваем задачу минимизации функции f(X)=(x1-2)4+ (х1 - 2х2)2.
Вершины начального многогранника рассчитываем как в обычном симплексе
X1(1) = [2.25 2.36]Т; X2(1) = [2.5 2.78]Т; X3(1) = [2.75 2.36]Т.
Зададим параметры алгоритма = 1; = 0,5; = 2.
На первой итерации при k = 1. Вычислим значение функции в вершинах исходного многогранника
f(X1(1)) = 6.10480; f(X2(1)) = 9.4261; f(X3(1)) = 4.197.
Наихудшей вершиной является Xh(1) = X2(1), а наилучшей Xl(1) = X3(1).
Определяем центр тяжести
[(2.25+ 2.50 + 2.75) – 2.5]/2 = 2.5,
[(2.36 + 2.78 + 2.36) – 2.78]/2 = 2.36.
и рассчитываем координату отражения
= 2.5 + 1(2.5 – 2.5) = 2.5,
= 2.5 + 1(2.5 – 2.78) = 1.94.
Значение функции в этой точке f(X5(1)) = 1.967, что меньше, чем в X1(1). Поэтому, проводим операцию растяжения
= 2.5 + 2(2.5 – 2.5) = 2,5,
= 2.5 + 2(2.22 – 2.5) = 1.52.
Значение функции f(2.5 1.52) = 0.354. Поскольку f(X6(1)) f(X5(1)), заменяем X2(1) на X6(1) и полагаем X6(1) = X1(2) на следующем этапе поиска. Результаты расчета нескольких итераций метода представлены в таблице 2.5. Траектория поиска метода представлена на рис.2.5.
Таблица 2.5
Результаты расчета минимума функции f(X) = (x1 - 2)4 + (х1 - 2х2)2.
методом Нелдера-Мида.
№ |
Операция |
x1 |
x2 |
f(X) |
№ |
Операция |
x1 |
x2 |
f(X) |
№ |
Операция |
x1 |
x2 |
f(X) |
1 |
вершина 1 |
2.25 |
2.36 |
6.105 |
3 |
вершина 1 |
2.81 |
1.73 |
0.855 |
5 |
вершина 1 |
2.30 |
1.05 |
0.049 |
вершина 2 |
2.50 |
2.78 |
9.426 |
вершина 2 |
2.75 |
2.36 |
4.197 |
вершина 2 |
2.50 |
1.52 |
0.354 | |||
вершина 3 |
2.75 |
2.36 |
4.197 |
вершина 3 |
2.50 |
1.52 |
0.354 |
вершина 3 |
2.61 |
1.26 |
0.147 | |||
ц. тяжести |
2.50 |
2.36 |
4.991 |
ц. тяжести |
2.66 |
1.63 |
0.538 |
ц. тяжести |
2.45 |
1.15 |
0.064 | |||
отражение |
2.50 |
1.94 |
1.967 |
отражение |
2.56 |
0.89 |
0.712 |
отражение |
2.41 |
0.79 |
0.727 | |||
растяжение |
2.50 |
1.52 |
0.354 |
сжатие |
2.61 |
1.26 |
0.147 |
редукция |
|
|
| |||
2 |
вершина 1 |
2.25 |
2.36 |
6.105 |
4 |
вершина 1 |
2.81 |
1.73 |
0.855 |
| ||||
вершина 2 |
2.75 |
2.36 |
4.197 |
вершина 2 |
2.50 |
1.52 |
0.354 | |||||||
вершина 3 |
2.50 |
1.52 |
0.354 |
вершина 3 |
2.61 |
1.26 |
0.147 | |||||||
ц. тяжести |
2.63 |
1.94 |
1.728 |
ц. тяжести |
2.55 |
1.39 |
0.144 | |||||||
отражение |
3.00 |
1.52 |
1.002 |
отражение |
2.30 |
1.05 |
0.049 | |||||||
сжатие |
2.81 |
1.73 |
0.855 |
растяжение |
2.04 |
0.71 |
0.393 |
На пятой итерации симплекс достиг области экстремума, что говорит о высокой эффективности метода. Отраженная вершина вновь становится «наихудшей», поэтому для достижения необходимой точности необходимо провести редукцию.
Рис.2.5 Графическая иллюстрация поиска минимума функции методом Нелдера-Мида.