Максимизируйте функцию со многими параметрами (python)

во-первых, позвольте мне сказать, что мне не хватает опыта с научной математикой или статистикой - так что это может быть очень хорошо известная проблема, но я не знаю, с чего начать.

У меня есть функция f(x1, x2, ..., xn), где мне нужно угадать x'ses и найти самое высокое значение для f. Функция имеет следующие свойства:

  • общее число или параметры обычно составляют от 40 до 60, поэтому подход грубой силы невозможен.

  • возможные значения для каждого диапазона х от 0,01 до 2,99

  • функция устойчивая, что означает, что более высокое значение f означает, что предположение для параметров лучше и наоборот.

До сих пор я реализовал довольно простой метод в python. Сначала он устанавливает все параметры в 1, случайным образом догадывается о новых значениях и проверяет, превышает ли значение f ранее. Если нет, откат назад к предыдущим значениям. В цикле с 10000 итерациями это, похоже, работает как-то, но результат, возможно, далек от совершенства.

Будут оценены любые предложения о том, как улучшить поиск оптимальных параметров. Когда при поиске в этой проблеме возникли проблемы, связанные с MCMC, но это похоже на очень продвинутый метод, и мне нужно много времени, чтобы понять метод. Основные подсказки или концепции помогут мне больше, чем разработанные методы и алгоритмы.

Ответ 1

Не делай этого сам. Установите SciPy и используйте . scipy.optimize.minimize выглядит хорошо.

Ответ 3

Вы всегда можете использовать список как один параметр, если ваша задача не говорит, что вы не можете этого сделать. Список сделает его намного проще.

Ответ 4

Если я умножу функцию на -1, функция минимизации включается и максимизируется. Как мне справиться с ограничениями и ограничениями? Насколько я понимаю, я должен умножить ограничения на -1, но пусть границы остаются прежними.