Ответ 1
Не делай этого сам. Установите SciPy и используйте . scipy.optimize.minimize
выглядит хорошо.
во-первых, позвольте мне сказать, что мне не хватает опыта с научной математикой или статистикой - так что это может быть очень хорошо известная проблема, но я не знаю, с чего начать.
У меня есть функция f(x1, x2, ..., xn)
, где мне нужно угадать x'ses и найти самое высокое значение для f
. Функция имеет следующие свойства:
общее число или параметры обычно составляют от 40 до 60, поэтому подход грубой силы невозможен.
возможные значения для каждого диапазона х от 0,01 до 2,99
функция устойчивая, что означает, что более высокое значение f означает, что предположение для параметров лучше и наоборот.
До сих пор я реализовал довольно простой метод в python. Сначала он устанавливает все параметры в 1, случайным образом догадывается о новых значениях и проверяет, превышает ли значение f ранее. Если нет, откат назад к предыдущим значениям. В цикле с 10000 итерациями это, похоже, работает как-то, но результат, возможно, далек от совершенства.
Будут оценены любые предложения о том, как улучшить поиск оптимальных параметров. Когда при поиске в этой проблеме возникли проблемы, связанные с MCMC, но это похоже на очень продвинутый метод, и мне нужно много времени, чтобы понять метод. Основные подсказки или концепции помогут мне больше, чем разработанные методы и алгоритмы.
Не делай этого сам. Установите SciPy и используйте . scipy.optimize.minimize
выглядит хорошо.
Я думаю, вы хотите взглянуть на scipy.optimize(http://docs.scipy.org/doc/scipy-0.10.0/reference/tutorial/optimize.html). Максимизация - это минимизация функции -1 *.
Вы всегда можете использовать список как один параметр, если ваша задача не говорит, что вы не можете этого сделать. Список сделает его намного проще.
Если я умножу функцию на -1, функция минимизации включается и максимизируется. Как мне справиться с ограничениями и ограничениями? Насколько я понимаю, я должен умножить ограничения на -1, но пусть границы остаются прежними.