MATLAB implementation of a primal-dual interior-point solver for convex second-order cone programs

by Peter Carbonetto
Dept. of Computer Science
University of British Columbia

This is a simple implementation of a primal-dual interior-point method for solving an optimization problem formulated as a second-order cone program (SOCP) in which the objective is convex. My code is not expected to be as robust or as fast as other software packages, but it is extremely simple to use and understand. And it might even work well for fairly large problems.

My implementation requires that you are able write a MATLAB function that computes at any given point the value of the objective, its gradient vector, and the Hessian (i.e. the second-order partial derivatives). For more information on second-order cone programs, I highly recommend reading Convex Programming by Boyd and Vandenberghe (Cambridge University Press, 2004), but there are many other references in the numerical optimization literature, and some of them may be even worth reading.

For further details behind the implementation, see this webpage, which describes my MATLAB code for solving slightly more general convex programs.

If you have any questions, praise, or comments, or would like to report a bug, do not hesitate to contact me. I've tested this software in MATLAB version 7.5.

License

This work is licensed under the GNU Public license. Please cite the source as Peter Carbonetto, Department of Computer Science, University of British Columbia.

Installation and use

Click here to download a compressed TAR archive containing three MATLAB files. The interior-point solver is socpsolver.m. There are also two files for a demonstration of how to use my MATLAB function to find the solution to a group feature selection problem for linear regression (a problem currently being investigated in the machine learning research field). This demonstration was contributed by Mark Schmidt.

If you type help socpsolver in the MATLAB console, you will see instructions on how to use the solver for your own second-order cone optimization problem. I also highly recommend running and understanding the example provided, since it should give you a good idea how to use solver in your own MATLAB script.


May 26, 2008