# Solver for nonlinear semidefinite optimization

Totally new to optimization. Is there an easy-to-use solver, package, (free) software for solving nonlinear semidefinite optimization problems?

• You can use FMINCON or KNITRO (neither of them free) as solver under YALMIP (free) to try for local minimum of nonlinear semidefinite optimization problem (including Bilinear Matrix Inequality (BMI) as special case). Those solvers can only be used as such when called from YALMIP, and that is referred to as "Slayer" by YALMIP developer Johan Lofberg. Or you can use BMIBNB (free), which is included with YALMIP, to try to get global minimum. groups.google.com/g/yalmip/c/u11gjRc2a9k and yalmip.github.io/nonlinearsdpcuts . But nonlinear semidefinite optimization is not easy. Mar 1 at 15:35
• Thank you @MarkL.Stone. So If I understood you correctly, through "YALMIP", you can have free access to KNITRO and BMIBNB? Mar 1 at 17:18
• No. YALMIP is free (add-on to MATLAB). FMINCON and KNITRO are not free and need to be supplied by the user.. If they are installed to run under MATLAB, YALMIP will use them if directed to do so. YALMIP has implemented a special way of handling derivative callbacks to allow them to be used for nonlinear semidefinite optimization problems, which are (other than if called in YALMIP) out of their scope. BMIBNB is included as part of YALMIP. Mar 1 at 17:26
• Just to clarify: FMINCON - not free, but included in Optimization Toolbox. KNITRO - not free. BMIBNB - free, included with YALMIP which is free. Mar 1 at 17:35
• FYI, the question was asked on the YALMIP google groups, and it turned out that the problem easily was cast as a simple LMI problem, thus making any talk about nonlinear semidefinite programming redundant. I should also clarify that the nonlinear SDP capabilities of YALMIP Mark mentions above only are available in the develop branch. Mar 3 at 14:18

If you use Python, I have found calling the scs solver through cvxpy to be very effective for semidefinite programming. The scs solver uses ADMM as opposed to the interior point methods that are typically used for SDPs, with the result that it scales to larger problems but has a harder time achieving extremely high numerical accuracy. I haven't found this to be a limitation in my use cases.
Edit: Mark Stone suggests in the comments that this question is meant to address nonconvex problems as well, in which case these tools are inappropriate. I understood this question to mean that you had a (hopefully convex) problem over semidefinite matrices but with an objective that was nonlinear (i.e. the problem is not in the standard form required by SDP solvers). In this case these tools are worth a look, because cvxpy converts the problem to standard form automatically. Some of these conversions can be tricky if you're not used to them, so it's helpful to have an automated tool.