I want to solve this problem

The constraints are not convex so cvx is inapplicable. (I tried CVX previously.)
I am thinking of using matlab optimization toolbox. I tried the following codes but they failed.
Nt = 4 ;
M = 64 ;
Gamma_R = 10^(3/10);
Gamma_T = 10^(3/10);
gamma_r = 0 ;
gamma_t = 0 ;
noise_variance_dBm = -70;
noise_variance = 10^(-70/10)*1E-3 ;
h_r =(randn(M,1)+1i*randn(M,1))/sqrt(2);
h_t =(randn(M,1)+1i*randn(M,1))/sqrt(2);
h_d =(randn(Nt,1)+1i*randn(Nt,1))/sqrt(2);
Phi_r =(diag(diag(rand(M,M)+1i*rand(M,M))))/sqrt(2);
Phi_t =(diag(diag(rand(M,M)+1i*rand(M,M))))/sqrt(2);
for n = 1:length(Nt)
N = Nt(n);
G = (randn(M,N)+1i*randn(M,N))/sqrt(2);
end
theta_r = zeros(M,M) ;
theta_t = zeros(M,M) ;
zeta = zeros(M,M) ;
a_r = [h_r'*Phi_r*G+h_d' , h_r'*Phi_r*G+h_d']*[eye(Nt), zeros(Nt,Nt);zeros(Nt,Nt),zeros(Nt,Nt)]; %.*[2*Nt,2*Nt] ;
a_t = [h_r'*Phi_r*G+h_d' , h_r'*Phi_r*G+h_d']*[zeros(Nt,Nt), zeros(Nt,Nt);zeros(Nt,Nt),eye(Nt)]; %.*[2*Nt,2*Nt] ;
b_r = [h_t'*Phi_t*G , h_t'*Phi_t*G ]*[eye(Nt), zeros(Nt,Nt);zeros(Nt,Nt),zeros(Nt,Nt)] ;
b_t = [h_t'*Phi_t*G , h_t'*Phi_t*G ]*[zeros(Nt,Nt), zeros(Nt,Nt);zeros(Nt,Nt),eye(Nt)] ;
%%
Asc = a_r;
bsc = sqrt(Gamma_R)*sqrt(abs(a_t).^2 + noise_variance^2);
dsc = 0;
gamma = 0 ;
conecons(2) = secondordercone(Asc,bsc,dsc,gamma);
Error using assert
Number of columns in the first argument must equal the number of elements in the third argument.

Error in secondordercone (line 13)
assert(numel(d) == size(A, 2), message('optim:coneprog:SizeMismatchColsOfSocAandD'));
Does anyone have ideas how Matlab toolboxes can be used to solve the problem or how the problem can be solved with matlab based libraries?

7 comentarios

Matt J
Matt J el 1 de Jul. de 2022
Editada: Matt J el 1 de Jul. de 2022
Why secondordercone()? The problem you have posted has a quadratic objective whereas the problem structure assumed by secondordercone() has a linear objective:
Sitthipong
Sitthipong el 3 de Jul. de 2022
Editada: Sitthipong el 3 de Jul. de 2022
Thank you very much. How to solve this problem?
Torsten
Torsten el 3 de Jul. de 2022
Editada: Torsten el 3 de Jul. de 2022
Use "fmincon".
And use your constraints (to be defined in nonlcon) in the squared form:
(a_r'*w)^2 - gamma_r * ((a_t'*w)^2 + sigma^2) >=0
(b_t'*w)^2 - gamma_t * ((b_r'*w)^2 + sigma^2) >=0
Sitthipong
Sitthipong el 5 de Jul. de 2022
Walter Roberson
Walter Roberson el 5 de Jul. de 2022
fmincon can only handle complex values when there are no constraints, if I recall correctly.
Sitthipong
Sitthipong el 6 de Jul. de 2022
Thank you very much. How to solve this problem?
Torsten
Torsten el 6 de Jul. de 2022
Include your code - we cannot run a graphics snapshot.

Iniciar sesión para comentar.

Respuestas (1)

Alan Weiss
Alan Weiss el 1 de Jul. de 2022

1 voto

You can use secondordercone by making a new variable m, a linear objective m, and another second-order cone constraint:
Minimize m such that .
You have to be careful when using complex numbers. Optimization toolbox solvers generally don't work well with complex numbers. Please check that you are satisfying the assumptions of the toolbox.
Good luck,
Alan Weiss
MATLAB mathematical toolbox documentation

Categorías

Preguntada:

el 1 de Jul. de 2022

Comentada:

el 6 de Jul. de 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by