Минимизация функции методом деформируемого многогранника

Пусть требуется найти безусловный минимум функции n переменных f(x), где x - точка в n-мерном пространстве x=|x0,x1,...xn-1|. Параметрами метода являются:
   - коэффициент отражения α, обычно выбирается равным 1
   - коэффициент сжатия β, обычно выбирается равным 0.5
   - коэффициент растяжения γ, обычно выбирается равным 2

1) «Подготовка». Вначале создаётся симплекс в n-мерном пространстве.
Координаты n+1 точек симплекса образуют матрицу:

t - длина ребра многогранника.
В этих точках вычисляются значения функции: f0, f1,...fn.
2) «Сортировка». Из вершин симплекса выбираем три точки: xh с наибольшим (из выбранных) значением функции fh , xg со следующим по величине значением fg и xl с наименьшим значением функции fl. Целью дальнейших манипуляций будет уменьшение по крайней мере fh.
3) Найдём центр тяжести
     
всех точек, за исключением xh. Вычислять fc не обязательно.
4) «Отражение». Отразим точку относительно с коэффициентом, получим точку xr и вычислим в ней функцию: fr. Координаты новой точки вычисляются по формуле:

5) Далее смотрим, насколько нам удалось уменьшить функцию, ищем место fr в ряду fh , fg , fl .
  Если fr < fl, то направление выбрано удачное и можно попробовать увеличить шаг. Производим «растяжение». Новая точка xe = ( 1 − γ )xc + γxr и значение функции fe = f(xe).
  Если fe < fr, то можно расширить симплекс до этой точки: присваиваем точке xh значение xe и заканчиваем итерацию (переход на шаг 9).
  Если fr < fe , то переместились слишком далеко: присваиваем точке xh значение xr и заканчиваем итерацию (переход на шаг 9).
  Если fl < fr < fg , то выбор точки неплохой (новая лучше двух прежних). Присваиваем точке xh значение xr и переходим на шаг 9.
  Если fg < fr < fh, то меняем местами значения xr и xh. Также нужно поменять местами значения fr и fh . После этого идём на шаг 6.
  Если fh < fr, то просто идём на следующий шаг 6.
В результате (возможно, после переобозначения) fl < fg < fh < fr.
  6) «Сжатие». Строим точку xs = β xh + ( 1 − β ) xc и вычисляем в ней значение fs = f( xs ).
  7) Если fs < fh, то присваиваем точке xh значение xs и идём на шаг 9.
  8) Если fs > fh, то первоначальные точки оказались самыми удачными. Делаем «глобальное сжатие» симплекса — гомотетию к точке с наименьшим значением xl : xi ← xl + ( xi − xl ) / 2 , i ≠ l .
  9) Последний шаг — проверка сходимости. Может выполняться по-разному, например, оценкой дисперсии набора точек или наиболее длинного ребра многогранника. Суть проверки заключается в том, чтобы проверить взаимную близость полученных вершин многогранника, что предполагает и близость их к искомому минимуму. Если требуемая точность ещё не достигнута, можно продолжить итерации с шага 2.