YALMIP 输出 "Infeasible" 以获得简单可行的 SDP

YALMIP outputs "Infeasible" for an easy, feasible SDP

我想确定给定的 3x3 矩阵是否为半正定矩阵。为此,我在 YALMIP

中编写了以下 SDP
v=0.2;
a=sdpvar(1);
b=sdpvar(1);
M=[1 a -v/4 ; b 1 0 ; -v/4 0 0.25];
x=sdpvar(1);
optimize([M+x*eye(3)>=0],x,sdpsettings('solver','sedumi'))

这个程序给我错误 "Dual infeasible, primal improving direction found"。对于区间 (0,1).

中的任何 v 值都会发生这种情况

鉴于这道题比较好处理,我直接将矩阵对角化得到三个特征值就是下面多项式的三个根

16*t^3 - 36*t^2 + (24 - 16*a*b - v^2)*t + (-4 + 4*a*b + v^2)

用数值计算三个根的值我看到它们中的三个对于 sign(a)=sign(b) 都是正的(除了 a,b=+-1 附近的一个小区域) ,对于 v 的任何值。因此,SDP 应该 运行 没有问题并且输出 x 的负值而不会进一步复杂化。

为了让事情更有趣,我运行使用以下矩阵

相同的代码
M=[1 a v/4 ; b 1 0 ; v/4 0 0.25];

这个矩阵与前一个矩阵具有相同的特征值,在这种情况下程序 运行 没有任何问题,确认矩阵确实是半正定矩阵。

我真的很好奇这个问题的性质,非常感谢任何帮助。

编辑:我也尝试了 SDPT3 解算器,结果非常相似。事实上,对于 +v 的情况,程序 运行s 很顺利,但是当我输入减号时,我得到以下错误

'Unknown problem in solver (Turn on 'debug' in sdpsettings) (Error using  & …'

此外,当我对变量添加一些限制时,即我运行以下命令

optimize([total+w*eye(3)>=0,-1<=a<=1,-1<=b<=1],w,sdpsettings('solver','sdpt3'))

然后错误变成'Infeasible problem'错误。

迟到的答案,但无论如何。您指定的矩阵不对称。半定规划是关于 对称 半正定矩阵集的优化。

当您在 YALMIP 中定义此非对称矩阵约束时,它被简单地解释为一组 9 个线性元素约束,并且对于该线性程序,最优 x 是无界的。