替代scipy.optimize.minimize约束优化?

时间:2016-12-20 02:18:04

标签: python optimization parameters constraints

我有兴趣找到模型的优化参数(通过使用已知值最小化模型的输出)。我感兴趣的参数有界限,它们也受到1 - sum(x_par) >= 0不等式的约束,其中x_par是总参数列表中某些参数的列表。我使用scipy.optimize.minimize来使用不同的方法(例如COBYLASLSQP)来最小化此问题,但此函数的拟合性能非常差,误差通常高于50%。

我注意到scipy.optimize.curve_fitscipy.optimize.differential_evolution在拟合给定值方面效果很好,但这些函数不允许对参数进行约束。我正在寻找python中的替代方案来优化我的问题,允许约束参数,并且可以更好地拟合给定的曲线/值而不是scipy.optimize.minimize

1 个答案:

答案 0 :(得分:1)

您可能会发现lmfit有用。这个模块是许多scipy.optimized例程(包括leastsqdifferential_evolution,大多数缩放器最小化器)的包装器,用Parameter个可以修复或自由的对象替换所有变量,应用边界或被约束为其他参数的数学表达式,所有这些都与用于解决最小化问题的方法无关。还有一个Model类来支持许多曲线拟合问题,并支持改进的参数置信区间分析。

小心谨慎,可以应用不等式约束,如下所述 http://lmfit.github.io/lmfit-py/constraints.html#using-inequality-constraints