Sorry for the missing data, I have check my code again this time it will run
clc;
clear all;
%Number of Antena at BS
L = 2;
h11 = [0.000016219438297 - 0.034701576275583i; -0.000988689560017 + 0.008111541693473i];
h21 = [-0.0071-0.0029i; 0.0002 + 0.0013i];
%Noise Power calculation
NoisePower_dbm = -90; %dBm
BandWidth = 20*10^6; % Hertz
NoisePowerLinear = 10^(NoisePower_dbm/10) ; % Unit mili watt / Hertz
%Noise power in the 20 Mega Hertz Bandwidth
NoisePowerLinearBW = NoisePowerLinear*BandWidth; % Unit mili watts
%Transmit Power
PbsMax_dbm = 22; %dbM
PbsMaxLinear = 10.^(PbsMax_dbm/10);
w11_init = [4.8696 + 4.5377i ; 2.9779 + 2.3829i];
w21_init = [4.4181 + 4.3582i ; 4.5687 + 5.4850i];
alpha_init = 0.3153 ;
tau_init = 2.3641 ;
beta_init = 53.3668 ;
count = 1;
iter_max = 2;
epsilon = 1e-5;
w11 = sdpvar(L,1,'full','complex');
w21 = sdpvar(L,1,'full','complex');
alpha = sdpvar(1,1,'full','real');
tau = sdpvar(1,1,'full','real');
beta = sdpvar(1,1,'full','real');
w = [w11' w21']';
option = sdpsettings('verbose',1,'solver','scip','cachesolvers',1);
option.scip.tolafun = 0.001;
option.scip.maxnodes = 600000;
option.scip.maxtime = 100;
while (count<=iter_max)
obj = -((2/beta_init) - beta/(beta_init^2)) ;
gamma11lhs = 0.5*(1-alpha_init)/(tau_init+epsilon)*tau^2 + ...
0.5*tau_init/(1-alpha_init +epsilon)*(1-alpha)^2 + NoisePowerLinearBW ;
gamma11rhs = (2*real((h11'*w11_init)'*(h11'*w11)) - norm(h11'*w11_init)^2)*beta;
%first term- lhs - gamma21
first_lhs = norm(h21'*w11)^2 + NoisePowerLinearBW;
%first term- rhs - gamma21
first_rhs = (2*real((h21'*w21_init)'*(h21'*w21)) - norm(h21'*w21_init)^2)*beta ;
%second term - lhs - gamma21
second_lhs = norm(h11'*w11)^2 + NoisePowerLinearBW;
second_rhs = ((2*real((h11'*w21_init)'*(h11'*w21))/(alpha_init+epsilon)) - (alpha*(norm(h11'*w21_init)^2)/(epsilon + alpha_init^2)))*beta;
cons = [((norm(w)^2) <= PbsMaxLinear) :'power' ...
(gamma11lhs<= gamma11rhs): 'gamma11' ...
(first_lhs <= first_rhs): 'first term gamma21' ...
(second_lhs <= second_rhs): 'second term gamma21' ...
(0 <= alpha <= 1) : 'alpha' ...
(0 <= tau ) : 'tau' ...
(0 <= beta): 'beta' ];
sol = optimize(cons,obj,option);
mydata_new = {value(w11),value(w21),value(alpha),value(tau),value(beta)};
[w11_init, w21_init, alpha_init, tau_init,beta_init] = mydata_new{:}
if (count >= 3 && abs(abs(a(end)) - abs(a(end-1))) < 0.001)
break
else
count = count + 1;
a = [a value(obj)];
end
end