На этапе "внешнего сжатия" алгоритма Нелдера-Мида в реализации scipy, а также в оригинальной статье, на которую они ссылаются, точка рефракции xr
отбрасывается, если внешняя сокращенная точка xc
не лучше, ив этом случае алгоритм переходит к этапу сжатия.С другой стороны, шаг внешнего сжатия выполняется, только если xr
лучше, чем наихудшая точка симплекса.Так в чем же причина не заменять наихудшую точку отраженной и продолжать без усадки?
Вот код из реализации scipy https://github.com/scipy/scipy/blob/7405dfb4cf273878ac36c66f4a523ba183bd547c/scipy/optimize/optimize.py#L620-L628
if fxr < fsim[-1]:
xc = (1 + psi * rho) * xbar - psi * rho * sim[-1]
fxc = func(xc)
if fxc <= fxr:
sim[-1] = xc
fsim[-1] = fxc
else:
doshrink = 1