Решить ДПС по SeDuMi (простой пример) - PullRequest
0 голосов
/ 25 апреля 2019

Я рассматриваю следующее полуопределенное программирование:

enter image description here

Переменная 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)

Обратите внимание, что

  1. На стр.9 требуется Ay> = b.Тем не менее, одним из моих ограничений является "=".Поэтому я вычитаю \ delta (очень маленькое число) так, чтобы я мог сформулировать Ay> = b.
  2. Ограничение неравенства можно сформулировать как y00 * A1 + y10 * A2 + ....> = 0
  3. Y, которое я получаю, очень мало (только y00 = 0,0287), а y02 равноне равно y02.(Не так, как ответ, приведенный выше)

Я не уверен, где я делаю ошибку.Пожалуйста, дайте мне несколько предложений.

Заранее спасибо.

1 Ответ

2 голосов
/ 26 апреля 2019

Почему вычитание маленькой дельты имеет какое-либо отношение к преобразованию неравенства в равенство?Равенство было бы двусторонним неравенством (т. Е. Два равенства давали бы четыре поэлементных ограничения)

Однако правильным способом здесь было бы использование поля Kf для передачи равенств.

Более того, ваша модель должна интерпретироваться как представление первичной стандартной формы, то есть у вас должно быть только две матрицы А для связи двух равенств.

Возможно, вам следует использовать инструмент моделирования, такой как YALMIP или CVX, чтобы избежать всех этих низкоуровневых мелких деталей, которые ужасны для всего, кроме этих мелких тривиальных проблем

...