PDA

查看完整版本 : 通过SeDuMi解决SDP(简单示例)


poster
2019-11-30, 23:21
我正在考虑以下半定编程:

https://i.stack.imgur.com/QEUBB.png (https://i.stack.imgur.com/QEUBB.png)

变量y = [y00; y10; y01; y20; y11; y02],因此尺寸为6。

我的MATLAB代码是

A1 = zeros(3,3); A2 = zeros(3,3); A3 = zeros(3,3); A4 = zeros(3,3); A5 = zeros(3,3); A6 = zeros(3,3); A0 = zeros(3,3); % F0 A1(1,1)=1; %y00 F1 A2(1,2)=1; A2(2,1)=1; %y10 F2 A3(1,3)=1; A3(3,1)=1; %y01 F3 A4(2,2)=1; %y20 F4 A5(2,3)=1; A5(3,2)=1; %y11 F5 A6(3,3)=1; %y02 F6 F0 = A0; F1 = A1; F2 = A2; F3 = A3; F4 = A4; F5 = A5; F6 = A6; c = [0;0;0;1;0;1]; btt = -c; % object function A = [0 0 1 0 0 0; 0 0 0 0 2 0]; % Equality constraint A b = [-1;-1]; delta = [10^-8;10^-8]; hatb = b-delta; At = -[vec(F1) vec(F2) vec(F3) vec(F4) vec(F5) vec(F6)]; Att = [-A;At]; ctt = [-hatb;vec(F0)]; Kl = size(A,1); Ks = size(F0,1); [x,y,info] = sedumi(Att,btt,ctt,K); y 我阅读了以下教程:

https://www.ece.uvic.ca/~wslu/Talk/SeDuMi-Remarks.pdf (第7页的SDP)

注意


在第9页上,我们要求Ay> = b。但是,我的约束之一是“ =”。所以我减去\ delta(非常小的数字),这样我就可以表示Ay> = b。
不等式约束可以表示为y00 * A1 + y10 * A2 + ....> = 0
我得到的y非常小(仅y00 = 0.0287),并且y02不等于y02。 (与上面给出的答案不同)
我不确定在哪里出错。请给我一些建议。

提前致谢。



更多&回答... (https://stackoverflow.com/q/55844480)