使用matlab进行符号二次优化

时间:2016-01-08 18:35:06

标签: matlab optimization quadratic-programming

我正在尝试最小化以下表达式: U and W are not important you can consider them as 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) 

任何帮助将不胜感激

1 个答案:

答案 0 :(得分: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);