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