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.

ok thank you i will read the book again, thank you very much.

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.

thank you. i learn these section carefully now. thank you very much

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

How did(23) become (27)?

23->27 is based on the figure, i want to alternatively optimize {F1,F2} and lambda to miminize lambda_max,the convergence curve is shown in the second figure,
i not sure this processing is right or not, can you help me?

23->27 is based on the figure, i want to alternatively optimize {F1,F2} and lambda to miminize lambda_max,the convergence curve is shown in the second figure,
i not sure this processing is right or not, can you help me?

I don’t know much about this really.

hello, i have soved the generalized eigenvalue problem based on alternative optimization, but i am not sure the optimization proceeding is right or not, can you help me? thank you