описание методов минимизации lmfit / scipy.optimize?

#python #documentation #scipy-optimize #lmfit

#питон #Документация #scipy-оптимизировать #lmfit

Вопрос:

Есть ли какое-нибудь место с кратким описанием каждого из алгоритмов для параметра method в minimize функции lmfit пакета? Как там, так и в документации SciPy нет никаких объяснений относительно деталей каждого алгоритма. Прямо сейчас я знаю, что могу выбирать между ними, но я не знаю, какой из них выбрать…

Моя текущая проблема

Я использую lmfit в Python для минимизации функции. Я хочу минимизировать функцию в пределах конечного и предопределенного диапазона, где функция имеет следующие характеристики:

  • Он почти везде равен нулю, что делает его численно идентичным нулю почти везде.
  • В какой-то момент у него очень, очень острый пик.
  • Пик может быть где угодно в пределах региона.

Это приводит к тому, что многие алгоритмы минимизации не работают. Прямо сейчас я использую комбинацию метода грубой силы ( method="brute" ), чтобы найти точку, близкую к пику, а затем передать это значение алгоритму Нелдера-Мида ( method="nelder" ), чтобы окончательно выполнить минимизацию. Он работает примерно в 50% случаев, а в остальных 50% случаев ему не удается найти минимум. Интересно, существуют ли лучшие алгоритмы для подобных случаев?..

Комментарии:

1. Вы вообще смотрели на исходный код? Все алгоритмы подробно описаны в исходном коде, исходя из того, как он выглядит: github.com/scipy/scipy/blob /.

2. Спасибо, я не знал об этом. Было бы неплохо обобщить всю эту информацию в каком-нибудь месте, чтобы ее было легко и быстро прочитать.

Ответ №1:

Я думаю, что справедливо, что документы для lmfit (такие как https://lmfit.github.io/lmfit-py/fitting.html#fit-methods-table ) и scipy.optimize (например, https://docs.scipy.org/doc/scipy/reference/tutorial/optimize.html#optimization-scipy-optimize ) не дают подробных математических описаний алгоритмов. Опять же, большинство документов для scipy, numpy и связанных библиотек описывают, как использовать методы, но не описывают математически подробно, как работают алгоритмы.

Справедливости ради, различные алгоритмы оптимизации имеют много общих черт, и различия между ними могут быть довольно техническими. Все эти методы пытаются минимизировать некоторую метрику (часто называемую «стоимостью» или «остатком») путем изменения значений параметров для предоставленной функции.

Для определения понятий и математических терминов, используемых для этих методов, требуется учебник (или, по крайней мере, страница Википедии), а затем статья (или, по крайней мере, страница Википедии), чтобы описать, чем каждый метод отличается от других. Итак, я думаю, что основным ответом будет поиск различных методов.