Dear everyone,
Does cvx can’t solve two related variables simultaneously?
I thought it was the problem and then I set another variable as given one using AO algorithm.
here’s my code.
function [Fi_opt,flag] = Generate_ES_Fi(N, M, K, H, G,...
W_ini, Fi_ini_ES, noise_maxpower, trans_maxpower)
cvx_begin %quiet
variable Fi(2,M) complex
%variable FI(M,M,K) hermitian
variable relax_scaler_D1(M,M,K) hermitian semidefinite
variable relax_scaler_D2(M,M,K) hermitian semidefinite
expressions LMI(M+M+1,M+M+1,K)
W=W_ini;
k=1:1:K;
u=K:-1:1;
for i=1:length(k)
if k(i)==1||u(i)==1
a(k(i))=0.5;
%%%%% Generate LMI %%%%%
LMI(M+M+1,M+M+1,K);
LMI(:,:,k(i))=[relax_scaler_D1(:,:,k(i)), FI(:,:,k(i)), Fi(k(i),:)';...
FI(:,:,k(i))', relax_scaler_D2(:,:,k(i)) ,Fi(k(i),:)';...
Fi(k(i),:), Fi(k(i),:) ,1 ];
Ty(k(i))=trace(relax_scaler_D1(k(i)))-2*trace(Fi(k(i),:)'*Fi_ini_ES(k(i),:))+trace(Fi_ini_ES(k(i),:)'*Fi_ini_ES(k(i),:));
end
end
maximize sum(a.*POLY)
subject to
k=1:K;
u=K:-1:1;
for i=1:length(k)
if k(i)==1 || u(i)==1
% diag(FI(:,:,u(i))+FI(:,:,k(i)))==1;
LMI(:,:,k(i)) == hermitian_semidefinite(2*M+1);
real(Ty(k(i)))<=0;
real(relax_scaler_D1(:,:,k(i)))>=0;
real(relax_scaler_D2(:,:,k(i)))>=0;
%z(k)>=noise_maxpower;
end
end
cvx_end
The results turns out:
The objective function is convex,the problem might be constrains.
I tried to eliminate variables to find out but failed.
Please someone give me a guide! gratefully thanks.