символическая квадратичная оптимизация с использованием Matlab

Я пытаюсь минимизировать следующее выражение: U и W не важны, вы можете считать их I

Я пытаюсь минимизировать по x, учитывая y, x ^ H и A. с U и W в качестве единичной матрицы.

Я попробовал fmincon, но безуспешно, вот что я сделал

   [B,C] = fmincon(@(X-OD).'*(X-OD)+(Ycount-A*X).'*(Ycount-A*X),0,[],[],[],[],0,inf) 

Любая помощь будет оценена


person user2042145    schedule 08.01.2016    source источник
comment
Пожалуйста, будьте более конкретными, чем без успеха; если были сообщения об ошибках или предупреждения, отредактируйте вопрос, чтобы включить их. Пожалуйста, будьте более конкретными, чем вот что я сделал; предоставьте входные данные для всех переменных перед вашей одной строкой кода и любой бессмысленный вывод вместе с ожидаемым выводом.   -  person TroyHaskin    schedule 08.01.2016
comment
Кроме того, если вашей целью является фактическая символическая оптимизация с общими матрицами, хотя предполагается, что они известны, я бы сказал, что использование Matlab для решения этой проблемы в лучшем случае сомнительно.   -  person TroyHaskin    schedule 08.01.2016
comment
Я не вижу никакой символической математики в вашем вопросе. fmincon — это процедура числовой оптимизации. Пожалуйста, отредактируйте, чтобы уточнить, что вы имеете в виду, или удалите символику. Что еще более важно, но без успеха не помогает. Что с этим не так? Отредактируйте, чтобы предоставить полностью работоспособный код, чтобы другие могли попытаться воспроизвести его. Укажите какие-либо ошибки (полностью) или почему вывод не соответствует ожидаемому и почему?   -  person horchler    schedule 08.01.2016


Ответы (1)


Я собираюсь проигнорировать «символическую» часть вопроса. Для численного решения этой задачи я бы рекомендовал два подхода:

Использовать CVX

Загрузите пакет CVX. Код будет:

cvx_begin
variables x(n)

minimize(quad_form(x - xh, U_inv) + quad_form(y - A*x, W_inv))
subject to:
x >= 0
cvx_end

Посчитайте немного и используйте функцию Matlab quadprog

Выполнив некоторую алгебру, вы можете показать, что ваша проблема эквивалентна:

minimize (over x) .5x'(inv(U) + A'inv(W)*A)x +(-y'*inv(W)*A-xh'*inv(U))*x
      subject to: x>=0

Это вы можете использовать функцию Matlab quadprog.

H = U_inv + A'*W_inv*A;         %'
f = -y'*W_inv*A - xh'*U_inv;    
Aeq = [];
beq = [];
LB  = zeros(n, 1);
UB  = [];
x_method2 = quadprog(H, f, [], [], Aeq, beq, LB, UB);
person Matthew Gunn    schedule 08.01.2016
comment
Благодарю вас! работает нормально, я был за границей, не мог ответить раньше - person user2042145; 19.01.2016