2

Z is a matrix variable that results from a CVX SDP code using Matlab; how can I include a constraint that the values of the elements of matrix Z should be either zero or one?

There is the "banded" option but it doesn't work for matrices.

Amira Akra
  • 163
  • 11

1 Answers1

1

You cannot as cvx does not support integer semidefinite programming (the special case when Z is 2x2 would be possible as that is SOCP representable, and thus solvable through the interfaced mixed-integer SOCP solver Mosek).

If you want to stay in MATLAB, you can easily convert your code to YALMIP (shameless plug, developed by me) as mixed-integer SDPs are supported there (Z=binvar(n) and you are basically done). Note though, there are no public MISDP solvers available, so YALMIP will perform the whole branch-and-bound machinery on its own, relying on external SDP solvers to solve relaxations.

Here is an example which solves a mixed-integer semidefinite programming problem.

http://users.isy.liu.se/johanl/yalmip/pmwiki.php?n=Examples.ExperimentDesign

Johan Löfberg
  • 378
  • 1
  • 13
  • I'm curious about why noone wants to develop MISDP solver. I saw bunch of papers that are talking about how MISDP can be solved. Seems that there is no theoretical limitation... – Mykola Servetnyk Nov 25 '15 at 03:07
  • Well, YALMIP has MISDP support. There is no major market though for commercial players, and not sufficiently many applications for it to be a particularly interesting research field. – Johan Löfberg Nov 25 '15 at 18:26