我有兴趣找到模型的优化参数(通过用已知值最小化模型的输出)。我感兴趣的参数有一定的界限,它们也受到看起来像1 - sum(x_par) >= 0
的不等式的限制,其中x_par
是总参数列表中的一些参数的列表。我已经使用scipy.optimize.minimize
以不同的方法(如COBYLA
和SLSQP
)尽量减少这个问题,但这个功能的拟合性能很差,错误一般在50%以上。替代scipy.optimize.minimize约束优化?
我注意到scipy.optimize.curve_fit
和scipy.optimize.differential_evolution
在拟合给定值方面效果很好,但这些函数不允许对参数进行约束。我正在寻找python中的替代方案来优化我的问题,该问题允许约束参数,并且可以在拟合给定的曲线/值方面比scipy.optimize.minimize
做得更好。
我很好奇,如果方式参数被定义(使用一个对象)使得这个软件包不适合需要优化大量参数的问题吗?例如,我会事先知道该问题需要优化多少个参数,但由于大量参数的复杂性,我无法通过一个对象指定每个参数的“定义”。在这方面,'scipy.optimize.minimize'是灵活的,因为输入参数可以扩展为'x1,.. xn = x [0],... x [n]' – Pupil
因为lmfit包装了scipy.optimize。最小化,它应该能够处理类似的复杂问题。 Lmfit将参数保存在有序字典中,以便您不必为索引指定含义。这可能看起来像一个小好处,但它允许用户方便地将任何参数从变化变为固定,而不必重写目标函数。但如果你想,你可以命名参数“1”,“2”,.....;) –
嗨...我怎么能实现约束'1 - sum(x_par)> = 0'?我不知道如何通过表达式来计算总和函数,这是您提供的链接中建议的会计不平等约束的一般方式。谢谢。 – Pupil