在 Python 中使用线性约束解决最小二乘问题
计算科学
优化
Python
凸优化
最小二乘
二次规划
2021-11-25 02:23:09
2个回答
在发现CVXPY之前,我写了一个完整的答案(在行下方),它(如 MATLAB 的 CVX)为您完成了所有困难的事情,并且有一个非常简短的示例,几乎与您的示例相同。您只需要将相关行替换为
p = program(minimize(norm2(A*x-b)),[equals(sum(x),1),geq(x,0)])
我的旧答案,用 CVXOPT 做起来更难:
按照 Geoff 对目标函数求平方的建议,
当然,所有术语都是标量,因此您可以转置第三个并删除最后一个(因为它不依赖于,因此不会改变为您提供的最小值,尽管您需要将其添加回来在求解后以获得目标的正确值)以获得 这(包括您的约束)具有二次程序的形式,如此处的 CVXOPT 文档,其中还有用于解决此类问题的示例代码。
而不是你解决的问题,解决
这个问题是一个可微的、凸的、非线性的优化问题,可以在 CVXOPT、IPOPT 或任何其他凸优化求解器中求解。
其它你可能感兴趣的问题