I am currently using the BCD algorith. In my previous subproblem, I optimized and obtained the variable `R_B`

,`R_E`

,`lambda_B`

, `lambda_E`

, `xi`

, `alpha1`

, `beta1`

and `V`

. In the current subproblem, given the optimized variable mentioned above, I want to optimize the variable `W`

and `Z`

. However, is it feasible to optimize the variable `W`

and `Z`

(both are hermitian semidefinite) with the target function given constant `R_B - R_E`

? Additionally, even if I define `R_B`

,`R_E`

as variables, the maximum secrecy rate obtained through optimization is at most `R_B - R_E`

from the optimization result in the previous subproblem. These two questions have been troubling me for a long time. Please help me!

This is my current subproblem:

This is my cvx code:

```
%% %%%%%%%%%% Given R_B,R_E,lambda_B,lambda_E,xi,alpha1,beta1and V, optimize W,Z %%%%%%%%%%
load Parameter20240102-2.all.mat % optimized R_B,R_E,lambda_B,lambda_E,xi,alpha1,beta1and V in the last sub-problem
RE_l = R_Eve;
TTP1 = [0]; tmp = 0; flag_1 = 0; idx_1 = 0;
while(flag_1 == 0)
cvx_begin
cvx_solver mosek
cvx_precision low
variables R_B R_E;
variable W(N,N) hermitian semidefinite;
variable Z(N,N) hermitian semidefinite;
expression mu;
expressions a11 a12 a21 a22 A;
% LHS Taylor expression
%mu = real(2^RE_l + 2^RE_l*log(2)*(R_E - RE_l));
mu = 2^RE_l + 2^RE_l*log(2)*(R_E - RE_l);
a11 = alpha1.*diag(ones(M, 1)) + lambda_E.*K_E.*K.*diag(diag(H_LOS*Z*H_LOS'))*V -...
K_E.*K.*diag(diag(H_LOS*W*H_LOS'))*V;
%a11 = real(a11);
a12 = (lambda_E.*K_E.*K.*g_hat*diag(diag(H_LOS*Z*H_LOS'))*V - ...
K_E.*K.*g_hat*diag(diag(H_LOS*W*H_LOS'))*V)';
%a12 = real(a12);
a21 = lambda_E.*K_E.*K.*g_hat*diag(diag(H_LOS*Z*H_LOS'))*V - ...
K_E.*K.*g_hat*diag(diag(H_LOS*W*H_LOS'))*V;
%a21 = real(a21);
a22 = (lambda_E.*K_E.*K.*real(trace(V*G_hat*Z*G_hat')) -...
K_E.*K.*real(trace(V*G_hat*W*G_hat')) +...
lambda_E.*K.*real(trace(H_LOS*Z*H_LOS')) -...
K.*real(trace(H_LOS*W*H_LOS')) +...
lambda_E*K_E*M*real(trace(Z)) + lambda_E*M*real(trace(Z)) -...
K_E*M*real(trace(W)) - M*real(trace(W)) - xi) - alpha1.*nu^2;
%a22 = real(a22);
A = [a11, a12; a21, a22];
% objective function
maximize (R_B - R_E)
%maximize (trace(W) + trace(Z))
% Constraints
subject to
% Constraint 1
exp(log(2)*R_B) <= lambda_B + 1;
% Constraint 2
mu >= lambda_E + 1;
% Constraint 3
trace(W) + trace(Z) <= p_D;
% Constraint 4
max(lambda_B, 2^r_B - 1).*(K_B*K*real(trace(V*H_B*Z*H_B')) + K_B*M*real(trace(Z)) +...
K*real(trace(H_LOS*Z*H_LOS')) + M*real(trace(Z)) + sigma_B) <=...
K_B*K*real(trace(V*H_B*W*H_B')) + K_B*M*real(trace(W)) +...
K*real(trace(H_LOS*W*H_LOS')) + M*real(trace(W));
% Constraint 5
%A == semidefinite(M + 1);
A == hermitian_semidefinite(M + 1);
cvx_end
% update
RE_l = R_E;
tmpN = R_B - R_E;
TTP1 = [TTP1 tmpN];
% convergence
if abs(tmpN - tmp)/abs(tmp) < 10^(-2)
flag_1 = 1;
break;
end
tmp = tmpN;
% maximum loop
idx_1 = idx_1 + 1;
if idx_1 >= 30
break;
end
end
```