0
$\begingroup$

I want to implement the following optimization problem from the following paper Randomized Gossip Algorithms, Page 10 Eq. 53\

enter image description here

1- In this problem, $W$, $P$, and $P_{ij}$ are $n\times{n}$ matrices. I would appreciate if you help me with implementing the following constraint in CVX.

\begin{equation} W=\frac{1}{n}\sum_{i,j=1}^{n}P_{i,j}W_{i,j} \end{equation}

2- Also, in this problem, $E$ is a set of neighbors of a nod $i$. Constraint $P_{ij}=0~if~ \{i,j\}\not\in{E}$ means that $P_{ij}$ is zero if node $i$ and $j$ are not neighbors. Does anyone can help with how to implement this neighborhood relationship?

For $n=3$, neighbors.xlsx can look like:

screenshot of neighbors.xlsx

This means node 1 is neighbor with node 2, node 2 is neighbor with node 1 and 3, and node 3 is neighbor with node2.

I have the written the following piece of code for that in Matlab. It does not work. Any help is greatly appreciated.

cvx_begin sdp
    agt = struct([]);
    neighbors = readcell('neighbors.xlsx');
    N = 2;
    for i = 1:N
      agt(i).neighbors = neighbors{i};
    end
    variable s
    variable P(N,N) symmetric
    variable W_ij(N,N) symmetric
    expression W
    
    minimize (s)
    
subject to     

P(:) >= 0;

    j = 1;
    for i = 1:N
        D =[i,j];
        if ~ismember(D,agt(i).neighbors)
            P(i,j)== 0;
        end
        j = j+1;
    end


    for i = 1:N
        for j = 1:N
            W = P(i,j).*W_ij;
        end    
    end
    W = (1/N).*W;
    W-(1/N)*ones(N,1)*ones(1,N) - s*eye(N) == semidefinite(N);

cvx_end
$\endgroup$
3
  • $\begingroup$ @NMech It is in Matlab $\endgroup$ Commented Jan 18, 2022 at 20:11
  • $\begingroup$ That is not valid vanilla Matlab at least syntactically. This is very specific to CVX which from what I understood its an add on to Matlab. IMHO, you should migrate this to Stack Overflow, where you might have better chances to obtain an answer. $\endgroup$
    – NMech
    Commented Jan 19, 2022 at 6:45
  • $\begingroup$ I do not know cvx. A few things stand out. $P$ appears to be a sparse matrix which could have been pre filled before starting the cvx block; particularly, well before the subject to block. $\endgroup$
    – AJN
    Commented Jan 19, 2022 at 15:18

0