使用cgal二次规划求解超定系统

时间:2017-04-11 14:51:34

标签: c++ cgal quadratic-programming

我想解决Ax=b形式的超定系统,其中A(m x n)矩阵(m>n},b是{{} 1}}向量和(m)是未知数的向量。我还想用xlb绑定解决方案。

提供以下计划: (QP)将ub最小化为transpose(x).D.x+transpose(c).x+c0

我想知道如何计算矩阵D和向量c。因为矩阵D必须是对称的,所以我将其定义为Ax⋛b,l≤x≤u并将D=transpose(A).A定义为c。我的问题是:这种表述是否正确?如果不是,我该如何定义D和c?

1 个答案:

答案 0 :(得分:0)

“解决”一个超定系统Ax = b通常意味着计算一个解决方案x,它可以最大限度地减少错误e(x) = ||Ax-b||的欧几里德范数。如果你有l <= x <= u形式的其他线性约束,那么你确实得到了一个二次规划:

min { 0.5*e(x)^2 } <=> min { 0.5*(Ax-b)'*(Ax-b) } 
               <=> min { 0.5*x'*A'*A*x -b'Ax + 0.5*b'b) }
               <=> min { 0.5*x'*A'*A*x -b'Ax }

受线性约束

l <= x <= u

因此,您可以将矩阵D定义为一半 A'*AA'表示A transposed):

D = 1/2*A'*A

和向量c以满足

c' = -b'*A => c = -A'*b

所以你的方法不正确,但它很接近!