I'm quite new to SDP programming, hence I might not have been able to use the right search terms to find a solution.

I try to reformulate an SDP problem to the original form. However a side constraint gives me some headache. Given the problem, where $X$ is a blockmatrix, which can be written like: $$X = \begin{bmatrix}A_1 & B_1^T&0&0 \\ B_1& C &0&0 \\ 0 &0& A_2 & B_2^T \\ 0&0&B_2 & C\end{bmatrix}$$ with $A_1,B_1,A_2,B_2,C$ all being matrices. The SDP problem can be formulated as follows:

$$\underset{X}{\text{min }} \langle W, X \rangle, \\ X\succeq 0$$ and $W$ is a constant matrix However I am wondering, how I can enforce, that the two $C$ matrices in $X$ are the same after solving? For the problem it is important, that it is formulated like a standard SDP problem.

  • 1
    $\begingroup$ Shouldn't you have a $\min$ somewhere in your SDP problem? Also, what variables are your optimization variables? Lastly, what does $C \cdot X$ mean? It seems that $C$ and $X$ have different shapes. $\endgroup$
    – nicoguaro
    Commented May 27, 2021 at 15:20
  • $\begingroup$ thanks for your comment. I just changed the details, that the problem is clearer $\endgroup$
    – Max K
    Commented May 27, 2021 at 15:49
  • $\begingroup$ Does $\langle , \rangle$ represent a Frobenius inner product? $\endgroup$
    – nicoguaro
    Commented May 27, 2021 at 16:05
  • $\begingroup$ it does. $\langle A,B \rangle = tr(A^T B)$ $\endgroup$
    – Max K
    Commented May 27, 2021 at 17:26
  • 2
    $\begingroup$ Couldn't you just add the equality constraint $X_{22}=X_{44}$ for each element of these blocks? $\endgroup$ Commented May 27, 2021 at 19:36

1 Answer 1


First, a standard semidefinite program (in primal form) would be

$$\underset{X}{\text{min }} \langle W, X \rangle, \\ X\succeq 0,~\mathbf{A}(X) = b$$

where $\mathbf{A}(X) = b$ denotes the primal equalities (the model you have written is either trivially solved by $X=0$ or is unbounded)

In reality one would never work with such a limited form, so you can at least assume you can work with a cone $X$ composed of a direct product of several cones, in your case 2, call them $X_1$ and $X_2$. What you have to do then is simply to sit down and write down all the equalities describing that certain elements in $X_1$ and $X_2$ are the same, i.e. define all the linear equalities $\mathbf{A}(X_1,X_2) = b$. If you absolutely refuse to use anything but a (too) standard form where you only can have one cone, you not only have to create all the equalities equating two blocks in $X$, but also a lot of equalities describing zero elements.

..and in practice you would be much better off using a modelling language for this and skip all the indexing and book-keeping head-ache.

  • 1
    $\begingroup$ thanks a lot. The original problem was, that the original API of SDPLR does not support much more than the general problem, but when using it with YAMLIP it works. $\endgroup$
    – Max K
    Commented May 29, 2021 at 8:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.