我有兴趣找到模型的优化参数(通过使用已知值最小化模型的输出)。我感兴趣的参数有界限,它们也受到1 - sum(x_par) >= 0
不等式的约束,其中x_par
是总参数列表中某些参数的列表。我使用scipy.optimize.minimize
来使用不同的方法(例如COBYLA
和SLSQP
)来最小化此问题,但此函数的拟合性能非常差,误差通常高于50%。
我注意到scipy.optimize.curve_fit
和scipy.optimize.differential_evolution
在拟合给定值方面效果很好,但这些函数不允许对参数进行约束。我正在寻找python中的替代方案来优化我的问题,允许约束参数,并且可以更好地拟合给定的曲线/值而不是scipy.optimize.minimize
。
答案 0 :(得分:1)
您可能会发现lmfit有用。这个模块是许多scipy.optimized例程(包括leastsq
,differential_evolution
,大多数缩放器最小化器)的包装器,用Parameter
个可以修复或自由的对象替换所有变量,应用边界或被约束为其他参数的数学表达式,所有这些都与用于解决最小化问题的方法无关。还有一个Model
类来支持许多曲线拟合问题,并支持改进的参数置信区间分析。
小心谨慎,可以应用不等式约束,如下所述 http://lmfit.github.io/lmfit-py/constraints.html#using-inequality-constraints。