Comments 17
И, да, вы ошиблись, утверждая, что обсуждаемый метод:
Используется по умолчанию в функции optimize из модуля scipy.optimize
Нас самом деле по умолчанию используются: one of BFGS, L-BFGS-B, SLSQP, depending if the problem has constraints or bounds.
Может у кого-нибудь есть реализация алгоритма на других языках программирования? С радостью расширю статью, естественно указав автора реализации
А каков смысл?
Деформируемый многогранник Нелдера-Мида — метод старый, реализаций немеряно. У меня со студенчества (это середина 80-х) остались реализации на Алголе для БЭСМ-6 и Фортране для ЕС и СМ-4. Не думаю, что расширение ими статьи будет кому-то полезно:)
Писал этой весной на Scilab, затем переносил в ANSYS APDL — сначала не увидел встроенных процедур, а когда их абсолютно случайно увидел их в СТАРОМ 11-м Хэлпе и прогнал примеры — не понравилась точность встроенных в ANSYS оптимизаторов. Ничётак получилось, несколько процентов форы отжал у ANSYS =)
И автор прав, требуется гонять алгоритм несколько раз до победного и правильно выбирать длину вектора старта и вектора корректировки на очередном витке цикла, иначе велик шанс не дойти до точки минимума. Хотя сам алгоритм работает шустро.
Тут смысл именно в том, что это derivative free метод поиска (т. н. direct search). Функции могут быть шумные и негладкие, да вообще любые. Кстати, более продвинутые методы direct search также давно существуют, например, Generalized Pattern Search, Mesh Adaptive Search, но они и более медленные.
Еще на Фортране у меня был, откуда-то качал из математических библиотек.
Нелдер-Мид хорош, когда функция недифференцируема.
Офтопик, но в каком пакете Вы делали геометрические картинки?
Метод оптимизации Нелдера — Мида. Пример реализации на Python