When I use CVX to solve my problem, it works in first two rounds,then its status become infeasible.
Status: Infeasible
Optimal value (cvx_optval): +Inf
I wonder why that is.
Thank U.
CODE:
close all
clear all
clc
U=4;
M=U;
ITER_MAX = 100;
H=sqrt(1/2).*(randn(M,U)+1i*randn(M,U));
%% initialize w
Pmax=100;
gamma=10;
cvx_begin sdp
variable w(M,U) complex
minimize norm(w,2)
subject to
for u=1:U
norm(w,2)<=Pmax;
end
cvx_end
for u =1:U
A(1,u)=H(:,u)’*w(:,u);
end
delta1=1.5;
rho=0.1;
f=0;
g=zeros(1,U);
z=zeros(M,U);
e=zeros(M,U);
sumH=0;
for u=1:U
sumH=sumH+H(:,u)*H(:,u)';
end
for t=1:ITER_MAX
%% obtain copy of minimiza SINR
cvx_begin sdp
variable alpha1 nonnegative
minimize
2/rho*pow_pos(abs(alpha1-delta1+f),2)
subject to
for u=1:U
for i=1:U
if(i==u)
alpha1*(real(pow_pos(abs(sum(sum(A))-A(1,u)),2))+1e-10)-2*real(w(:,u)'*H(:,u)*A(u))+pow_pos(abs(H(:,u)'*w(:,u)),2)<=0;
end
end
end
cvx_end
%% obtain A, A=H(:,u)’*w(:,u)
for u=1:U
cvx_begin sdp
variable A(1,U) complex
minimize
rho/2*pow_pos(abs(A(1,u)-H(:,u)’*w(:,u)+g(1,u)),2)
subject to
alpha1*(pow_pos(abs(sum(sum(A))-A(1,u)),2)+1e-10)-2*real(w(:,u)'*H(:,u)*A(1,u))+pow_pos(abs(H(:,u)'*w(:,u)),2)<=0;
gamma*(pow_pos(abs(sum(sum(A))-A(1,u)),2)+1e-10)-2*real(w(:,u)'*H(:,u)*A(1,u))+pow_pos(abs(H(:,u)'*w(:,u)),2)<=0;
cvx_end
end
%% obtain vector of BF w
for m=1:M
e(m,:)=w(m,:)-z(m,:); v(m,:)=min(Pmax/norm(e(m,:),2),1)*e(m,:);
end
for u=1:U
D=H(:,u)'.*(A+g); w(:,u)=inv(rho.*(eye(M))+rho.*sumH)*(rho.*(v(:,u)+z(:,u))+rho.*(sum(D,2)));
end
%% obtain minimize SINR
delta=1/rho+alpha1+f;
%% update dual variables
if(abs(delta-delta1)<=1e-2
)
break;
else
f=f+(alpha1-delta);
for u=1:U
g(1,u)=g(1,u)+(A(1,u)-H(:,u).’*w(:,u));
end
z=z+(v-w);
end
delta1=delta;
end