Максимизация функции со многими параметрами (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*.
вы всегда можете использовать список в качестве одного параметра, если ваша задача не говорит, что вы не можете этого сделать. Со списком было бы намного проще.