Hello, I’m new to cvx and optimization in general and I’m trying to find the optimal sensor location of a set of sensors by maximizing the minimum eigenvalue of a gram matrix.
Where W_o ist the sum of the gramians for each sensor position
I’d tried to solve the problem like this:
n=size(A,1);
C=zeros(n,n);
m=10;
sumGramian=0;
cvx_begin
variable b(m)
for i=1:n
C(i,i)=1;
gramian(:,:,i)=lyap(A’,C’*C);
C(i,i)=0;
sumGramian=sumGramian+gramian(:,:,i)*b;
end
maximize(lambda_min(sumGramian))
subject to
b >= 0;
b <= 1;
sum(b)<=4;
cvx_end
where A is 10x10 matrix created with matlabs rss() function. My problem is that I don’t get a matrix to maximize, because the gramian matrix is multiplied by a vector. If i change the activation b function to a nxn matrix my solution looks like this:
b:
(1,1) 0.4000
(2,2) 0.4000
(3,3) 0.4000
(4,4) 0.4000
(5,5) 0.4000
(6,6) 0.4000
(7,7) 0.4000
(8,8) 0.4000
(9,9) 0.4000
(10,10) 0.4000
But I’d like to use only a specific amount of sensors to maximize the function and not all sensors. Can anybody help me pls?
The optimization problem is from this paper: https://ieeexplore.ieee.org/document/9483072