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

у меня есть функция f(x1, x2, ..., xn) где мне нужно угадать х платит и найти наибольшее значение для f. Функция имеет следующие свойства:

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

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

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

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

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

3 ответов


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


Я думаю, вы хотите взглянуть на составляющей.оптимизировать (http://docs.scipy.org/doc/scipy-0.10.0/reference/tutorial/optimize.html). Максимизация-это минимизация функции -1*.


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