Лабы / Разработки / Labs4
.docЛабораторная работа 4
Методы минимизации, не использующие дифференцируемость целевой функции
В работе рассматривается метод Нелдера – Мида.
Общие сведения: Напомним, что симплексом в Rn называется выпуклая оболочка n+1 точек, не лежащих в одной n-1 – мерной плоскости. Пусть требуется определить минимум целевой функции . Алгоритм метода Нелдера – Мида решения этой задачи заключается в следующем. На каждой итерации сравниваются значения в вершинах симплекса. Затем преобразуется та вершина (без ограничения общности --- ) симплекса в которой достигается максимальное значение . Положение новой вершины определяется сравнением значений функции в четырех пробных точках
Здесь --- центр тяжести остальных n вершин симплекса ().
Среди выбирается точка, где минимальна. Итерационный процесс продолжают до тех пор, когда либо разность между значениями функции в вершинах симплекса, либо разность между значениями функции в вершинах симплекса становится достаточно малой.
Начальный симплекс можно выбрать правильным если известна, то
, (*)
где .
Алгоритм: 1. Выбрать параметры начальную точку и длину ребра a
правильного симплекса. Начальный симплекс определить по
формулам (*).
2. Вычислить значения функции в точках .
3. Упорядочить вершины так, чтобы .
4. Проверить достижение заданной точности. Если оно выполнено, то
. Иначе перейти к п. 5.
5. Найти и определить . Если , то
положить и перейти к п.3. Иначе к п.6.
6. Уменьшить симплекс, полагая и перейти к п.2.
Дополнительно: Используйте встроенную функцию fminsearch, реализующую метод
Нелдера-Мида [x,fval,exitflag,output] = fminsearch(@fun,x0).
Сравните количество итераций и вычислений fun для данной функции
fminsearch и для написанной вами функции.