While optimising a problem with several variables. I encountered some difficulty when optimising one of the variable. While optimising that variable, optimal solution of the subproblem is obtained but instead of one vector, I have obtained multiple vectors (denoted by \bar{\boldsymbol h_i^{\#*}} ) as solution. So, I used an additional norm minimization problem to obtain an unique vector as solution, which is given below.
The norm minimization sub problem is given as \sum_{i} \min\limits_{ \boldsymbol \beta_i, \theta_m^{\#}} \|\boldsymbol \beta_i (\bar{\boldsymbol h_i^{\#*}})^H - ( \boldsymbol h^H_{d,i} + \boldsymbol {(\theta^{\#})^H} \boldsymbol N_{i} ) \|^2_2, \text{s.t.} \ \ \| \theta_m^{\#} \|=1, where \boldsymbol{\theta} =[\theta_1^{\#},...,\theta_m^{\#},...,\theta_M^{\#}]. Here, \boldsymbol \beta_i is a tuning parameter.
Following MATLAB code is written.
cvx_begin
variable theta(M) complex
variable beta(K) nonnegative
expression total
for i=1:K
total(i)= (norm((-( theta' * (diag(Hr(:,i)')* Z) ) - ( Hd(:,i)' - beta(i) * hopt(:,i)') ),2) );
end
minimize ( sum(total) )
subject to
norm(theta)<=1;
cvx_end
theta=theta/norm(theta);
theta=conj(theta);
Assuming following parameters for the sub problem.
> Hd=zeros(6,4); K=4;
> Hr=[ 0.0131 - 0.0002i 0.0129 - 0.0000i 0.0089 - 0.0020i 0.0163 - 0.0018i; 0.0070 + 0.0002i -0.0049 + 0.0052i 0.0004 + 0.0122i 0.0168 + 0.0075i; 0.0099 + 0.0066i -0.0046 - 0.0104i -0.0106 + 0.0162i 0.0092 + 0.0089i; 0.0093 + 0.0021i 0.0054 + 0.0045i -0.0142 - 0.0017i 0.0110 + 0.0075i; 0.0139 + 0.0011i -0.0128 - 0.0034i -0.0052 - 0.0106i 0.0066 + 0.0136i; 0.0113 + 0.0040i 0.0152 - 0.0040i 0.0149 - 0.0087i -0.0070 + 0.0138i; 0.0152 + 0.0001i -0.0027 + 0.0089i 0.0087 + 0.0117i -0.0062 + 0.0110i; 0.0115 + 0.0005i -0.0089 - 0.0094i -0.0044 + 0.0144i -0.0166 + 0.0141i; 0.0123 + 0.0001i 0.0158 + 0.0073i -0.0133 + 0.0067i -0.0133 + 0.0071i; 0.0097 - 0.0006i -0.0076 + 0.0040i -0.0073 - 0.0162i -0.0128 + 0.0039i;];
> Z=[ 1.1696 - 0.0675i 0.2033 - 0.6292i -0.4870 - 0.7863i -0.9097 + 0.1779i -0.3686 + 0.7969i 0.2516 + 1.1239i; 0.5554 + 0.7903i 1.1773 + 0.3743i 0.7152 - 1.0514i -0.3052 - 0.6059i -0.6591 - 0.4586i -0.9086 + 0.5358i; -0.5485 + 0.7511i 0.2888 + 0.9353i 1.0356 + 0.0179i 0.4255 - 0.6681i -0.4886 - 0.8426i -1.4398 - 0.2979i; -0.5585 - 0.3044i -0.6440 + 1.1799i 0.6146 + 1.0246i 1.0445 - 0.3872i 0.3457 - 0.5123i -0.4408 - 0.9332i; -0.4801 - 0.6843i -1.3015 - 0.1011i -0.7191 + 0.8359i 0.2766 + 0.6587i 0.9303 + 0.1537i 0.5858 - 0.5719i; 0.1619 - 0.9366i -0.2730 - 0.9554i -1.0684 + 0.0152i -0.3227 + 0.6841i 0.3899 + 0.8301i 0.7433 + 0.2087i; 0.6768 - 0.3807i 0.0653 - 0.6700i -0.6269 - 0.7651i -0.8630 + 0.4205i -0.7211 + 0.4721i 0.5060 + 0.7233i; 0.2991 + 1.1094i 0.5013 - 0.3072i 0.3772 - 1.3365i -0.8090 - 0.8157i -0.7918 - 0.1036i -0.5878 + 0.5761i; -0.4834 + 0.9610i 0.8809 + 0.5697i 1.2653 - 0.0992i 0.6460 - 0.6706i -0.3965 - 0.8065i -1.1927 - 0.1207i; -0.8109 + 0.5107i -0.1648 + 0.7115i 0.6093 + 0.8449i 1.1094 - 0.1049i 0.6086 - 1.1580i -0.4068 - 0.3676i;];
> hopt=[0.3675 + 0.1049i 0.3675 + 0.1049i 0.3675 + 0.1049i 0.3675 + 0.1049i; 0.0590 + 0.3735i 0.0590 + 0.3735i 0.0590 + 0.3735i 0.0590 + 0.3735i; -0.2062 - 0.2350i -0.2062 - 0.2350i -0.2062 - 0.2350i -0.2062 - 0.2350i; 0.1066 - 0.5802i 0.1066 - 0.5802i 0.1066 - 0.5802i 0.1066 - 0.5802i; -0.1192 - 0.1110i -0.1192 - 0.1110i -0.1192 - 0.1110i -0.1192 - 0.1110i; 0.4885 + 0.0000i 0.4885 + 0.0000i 0.4885 + 0.0000i 0.4885 + 0.0000i;];
Above code results \boldsymbol{\theta} value as below. With this \boldsymbol{\theta} value, for the main problem (which is not shown here) the objective function is found to be very small.
> theta=[0.2967 - 0.7119i; 0.2732 - 0.1907i; -0.1290 - 0.1067i; -0.2510 + 0.0768i; 0.1016 - 0.1321i; 0.2891 + 0.0470i; 0.1942 + 0.0398i; 0.1691 - 0.0156i; -0.0876 + 0.0231i; 0.0745 + 0.0433i;];
As \boldsymbol \theta=exp(1j.* \ \boldsymbol \psi), 0\leq\boldsymbol \psi\leq2\pi. If some random value (generated as \boldsymbol \theta=exp(1j.*rand(10,1).*2.*pi) ) as shown below is being used for \boldsymbol \theta, then main objective function is having better result.
> theta=[ -0.1794 + 0.9838i; 0.3537 - 0.9354i; 0.7650 - 0.6440i; 0.9662 - 0.2580i; 0.9830 - 0.1836i; 0.5407 - 0.8412i; 0.3609 - 0.9326i; 0.4183 - 0.9083i; -0.7908 - 0.6121i; -0.8565 + 0.5162i;];
Thus, I feel as the sub problem is norm minimization, \boldsymbol \theta in the sub problem is getting minimized. And, hence value of objective function in the main problem is getting decreased. This could be an error occurred due to wrong problem formulation. Anyway, help is appreciated. Thanks in advance.