theta_initial = diag(normalized_complex);
e = exp(1);
a_initial = rand; b_initial = rand; c_initial = rand; d_initial = rand;
e_initial = rand; f_initial = rand; g_initial = rand; l_initial = rand;
W1_initial = rand(2,2); w1_initial = rand(2,1);
W2_initial = rand(2,2); w2_initial = rand(2,1);
rho_1_initial = rand; rho_2_initial = rand; rho_3_initial = rand; rho_4_initial = rand;
rho_5_initial = rand; rho_6_initial = rand; rho_7_initial = rand; rho_8_initial = rand;
x1_initial = rand; x2_initial = rand; x3_initial = rand; x4_initial = rand;
y1_initial = rand; y2_initial = rand; y3_initial = rand; y4_initial = rand;
%v1_initial = randn; v2_initial = randn; v3_initial = randn; v4_initial = randn;
m1_initial = rand; m2_initial = rand; m3_initial = rand; m4_initial = rand;
%alpha_1_initial = randn; alpha_2_initial = randn; alpha_3_initial = randn; alpha_4_initial = randn;
beta_1_initial = rand; beta_2_initial = rand; beta_3_initial = rand; beta_4_initial = rand;
posi_initial = zeros(n,1); episilon_initial = rand(1,4); episilon_e_initial = rand(1,4);
al_initial = rand(1,4);
while( count < maxIter)
H_u1 = (h(:,1)’ * theta_initial * G_SR)’ * (h(:,1)’ * theta_initial * G_SR); H_u2 = (h(:,2)’ * theta_initial * G_SR)’ * (h(:,2)’ * theta_initial * G_SR);
H_u3 = (h(:,3)’ * theta_initial * G_SR)’ * (h(:,3)’ * theta_initial * G_SR); H_u4 = (h(:,4)’ * theta_initial * G_SR)’ * (h(:,4)’ * theta_initial * G_SR);
H_e1 = (g(:,1)’ * theta_initial * G_SR)’ * (g(:,1)’ * theta_initial * G_SR); H_e2 = (g(:,1)’ * theta_initial * G_SR)’ * (g(:,1)’ * theta_initial * G_SR);
H_e3 = (g(:,3)’ * theta_initial * G_SR)’ * (g(:,3)’ * theta_initial * G_SR); H_e4 = (g(:,4)’ * theta_initial * G_SR)’ * (g(:,4)’ * theta_initial * G_SR);
% 固定theta对W进行优化
% Rs_old = Rs_new;
cvx_begin sdp
variable W1(2,2) complex; variable al(1,4) nonnegative; variable W2(2,2) complex;
variable episilon(1,4) nonnegative; variable episilon_e(1,4) nonnegative;
variable a(1,1) nonnegative; variable b(1,1) nonnegative; variable c(1,1) nonnegative;
variable d(1,1) nonnegative; variable e(1,1) nonnegative; variable f(1,1) nonnegative;
variable g(1,1) nonnegative; variable l(1,1) nonnegative;
variable rho_1(1,1) nonnegative; variable rho_2(1,1) nonnegative; variable rho_3(1,1) nonnegative;
variable rho_4(1,1) nonnegative; variable rho_5(1,1) nonnegative; variable rho_6(1,1) nonnegative;
variable rho_7(1,1) nonnegative; variable rho_8(1,1) nonnegative;
variable t(1,1) nonnegative;
maximize real(t - 10e5 * (trace(W1) - trace((w1_initial * w1_initial')' * W1)) - 10e5 * (trace(W2) - trace((w2_initial * w2_initial')' * W2)) )
subject to
t <= a - b + c - d + e - f + g - l;
sum_square_abs(vec(W1)) + sum_square_abs(vec(W2)) <= 10;
al(1) + al(2) == 1; al(3) + al(4) == 1;
2 ^ a - 1 <= rho_1; 2 ^ c - 1 <= rho_3; 2 ^ e - 1 <= rho_5; 2 ^ g - 1 <= rho_7;
2 ^ b_initial * (1 + log(2) * (b - b_initial)) - 1 >= rho_2;
2 ^ d_initial * (1 + log(2) * (d - d_initial)) - 1 >= rho_4;
2 ^ f_initial * (1 + log(2) * (f - f_initial)) - 1 >= rho_6;
2 ^ l_initial * (1 + log(2) * (l - l_initial)) - 1 >= rho_8;
[ trace(H_u1 * W1), episilon(1); episilon(1), al(1)] >= 0 ;
2 * episilon_initial(1) * episilon(1) / rho_1_initial - episilon_initial(1) ^ 2 * rho_1 / (rho_1_initial ^ 2) >= abs(trace(H_u1 * W2)) + 1;
[trace(H_e1 * W1), episilon_e(1); episilon_e(1), al(2)] >= 0;
real(rho_2 * [episilon_e_initial(1) ^ 2 + trace(H_e1 * W2_initial) + 1] / al_initial(1) - ...
rho_2_initial * [episilon_e_initial(1) ^ 2 + trace(H_e1 * W2_initial) + 1] * al(1) / al_initial(1) ^ 2 + ...
rho_2_initial * [2 * episilon_e_initial(1) * episilon_e(1) - episilon_e_initial(1) ^ 2 + ...
sum(sum(H_e1.' .* (W2 - W2_initial))) + 1 + trace(H_e1 * W2_initial)] / al_initial(1) ) >= real(trace(H_e1 * W1)) ;
[trace(H_u2 * W1), episilon(2); episilon(2), al(2)] >= 0;
2 * episilon_initial(2) * episilon(2) / rho_3_initial - episilon_initial(2) ^ 2 * rho_3 / (rho_3_initial ^ 2) ...
+ 2 * episilon_initial(2) * episilon(2) - 2 * episilon_initial(2) ^ 2 >= abs(trace(H_u2 * W1)) + abs(trace(H_u2 * W2)) + 1;
[trace(H_e2 * W1), episilon_e(2); episilon_e(2), al(1)] >= 0;
real(rho_4 * [episilon_e_initial(2) ^ 2 + trace(H_e2 * W2_initial) + 1] / al_initial(2) - ...
rho_4_initial * [episilon_e_initial(2) ^ 2 + trace(H_e2 * W2_initial) + 1] * al(2) / al_initial(2) ^ 2 + ...
rho_4_initial * [2 * episilon_e_initial(2) * episilon_e(2) - episilon_e_initial(2) ^ 2 + ...
sum(sum(H_e2.' .* (W2 - W2_initial))) + 1 + trace(H_e2 * W2_initial)] / al_initial(2) ) >= real(trace(H_e2 * W1)) ;
[trace(H_u3 * W2), episilon(3); episilon(3), al(3)] >= 0;
2 * episilon_initial(3) * episilon(3) / rho_5_initial - episilon_initial(3) ^ 2 * ...
rho_5 / (rho_5_initial ^ 2) >= abs(trace(H_u3 * W1)) + 1;
[trace(H_e3 * W2), episilon_e(3); episilon_e(3), al(4)] >= 0;
real(rho_6 * [episilon_e_initial(3) ^ 2 + trace(H_e3 * W1_initial) + 1] / al_initial(3) - ...
rho_6_initial * [episilon_e_initial(3) ^ 2 + trace(H_e3 * W1_initial) + 1] * al(3) / al_initial(3) ^ 2 + ...
rho_6_initial * [2 * episilon_e_initial(3) * episilon_e(3) - episilon_e_initial(3) ^ 2 + ...
sum(sum(H_e3.' .* (W1 - W1_initial))) + 1 + trace(H_e3 * W1_initial)] / al_initial(3) ) >= real(trace(H_e3 * W2)) ;
[trace(H_u4 * W2), episilon(4); episilon(4), al(4)] >= 0;
2 * episilon_initial(4) * episilon(4) / rho_7_initial - episilon_initial(4) ^ 2 * rho_7 / (rho_7_initial ^ 2) ...
+ 2 * episilon_initial(4) * episilon(4) - 2 * episilon_initial(4) ^ 2 >= abs(trace(H_u4 * W1)) + abs(trace(H_u4 * W2)) + 1;
[trace(H_e4 * W2), episilon_e(4); episilon_e(4), al(3)] >= 0;
real(rho_8 * [episilon_e_initial(4) ^ 2 + trace(H_e4 * W1_initial) + 1] / al_initial(4) - ...
rho_8_initial * [episilon_e_initial(4) ^ 2 + trace(H_e4 * W1_initial) + 1] * al(4) / al_initial(4) ^ 2 + ...
rho_8_initial * [2 * episilon_e_initial(4) * episilon_e(4) - episilon_e_initial(4) ^ 2 + ...
sum(sum(H_e4.' .* (W1 - W1_initial))) + 1 + trace(H_e4 * W1_initial)] / al_initial(4) ) >= real(trace(H_e4 * W2)) ;
cvx_end
This is the MATLAB code. Could you please help me see where the problem is?
I can’t see exactly what the error is, but an error at cvx_end usually is indicative of some type of installation error or incompatibility, or possibly a corrupted MATLAB session.
I recommend reinstalling CVX. You might as well install CVX 2.2.2. And do it in a new session of MATLAB.