Conic solvers
Contents
Conic solvers¶
In this section we provide some notes about our usage experience with VSDP and the following approximate conic solvers.
For our tests we tried the following four combinations to run the conic solver:
+---------------------------+
| <conic solver> |
+---------------------------+
| VSDP & INTLAB |
+------------+--------------+
| MATLAB | GNU Octave |
+------------+--------------+
CSDP¶
Website: https://github.com/coin-or/Csdp
Documentation: https://github.com/coin-or/Csdp/blob/master/doc/csdpuser.pdf
Cones: (Free variables), LP, SDP
Installation: Binary distributions for Windows and Linux on the website. Extract binary distribution to arbitrary location and use
addpathwithin Octave or MATLAB to add thebin(solver executables) andmatlab(interface routines) subdirectories.Invocation: Call
csdpfrom the Octave or MATLAB command prompt.Notes: Free variables are only supported as difference of LP variables. The resulting problem is ill-posed.
GLPK¶
Website: https://www.gnu.org/software/glpk
Documentation: Part of the source code archive available from the website.
Cones: Free variables, LP
Installation: Built-in solver of GNU Octave.
Invocation: Call
glpkfrom the Octave command prompt.Notes: Not available for MATLAB.
LINPROG¶
Website: https://www.mathworks.com/help/optim/ug/linprog.html
Documentation: See website.
Cones: Free variables, LP
Installation: Built-in solver of MATLAB.
Invocation: Call
linprogfrom the MATLAB command prompt.Notes: Not available for GNU Octave.
lp_solve¶
Documentation: See website.
Cones: Free variables, LP
Installation: Binary distributions for Windows and Linux are available from https://sourceforge.net/projects/lpsolve/files/lpsolve/5.5.2.5. For Linux it is easier to install the binary solver files from the respective distribution package manager. The Octave and MATLAB interface is available from https://github.com/vsdp/lp_solve or https://sourceforge.net/projects/lpsolve/files/lpsolve/5.5.2.5. Inside the
extra/octave/lpsolveorextra/matlab/lpsolvesubdirectory one has to follow the build instructions and has to useaddpathwithin Octave or MATLAB to make it work.Invocation: Call
lp_solvefrom the Octave or MATLAB command prompt.
MOSEK¶
Website: https://www.mosek.com/
Documentation: https://www.mosek.com/documentation/
Cones: Free variables, LP, SOCP, SDP
Installation: Binary distributions for Windows and Linux on the website. Very good description is given at https://docs.mosek.com/8.1/install/installation.html
Invocation: Call
mosekoptfrom the Octave or MATLAB command prompt.Notes: One has to obtain a license, which is gratis for personal and academic use. No Octave. There is some no longer maintained octmosek Octave package, that does notes work for recent Octave versions.
SDPA¶
Website: http://sdpa.sourceforge.net
GitHub: https://github.com/vsdp/sdpa
Documentation: https://sourceforge.net/projects/sdpa/files/sdpa/sdpa.7.1.1.manual.20080618.pdf
Cones: LP, SDP
Installation (Windows): Binary distributions can be obtained from http://sdpa.sourceforge.net/download.html (use the SDPA-M version). Extract binary distribution to arbitrary location and use
addpathwithin MATLAB to add the solver and interface routines.Invocation: Call
mexsdpafrom the Octave or MATLAB command prompt.Notes: The “native” installation for Windows and MATLAB is the most reliable. The other three combinations worked partially or not at all. Some of the Linux efforts are reflected in the GitHub repository.
SDPT3¶
GitHub: https://github.com/sqlp/sdpt3 (preferred) or https://github.com/Kim-ChuanToh/SDPT3
Documentation: https://blog.nus.edu.sg/mattohkc/files/2019/10/guide4-0-draft.pdf
Cones: Free variables, LP, SOCP, SDP
Installation: Download the files from the preferred GitHub repository extracted to an arbitrary location and run
install_sdpt3from the Octave or MATLAB command prompt.Invocation: Call
sqlpfrom the Octave or MATLAB command prompt.Notes: In case of errors with the MEX-Interface, run
install_sdpt3 -rebuildfrom the Octave or MATLAB command prompt. The SDPT3 functionrandmatis in conflict with the INTLAB functionrandmat. To resolve that conflict, we chose to rename the INTLAB function.
SeDuMi¶
Website: http://sedumi.ie.lehigh.edu
GitHub: https://github.com/sqlp/sedumi (preferred)
Documentation: http://sedumi.ie.lehigh.edu/sedumi/files/sedumi-downloads/SeDuMi_Guide_11.pdf and http://sedumi.ie.lehigh.edu/sedumi/files/sedumi-downloads/usrguide.ps
Cones: Free variables, LP, SOCP, SDP
Installation: Download the files from the preferred GitHub repository extracted to an arbitrary location and run
install_sedumifrom the Octave or MATLAB command prompt.Invocation: Call
sedumifrom the Octave or MATLAB command prompt.Notes: In case of errors with the MEX-Interface, run
install_sedumi -rebuildfrom the Octave or MATLAB command prompt.