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 件のコメント

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 ExchangeProblem-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