在python中,我很难最小化一个复杂的非线性函数。这个函数实际上是用来拟合实验数据的拟合模型的chiSquare。为了得到全局最小值,我使用了scipy中的basinhopping函数。此函数是minimize()函数的包装器,该函数添加了一些扰动以查找不同的局部极小值。现在我的问题是找到局部极小值有困难。在
在minimize()中可以使用许多解算器,由于我使用的是“L-BFGS-B”、“SLSQP”和“TNC”之间的边界。他们中没有一个真的能找到局部最小值。有没有基于流行的Levenberg-Marquardt算法的方法可以用来最小化?也许这没有意义,否则它就已经实现了,但我不明白为什么。在
我最初的想法是使用leastsqbound函数(https://pypi.python.org/pypi/leastsqbound),我知道这个函数很擅长提供精确的协方差矩阵,并且将其包含在一个更大的算法中,该算法将寻找全局最小值(如basinhopping函数)。你知道这样的事情是否已经存在吗?在
非常感谢你的建议!在
Scipy有一个Levenberg-Marquardt实现:
scipy.optimize.leastsq
。它没有与minimize
(因此basin_hopping
)一起使用的正确返回类型。不过,这似乎是可以直接补救的。在虽然我还没有运行它,但这应该可以实现以下目的:
相关问题 更多 >
编程相关推荐