Я рассматриваю следующее полуопределенное программирование:
![enter image description here](https://i.stack.imgur.com/QEUBB.png)
Переменная y = [y00;у10;у01;у20;у11;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)];
K.l = size(A,1);
K.s = size(F0,1);
[x,y,info] = sedumi(Att,btt,ctt,K);
y
Я прочитал следующий учебник:
https://www.ece.uvic.ca/~wslu/Talk/SeDuMi-Remarks.pdf (SDP от с.7)
Обратите внимание, что
- На стр.9 требуется Ay> = b.Тем не менее, одним из моих ограничений является "=".Поэтому я вычитаю \ delta (очень маленькое число) так, чтобы я мог сформулировать Ay> = b.
- Ограничение неравенства можно сформулировать как y00 * A1 + y10 * A2 + ....> = 0
- Y, которое я получаю, очень мало (только y00 = 0,0287), а y02 равноне равно y02.(Не так, как ответ, приведенный выше)
Я не уверен, где я делаю ошибку.Пожалуйста, дайте мне несколько предложений.
Заранее спасибо.