Вопрос 14: Метод симплексов
Метод безусловной оптимизации функции от нескольких переменных, не использующий градиентов функции. Суть метода заключается в последовательном перемещении и деформировании симплекса вокруг точки экстремума.
Симплекс – n-мерное обобщение треугольника:
Операции над симплексами
Алгоритм
Параметры метода: коэффициент отражения > 0, обычно выбирается равным 1. коэффициент сжатия > 0, обычно выбирается равным 0,5. коэффициент растяжения > 0, обычно выбирается равным 2.
Пусть требуется найти безусловный минимум функции 2 переменных. Тогда симплекс будет иметь размерность равную 3.
Шаг 1 - обозначение точек
Выберем три точки – вершины треугольника. Вычислим значения целевой функции в вершинах и обозначим их как best, lousy и worst: , , . Соответствующие точки пространства обозначим как .
Шаг 2 - отражение
Найдем среднее арифметическое всех точек симплекса, кроме худшей : Для нашего случая формула будет выглядеть следующим образом: Найдем отражение худшей точки и вычислим значение функции в этой точке :
Шаг 3 - смотрим какое место между всеми точками заняла отраженная точка
Если , то направление удачное и можно увеличить шаг: найдем "растяжение" и вычислим значение функции в этой точке :
Если , то и переходим на Шаг 6. Если , то и переходим на Шаг 6. Если , то и переходим на Шаг 6. Если , то на Шаг 4. Если , то на Шаг 5.
Шаг 4 - внутреннее сжатие
Используя среднюю точку и худшую точку , найдем и значение функции в этой точке : Если , то и переходим к Шагу 6. Иначе проводим "сокращение" - обновляем все вершины, кроме лучшей по следующему соотношению: и переходим к Шагу 6.
Шаг 5 - внешнее сжатие
Используя среднюю точку и худшую точку , найдем и значение функции в этой точке :
Если , то и переходим к Шагу 6.
Иначе проводим "сокращение" - обновляем все вершины, кроме лучшей по следующему соотношению:
и переходим к Шагу 6.
Шаг 6 - проверка сходимости
Если алгоритм сходится или достигнут критерий остановки, заканчиваем работу. Иначе проводим переоценку точек: находим значения функций в этих точках и обозначаем их как best, lousy и worst () и переходим к Шагу 2.