coin-or / OBOE

OBOE (Oracle Based Optimization Engine) is an open source software for general convex optimization.
Other
0 stars 2 forks source link

Oracle Based Optimization Engine (OBOE)

Introduction

OBOE (Oracle Based Optimization Engine) is an open source software for general convex optimization. It assumes that a user-made code, thereafter named oracle, is capable of delivering first order information on the key elements of the problem (support the feasible set, support to the objective function). The engine exploits this information to construct the so-called localization set which is a polyhedral approximation of the set of optimal solutions.

To implement OBOE on a typical problem of convex optimization such as "min {f(x) | x in X}" the user must implement an oracle with the following specification:

An optimization session alternates computations by the oracle and by OBOE until the relative optimality gap at the current iterate meets the target value assigned by the user. The user can alternatively set his own stopping rule.

The query points that OBOE selects are approximate minimizers of a logarithmic barrier function on the polyhedral set plus a proximal term. OBOE is an implementation of ACCPM, the Analytic Center Cutting Plane Method.

Download and Installation

OBOE is an open source software written in C++. It is released under the Common Public License (CPL). It is made available by the COIN-OR initiative.

You can get the source code directly from the oboe GitHub repository with the command:

git clone https://github.com/coin-or/OBOE.git

Old released source packages can be found here.

OBOE has been mainly developed for a Linux based environment but does have Windows support via Mingw or MSVisualStudio project files. A complete step-by-step procedure to install OBOE is available for:

Recently added features

OBOE can handle twice differentiable functional components in an optimization problem via the logarithmic barrier function. The present implementation does this for two special cases

Documentation

A few references

Theoretical papers

Application papers

Project Links