Version 27 (modified by lolow, 13 years ago) (diff)


Welcome to the OBOE home page

Note that these project webpages are based on Wiki, which allows webusers to modify the content to correct typos, add information, or share their experience and tips with other users. You are welcome to contribute to these project webpages. To edit these pages or submit a ticket you must first register and login.


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 concex optimization such as "min {f(x) | x in X}" the user must program an oracle with the following input and output.

  • Input: a query point x provided by OBOE.
  • Output
    • If x is feasible, the oracle returns the value f(x) and an element of the subgradient of f at x.
    • If x is infeasible, the oracle returns a hyperplane separating x and the feasible set X.

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. More details on the principles of OBOE can be found in the section "The scope of OBOE".

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.

Download and Installation

You can get the source code directly from the subversion oboe directory with the command:

svn co


Applications and References

OBOE is used to solve convex problems in many domains: