ipo interior-point optimisation library


Home ·
Download ·
Documentation ·
Namespaces and #includes ·
Defining functions ·
Example of a function ·
Variables and arrays ·
Objective and constraints ·
Building a model ·
Example ·
Bugs ·


Ipo is a library of classes and functions to solve convex optimisation problems. It is written in C++-11. It minimises a convex (or maximises a concave) function, defined by the user subject to convex constraints using interior-point optimisation. Specifically, it uses a logarithmic barrier.

To use ipo, you will need to define functions for the objective and constraints. The objective function must be a function object of a subclass of ipo::Objective and the constraints must be objects of subclasses of ipo::Constraint. Both of these classes define functions that take gsl::vector arguments and so you will also need ccgsl and the gnu Scientific Library installed. In practice, it is straightforward to adapt a wide range of functions that take a multivariate argument of double-precision floating-point numbers and return a double-precision floating-point number to either a Function or a Constraint.

Ipo has no way to check if an arbitrary function is convex or not. So, it is up to the user to make sure that the functions supplied as objects of the Function and Constraint classes are convex (or possibly concave for a maximisation objective) and reasonably well-behaved. Otherwise the results of attempting to optimise are undefined.


I have released ipo under the gnu General Public License, version 2.

Last modified: Tue 02 Jul 2013 04:56 pm

SourceForge.net Logo