У меня возникла проблема с использованием YALMIP; Я подозреваю, что делаю что-то глупое, и я был бы очень признателен, если бы кто-нибудь указал, что это такое.
Я пытаюсь решить некоторые SDP. Когда я не определяю цель, YALMIP возвращает решение (подразумевая, что проблема разрешима). Однако, когда я прикрепляю к нему цель, YALMIP возвращает, что задача неразрешима, что меня немного озадачило.
Вот код простейшего SDP, который я смог состряпать, в котором происходит вышеописанное. Объявление переменных и установка ограничений выглядит следующим образом:
y = sdpvar(6,1);
M = sdpvar(3,3);
C = [0,0,0,0,0,0; 0,0,0,0,0,0; -2,0,1.8,0,2,1; 0,0,0,0,0,0; 1,0,-1,0,-1.2,0;
0,0,0,0,0,0;];
F = [C*y==0, y(6) == 1, M>=0];
F = [F,M(1,1) == y(1), M(2,1) == y(2), M(3,1) == y(3),...
M(2,2) == y(4), M(3,2) == y(5), M(3,3) == y(6)];
Теперь, если я просто попрошу YALMIP найти приемлемое решение с помощью
solvesdp(F)
он возвращается
info: 'Successfully solved (LMILAB)'
problem: 0
и некоторые допустимые M и y (я проверил, что они действительно есть). Однако, если я добавлю цель «минимизировать y (3)» (или любую линейную комбинацию элементов y) с
solvesdp(F,y(3))
он возвращает, что проблема неразрешима:
info: 'Infeasible problem (LMILAB)'
problem: 1
а y и M заполнены токенами "NaN".
Спасибо заранее.