我正在尝试使用scipy.optimize
函数来找到一个具有多个参数的复杂函数的全局最小值。其中scipy.optimize.minimize
方法似乎是最好的选择,特别是使用'Nelder-Mead'方法。然而,它往往会超出参数域(给只能为正数的参数分配负值),从而在这些情况下返回错误。是否有一种方法可以在scipy.optimize.minimize
函数本身中限制参数的边界?或者在其他scipy.optimize
函数中?
我发现了以下建议:
当参数超出可接受范围时,请返回一个极大的数字(远离要拟合的数据)。这将(希望)惩罚该参数选择,以至于
curve_fit
将选择其他可接受的参数集作为最佳参数。
在先前的答案中提供, 但这个过程在我的情况下需要很长的计算时间。
scipy.minimize
中的constraint
参数来指定一种方法,告诉算法在哪里限制其搜索。在此处搜索“constraints”:http://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize.html#scipy.optimize.minimize - Eric Leschinski