不带导数的Python函数最小化
我熟悉scipy.optimize.optimize中的一些函数,过去曾使用fmin_cg最小化我知道导数的函数。然而,我现在有了一个不容易区分的公式 该模块中的一些功能(例如,fmin_cg)实际上不需要提供衍生产品。我假设他们通过依次给每个参数加上一个小值来计算一个quazi导数,对吗不带导数的Python函数最小化,python,scipy,derivative,minimization,Python,Scipy,Derivative,Minimization,我熟悉scipy.optimize.optimize中的一些函数,过去曾使用fmin_cg最小化我知道导数的函数。然而,我现在有了一个不容易区分的公式 该模块中的一些功能(例如,fmin_cg)实际上不需要提供衍生产品。我假设他们通过依次给每个参数加上一个小值来计算一个quazi导数,对吗 我的主要问题是:当在没有给定导数的情况下最小化多个参数上的函数时,哪一个函数(或来自其他地方的函数)最适合使用?我不太熟悉SciPy中的可用内容,但该方法(又名Nelder-Mead或Amoeba方法)通常适
我的主要问题是:当在没有给定导数的情况下最小化多个参数上的函数时,哪一个函数(或来自其他地方的函数)最适合使用?我不太熟悉SciPy中的可用内容,但该方法(又名Nelder-Mead或Amoeba方法)通常适用于多维优化 现在看一下,它似乎可以作为
minimize()
函数中的一个选项,使用method='Nelder-Mead'
参数
不要将其与线性规划的单纯形(Dantzig)算法混淆…我不太熟悉SciPy中的可用内容,但该方法(又名Nelder-Mead或Amoeba方法)通常适用于多维优化 现在看一下,它似乎可以作为
minimize()
函数中的一个选项,使用method='Nelder-Mead'
参数
不要将其与线性规划的单纯形(Dantzig)算法混淆…是的,将任何
fmin\u bfgs fmin\u cg fmin\u powell
称为
fmin_xx( func, x0, fprime=None, epsilon=.001 ... )
通过(func(x+epsilon I)-func(x))/epsilon
但是,哪一个对您的应用程序“最好”, 很大程度上取决于函数的平滑程度以及变量的数量。
普通内尔德蜂蜜酒,
fmin
,是一个不错的首选——缓慢但可靠;
不幸的是,scipy Nelder Mead从一个固定大小的单纯形开始.05/.00025,而不管x的比例
我听说fmin\u tnc
inscipy.optimize.tnc
很好:
fmin_tnc( func, x0, approx_grad=True, epsilon=.001 ... ) or
fmin_tnc( func_and_grad, x0 ... ) # func, your own estimated gradient
(fmin_tnc是~fmin_ncg,带有绑定约束,很好的消息来查看发生了什么,参数有些不同。)是的,将任何
fmin_bfgs fmin_cg fmin_powell
称为
fmin_xx( func, x0, fprime=None, epsilon=.001 ... )
通过(func(x+epsilon I)-func(x))/epsilon
但是,哪一个对您的应用程序“最好”, 很大程度上取决于函数的平滑程度以及变量的数量。
普通内尔德蜂蜜酒,
fmin
,是一个不错的首选——缓慢但可靠;
不幸的是,scipy Nelder Mead从一个固定大小的单纯形开始.05/.00025,而不管x的比例
我听说fmin\u tnc
inscipy.optimize.tnc
很好:
fmin_tnc( func, x0, approx_grad=True, epsilon=.001 ... ) or
fmin_tnc( func_and_grad, x0 ... ) # func, your own estimated gradient
(fmin_tnc是~fmin_ncg,有界约束,看到发生了什么的好消息,有点不同的参数。)关于数值逼近导数(雅可比)的方法,您是正确的。我在使用
scipy.optimize.leastsq
时看到了这一点。只是好奇,你有多少变量?你对数值逼近导数(雅可比)的方法是正确的。我在使用scipy.optimize.leastsq
时看到了这一点。只是好奇,你有多少变量?还有,作为函数,作为函数