#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 и связанных библиотек описывают, как использовать методы, но не описывают математически подробно, как работают алгоритмы.
Справедливости ради, различные алгоритмы оптимизации имеют много общих черт, и различия между ними могут быть довольно техническими. Все эти методы пытаются минимизировать некоторую метрику (часто называемую «стоимостью» или «остатком») путем изменения значений параметров для предоставленной функции.
Для определения понятий и математических терминов, используемых для этих методов, требуется учебник (или, по крайней мере, страница Википедии), а затем статья (или, по крайней мере, страница Википедии), чтобы описать, чем каждый метод отличается от других. Итак, я думаю, что основным ответом будет поиск различных методов.