Здравствуйте, в своей научной работе (если ее так можно назвать) у меня следующая задача. Есть переменные,
—
. Для каждой переменной есть свой интервал значений. Далее, на основании значений всех переменных у меня рассчитываются значения некоторых точек данных
-
. Для этих же точек данных у меня есть значения из эксперимента,
. У меня
. В идеале я хочу получить значения переменных
которые дают наибольшее согласие
and
. Думаю это стандартная задача. Задача у меня не линейная, производных нет и не предвидется. На данный момент я решаю задачу в лоб, то есть составляю ф-цию
и пытаюсь оптимизировать ее глобально. Я пробовал практически все безградиентные алгоритмы в библиотеке NLOPT и несколько алгоритмов (BASINHOPPING and DIFFERENTIAL_EVOLUTION) from python optimize. BASINHOPPING, NLOPT_ GN_CRS2_LM дают пока наилучшее решения. Но - эти алгоритмы медленные.
Интересно, есть ли более быстрые безградиентные алгоритмы для таких проблем? Есть ли смысл поискать еще какие-то библиотеки? Вы знаете какие-либо библиотеки? Желательно чтобы легко было привязать к коду на питоне. Количество переменных от 23 до 100.
Интересно, если я постараюсь увеличить количество точек данных, у меня уменьшится количество локальных минимумов?
Спасибо!