How to solve these Generalized eigenvalue programming using CVX?
Apparently you did not understand when I said not to start multiple threads with the same topic. Did you study the link Previously provided?
sorry,i have read the book roughly,but i don’t know how to solve this problem using cvx, can you help me? i think my problem is very difficult, i really don not know how to solve this problem.
If you studied that book for that short a time and don’t understand convex formulation of generalized eigenvalue problem, you didn’t study it hard or long enough. This forum is not a crutch for you to avoid intellectual effort.
Did you CAREFULLY study section 2.2.3 “Generalized eigenvalue problems” of https://web.stanford.edu/~boyd/lmibook/lmibook.pdf , and then the bisection method described in section 4.2.5 “Quasiconvex optimization” of Boyd and Vandenberghe “Convex Optimization” . This may take you some time, especially, if you have to study preceding material in order to understand those sections.
indent preformatted text by 4 spaces
clc,
clear;
close all;
epsilon = 1e-3;
low_bod = -200;
upper_bod = 200;
iter_num = 100;
Nt = 10;
Ne = 4;
sigma = 1;
H = rand(Nt,Ne);
Pmax = 1;
t = 100;
for iter = 1:100
t = (low_bod+ upper_bod)/2;
cvx_begin sdp quiet
variable F1(Nt,Nt) hermitian semidefinite
variable F2(Nt,Nt) hermitian semidefinite
subject to
lamda_max((H'*F2*H+sigma^2*eye(Ne))\(H'*F1*H)) -t<=0
% subject to
% real( trace(F1))<=Pmax
real(trace(F1) + trace(F2))<=Pmax
cvx_end
if strcmp(cvx_status,'Solved')
upper_bod = t;
else
low_bod = t;
end
if abs(upper_bod-low_bod)<=epsilon
break;
end
disp(iter)
end
e=eig((H'*F2*H+sigma^2*eye(Ne))\(H'*F1*H));
min(e)
hello i want to use bisection algorithm to solve the generalized eigenvalue problem(quasi-convex optimization),but i meet a error in using lamda_max function, can you help me?
First of all, is your original problem a Generalized eigenvalue programming? Can you tell us why?
yes, my original problem a Generalized eigenvalue programming, lambda_max(A,B) is a quasi-convex function, which can be solved by bisection method, so i want to use bisection algorithm to solve this problem
indent preformatted text by 4 spaces
clc,
clear;
close all;
epsilon = 1e-3;
low_bod = -200;
upper_bod = 200;
iter_num = 100;
Nt = 10;
Ne = 4;
sigma = 1;
H = rand(Nt,Ne);
Pmax = 1;
t = 100;
lambda0 = 100;
val = zeros(iter_num,1);
for iter = 1:100
cvx_begin quiet
variable F1(Nt,Nt) hermitian semidefinite
variable F2(Nt,Nt) hermitian semidefinite
subject to
lambda0*(H'*F2*H+sigma^2*eye(Ne))- (H'*F1*H)==semidefinite(Ne)
(H'*F2*H+sigma^2*eye(Ne)) ==semidefinite(Ne)
real(trace(F1) + trace(F2))<=Pmax
cvx_end
cvx_begin sdp quiet
variable lambda
minimize (lambda)
subject to
lambda*(H'*F2*H+sigma^2*eye(Ne))- (H'*F1*H)==semidefinite(Ne)
cvx_end
lambda0 = lambda;
val(iter) = lambda;
disp(iter)
end
e=eig((H'*F2*H+sigma^2*eye(Ne))\(H'*F1*H));
min(e)
i




