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

Matt J
Matt J 2022년 7월 1일
편집: Matt J 2022년 7월 1일
Why secondordercone()? The problem you have posted has a quadratic objective whereas the problem structure assumed by secondordercone() has a linear objective:
Sitthipong
Sitthipong 2022년 7월 3일
편집: Sitthipong 2022년 7월 3일
Thank you very much. How to solve this problem?
Torsten
Torsten 2022년 7월 3일
편집: Torsten 2022년 7월 3일
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 2022년 7월 5일
Walter Roberson
Walter Roberson 2022년 7월 5일
fmincon can only handle complex values when there are no constraints, if I recall correctly.
Sitthipong
Sitthipong 2022년 7월 6일
Thank you very much. How to solve this problem?
Torsten
Torsten 2022년 7월 6일
Include your code - we cannot run a graphics snapshot.

댓글을 달려면 로그인하십시오.

답변 (1개)

Alan Weiss
Alan Weiss 2022년 7월 1일

1 개 추천

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

카테고리

도움말 센터File Exchange에서 Problem-Based Optimization Setup에 대해 자세히 알아보기

질문:

2022년 7월 1일

댓글:

2022년 7월 6일

Community Treasure Hunt

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

Start Hunting!

Translated by