Hello,
The objective function I have is nuclear norm of a matrix X, along with one other norm term. I need to minimize this objective function and there are no constraints. The problem I am facing is that svd cannot be applied on sdpvar objects. So in order to go about this problem, I tried to supply a numerical initial value to X, using assign. When I do this, the value that I get after the optimization problem is solved is same as the value I had initialized it with. The code I am working on is as follows.
A_est = sdpvar(n,n);
B_est = sdpvar(n,1);
C_est = sdpvar(1,n);
D_est = sdpvar(1,1);
T_u_s = sdpvar(s,s);
T_y_s = sdpvar(s,s);
for i=1:s
for j=1:s
if i==j
T_u_s(i,j) = D_est;
elseif i<j
T_u_s(i,j) = 0;
elseif i==2 & j==1
T_u_s(i,j) = C_est * B_est;
else
T_u_s(i,j) = C_est * A_est^(i-2) * B_est;
end
end
end
for i=1:s
for j=1:s
if i==j
T_y_s(i,j) = 0;
elseif i<j
T_y_s(i,j) = 0;
else
T_y_s(i,j) = C_est * A_est^(i-2) * B_est;
end
end
end
y_est = sdpvar(N,1);
Y_est = sdpvar(s,(N-s+1));
for i = 1:s
for j = 1:N-s+1
Y_est(i,j) = y_est(j+i-1);
end
end
summation_of_norm = 0;
for i = 1:N
summation_of_norm = summation_of_norm + (y(i)-y_est(i))^2;
end
summation_of_norm = summation_of_norm/N;
A0 = 0.73 * eye(n,n);
B0 = ones(n,1);
C0 = randn(1,n);
D0 = 0.2;
y_est0 = zeros(N,1);
assign(y_est, y_est0)
assign(A_est, A0)
assign(B_est, B0) %ERROR: y_est is being approximated well but A,B,C,D remain the way they were initialised.
assign(C_est, C0)
assign(D_est, D0)
X = Y_est - T_y_s * Y;
constraint = [];
objective = norm_nuc(value(X))+ summation_of_norm ;
DIAGNOSTIC = solvesdp(constraint,objective) ;
The matrix X is in terms of A,B,C,D which are optimization variables. Also, y_est is an optimization variable which is also initialized using the command 'assign'. y_est is being approximated well because it appears in the term summation_of_norm. But other optimization variables that appear only in X, do not change; they stay as initialized.
I tried using 'usex0' but I get the error that the solver does not support warm-start through YALMIP and I have not been able to find a solver that supports 'usex0'.
The main problem is minimizing the nuclear norm of X. It would be great if you could help me out with this. Thank you in advance!