3
$\begingroup$

We know the standard form SDP has linear equality constraints (p.168 of Convex Optimization, S. Boyd):

enter image description here

In my study, I derive a trace product inequality like

$$\langle B_i,X\rangle \leq d_i\quad i=1\ldots n$$

where

  1. $X\in \mathbb{R^{n\times n}}$
  2. $B_i\in \mathbb{R^{n\times n}}$
  3. $d_i\in \mathbb{R}$

If I want to put this inequality in the original SDP problem, should I rewrite it as an equality constraint? or I can directly put it in the original SDP? Is there any suggested ways to deal with this?

  • 1
    An SDP doesn't _have_ to take that equality constrained form you indicated. Indeed, even in Boyd & Vandenberghe, they offer alternative forms. There's nothing wrong with adding linear inequalities to SDPs.2017-02-10

1 Answers 1

3

You can put your inequality into the form of an equality by adding a slack variable and writing it as

$\langle B, X \rangle + s=d$

where

$s \geq 0$

To put this in matrix form, write your constraint as

$\langle A, Z \rangle = d$

where

$A=\left[ \begin{array}{cc} B & 0 \\ 0 & 1 \\ \end{array} \right]$

and

$Z=\left[ \begin{array}{cc} X & 0 \\ 0 & s \\ \end{array} \right]$.

Most software packages for SDP make it easy to add additional nonnegative variables to the problem as additional diagonal blocks without requiring extra storage for all of the off diagonal 0's.

  • 0
    Nice way to deal with it.2017-02-11
  • 1
    It is indeed a nice way to deal with it _on paper_. But _in practice_ you should never do such a thing (and Brian certainly knows this). Rather, you should be selecting a solver that allows you to freely mix semidefinite constraints and standard linear equations and inequalities.2017-02-12
  • 1
    In fact, what I described is how solvers like CSDP, SeDuMi, SDPT3, and SDPA all handle non-negative "linear" variables. Because the Z matrix is dealt with as a block diagonal matrix, $X$ and $s$ are separately required to be "positivie semidefninite" (which just means $s\geq 0$ in the case of $s$.)2017-02-12
  • 0
    I think it's fair to say that if you're using a higher level modeling language (like Michael's CVX), then you should let it handle this detail for you.2017-02-12
  • 1
    @BrianBorchers I have to disagree. Sure, I know that SeDuMi, for instance, will attempt to find and exploit block diagonal structure in any semidefinite constraints you pass into it. But when it finds it, it breaks it apart into multiple semidefinite or linear constraints, and processes them separately. Internally it is treating the model as using a Cartesian product of semidefinite/quadratic/linear cones, not a block diagonal SDP. And nobody should combine multiple SDP/linear blocks into a single SDP before passing them to these solvers, whether using CVX or not.2017-02-12
  • 1
    (And to @sleevechen, let me clarify, we're having primarily a semantic argument here, between friends ;-))2017-02-12
  • 1
    I think we're arguing about definitions rather than anything of substance. SeDuMi, CSDP, SDPA, and SDPT3 all work on problems that are formulated in terms of a cartesian product of semidefinite/quadratic/linear cones. The "block diagonal matrix" with "diagonal blocks" formulation is exactly equivalent to "a carteisan product of semidefinite and linear cones." Note that the SDPA file format is done as "block diagonal matrix."2017-02-12
  • 1
    @BrianBorchers again I agree that it's equivalent in a mathematical/on-paper sense. I would suggest however that the fact that every serious solver implementation takes block diagonal structure into account indicates a genuine _practical_ difference. And of course, SeDuMi and SDPT3 _do_ give the Cartesian product formulation first-class support in their calling conventions, and never really reassemble a block-diagonal SDP internally (even if there are no quadratic constraints).2017-02-12