Semidefinite Program with Multiple Optimal Points

Suppose that I have an SDP that I’m solving using CVX. Furthermore, assume that there are multiple points at which the optimum value of the SDP is achieved. My questions from this are as follows:

  1. How does CVX decide precisely which solution to provide?

  2. Is there a flag that can be set to force CVX to give the other solutions to the SDP?

Thanks, and by all means please do let me know if any further elaboration is necessary on my behalf.

The solution selected depends upon the algorithm used by the solver. For instance, if your problem is LP-representable and the solver uses a simplex-like method, then you will likely get a vertex solution. If the solver uses a barrier or path-following method, you will likely get a point that is in the analytic center of the optimal set.

Unfortunately there is no way for you to control which optimal point CVX will return. If you prefer one type of solution to another, that preference should be reflected in the model somehow. You might actually iterate with multiple versions of your model, with added constraints included to guide the optimal solution where you want it to go. Or you can add a small term to the objective that draws the solution towards a desired point. The point is that this is something only you can do as the modeler.