GithubHelp home page GithubHelp logo

coin-or / oboe Goto Github PK

View Code? Open in Web Editor NEW
0.0 3.0 2.0 1.3 MB

OBOE (Oracle Based Optimization Engine) is an open source software for general convex optimization.

License: Other

Makefile 31.18% C 21.26% Shell 20.98% M4 15.77% C++ 10.82%

oboe's Introduction

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:

  • Input to the Oracle: a query point x provided by OBOE.
  • Output from the Oracle:
    • 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. 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

  • Components of the objective function with a diagonal Hessian.
  • Euclidean ball constraints. Extension to functionals with non-diagonal Hessian will necessitate additional work on the linear algebra involved in the computation of the analytic center.

Documentation

A few references

Theoretical papers

Application papers

Project Links

oboe's People

Contributors

nsawhney68 avatar svigerske avatar

Watchers

 avatar  avatar  avatar

Forkers

tingyingwu2010

oboe's Issues

glpk support

Issue created by migration from Trac.

Original creator: axjiang

Original creation time: 2010-06-28 11:13:05

Assignee: somebody

Version:

  1. It wasn't clear which configuration options are required to compile in GLPK support. The README file talks about --with-glpk, but then configure --help talks about --with-glpk-incdir and --with-glpk-lib. I ended up using both approaches and it seems to compile.

  2. However, at run time it still complains that glpk is not supported. This seems to be due to the following: LocSet.C is only checking for OBOE_HAS_GLPK, on the other hand only COIN_HAS_GLPK got defined in config.h. As a workaround, I added definition for OBOE_HAS_GLPK to config.h and it worked. Should LocSet.C be checking for COIN_HAS_GLPK as well?

Compilation on Ubuntu on behalf of Hadi Karimi

Issue created by migration from Trac.

Original creator: @nsawhney68

Original creation time: 2011-08-25 22:33:12

Assignee: @nsawhney68

Version:

Hi

After frustration in obtaining Matlab libraries for OBOE, I have made the painful migrations to C++ and Linux world.
I try to compile OBOE using the gcc-4.5.2 under Ubuntu 11.04 and I've not succeeded yet. (It is more than 3 days painstaking job)
Plz help me work it out (Before I commit SUICIDE).

I have attached my work logs.

Kind Regards

Hadi Karimi
MSc student
Department of Industrial Engineering
Amirkabir University of Technology (Tehran Polytechnic), Tehran, Iran
www.aut.ac.ir

Problem with makefiles

Issue created by migration from Trac.

Original creator: @ycollet

Original creation time: 2010-01-14 15:25:26

Assignee: somebody

Version:

In a classic installation of lapack++, include files are installed in lapackppinstalldir/include/lapackpp.
So, to be able to compile OBOE, I needed to modify some Makefiles:

  • src/AccpmCore/Makefile -> line 242: replace -I$(LAPACKCPP_DIR)/include/ by -I$(LAPACKCPP_DIR)/include/lapackpp
  • src/UI/Makefile -> line 260: replace -I$(LAPACKCPP_DIR)/include/ by -I$(LAPACKCPP_DIR)/include/lapackpp

YC

problem with autoconf

Issue created by migration from Trac.

Original creator: @ycollet

Original creation time: 2010-01-14 15:20:35

Assignee: somebody

Version:

I am using mandriva 2010.0 64 bits.
To be able to make OBOE, I needed to add
m4_include(m4/coin.m4)
in configure.ac (after the first autoconf command) to include coin.m4 macros.

compilation problems with gcc-4.4

Issue created by migration from Trac.

Original creator: @ycollet

Original creation time: 2010-01-14 15:22:43

Assignee: somebody

Version:

To be able to compile OBOE, I needed to add:

  • #include <string.h> in src/Utilities/AccpmDefs.h
  • src/AccpmLA/AccpmGenMatrix.h -> remove the & at the beginning of the line 86
  • src/AccpmLA/AccpmLASolve.C -> change &A(0,0) into (doublereal *)&A(0,0) (argument 4 of the function)
  • src/AccpmCore/Method.C -> add #include <stdlib.h>

--enable-serialization=yes functionality broken in OBOE trunk

Issue created by migration from Trac.

Original creator: nowozin

Original creation time: 2008-03-23 14:53:12

Assignee: somebody

Version:

When --enable-serialization=yes is used, the SERIALIZATION macro is defined and additional code is included in OBOE.

This code is out of sync with the remaining OBOE code and does not compile. Specifically, line 132 in Manager.h reads:

    AccpmVector *cut = new AccpmVector(_activeCutsM.getColumn(i));
    _cutSet[cut] = ++_currentCutId;

where _cutSet is a CutSet type, defined as

    typedef map<const AccpmVectorIntPair *, int,  ltAccpmVectorPair> CutSet;

Therefore the operator[] call fails and produces the error message:

make[3]: Entering directory `/data/home/scut/projects-coin/oboe/src/AccpmCore'
if g++ -DHAVE_CONFIG_H -I. -I. -I../.. -I../../src/ProblemInput -I../../src/AccpmLA/ -I../../src/Oracle -I../../src/Utilities -I/opt/lapackpp-2.5.2 -I/opt/lapackpp-2.5.2/include/    -O3 -Wall -DSERIALIZATION -MT Manager.o -MD -MP -MF ".deps/Manager.Tpo" -c -o Manager.o Manager.C; \
        then mv -f ".deps/Manager.Tpo" ".deps/Manager.Po"; else rm -f ".deps/Manager.Tpo"; exit 1; fi
Manager.h: In member function ‘virtual void Accpm::Manager::postprocess()’:
Manager.h:132: error: no match for ‘operator[]’ in ‘((Accpm::Manager*)this)->Accpm::Manager::_cutSet[cut]’
/usr/include/c++/4.1.3/bits/stl_map.h:340: note: candidates are: _Tp& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const _Key&) [with _Key = const Accpm::AccpmVectorIntPair*, _Tp = int, _Compare = Accpm::Manager::ltAccpmVectorPair, _Alloc = std::allocator<std::pair<const Accpm::AccpmVectorIntPair* const, int> >]
make[3]: *** [Manager.o] Error 1

For now, one has to disable serialization when compiling OBOE. I think the straight-forward checkpointing functionality is a great advantage of cutting plane methods and therefore a fix would be great.

the configure script doesn't work

Issue created by migration from Trac.

Original creator: @ycollet

Original creation time: 2009-09-14 08:27:31

Assignee: somebody

Version:

the inclusion of m4/coin.m4 and m4/oboe_usr_libs.m4 is not done in configure.ac
Must add:
m4_include([m4/coin.m4])
m4_include([m4/oboe_usr_libs.m4])
in configure.ac

some problems with missing -I gcc options

Issue created by migration from Trac.

Original creator: @ycollet

Original creation time: 2009-09-14 09:04:54

Assignee: somebody

Version:

Some $(OBOE_INCLUDES) must be added to INCLUDES in Makefile.am (in src/UI, src/Oracles for example).

stopping when LocSet is empty

Issue created by migration from Trac.

Original creator: axjiang

Original creation time: 2010-07-22 23:55:40

Assignee: somebody

Version:

I would like to have the option of stopping the algorithm when the LocSet becomes empty (manager.getExitCode() is LOCSET_EMPTY or CHOLESKY_FAILURE). Right now this doesn't happen by default, and as a result the algorithm would sometimes crash (e.g. assertion error when dividing by a near zero number). Is there a way to access Manager's exit code from the user side? I tried to do that by subclassing QpGenerator, but got a compile error because Manager.h was not exported.

Problem with a wrong cast

Issue created by migration from Trac.

Original creator: @ycollet

Original creation time: 2009-09-14 08:37:15

Assignee: somebody

Version:

AccpmGenMatrix.h: In member function ‘double& Accpm::AccpmGenMatrix::operator()(int, int) const’:
AccpmGenMatrix.h:86: erreur: invalid initialization of reference of type ‘double&’ from expression of type ‘const double’

I try to compile oboe using the gcc-4.3.3 under ubuntu 9.04

Compilation errors on Ubuntu reported by [email protected]

Issue created by migration from Trac.

Original creator: @nsawhney68

Original creation time: 2014-11-28 14:01:58

Assignee: somebody

Version:

From the email:
So here is what happen, I do:

svn co https://projects.coin-or.org/svn/OBOE/trunk OBOE
cd OBOE
export BLAS=/usr/lib/libblas.a
export LAPACK=/usr/lib/liblapack.a
export LAPACKCPP_DIR=/usr/local/include/lapackpp
export LAPACKCPP_LIB=/usr/local/lib/liblapackpp.la
./configure

up to now everything is great, then i do:

make

but i get the error

In file included from AccpmBlasInterface.h:14:0,
from AccpmVector.C:13:
AccpmGenMatrix.h: In member function ‘double& Accpm::AccpmGenMatrix::operator()(int, int) const’:
AccpmGenMatrix.h:86:86: error: invalid initialization of reference of type ‘double&’ from expression of type ‘const double’
inline double& operator()(int i, int j) const { return RealMatrix::operator()(i,j); }

then i don’t know how to edit to make it work but blindly follow one post….. After I edit according to the previous post: inline double& operator()(int i, int j) --->> inline const double& operator()(int i, int j) I get this error:

In file included from AccpmBlasInterface.h:14:0,
from AccpmVector.C:13:
AccpmGenMatrix.h:86:26: error: ‘const double& Accpm::AccpmGenMatrix::operator()(int, int)’ cannot be overloaded
inline const double& operator()(int i, int j) { return RealMatrix::operator()(i,j); }
^
AccpmGenMatrix.h:85:26: error: with ‘const double& Accpm::AccpmGenMatrix::operator()(int, int)’
inline const double& operator()(int i, int j) { return RealMatrix::operator()(i,j); }

so basically the edit does not work for me….

Thank you very much for looking into this… Do you know what happened?

With regards,
Wenxuan

an empty directory is created during install

Issue created by migration from Trac.

Original creator: @ycollet

Original creation time: 2009-09-14 09:03:29

Assignee: somebody

Version:

the directory $(install_dir)/share/aclocal is created. This directory is empty

segfault when NumSubProblems is not set

Issue created by migration from Trac.

Original creator: axjiang

Original creation time: 2010-05-21 23:16:59

Assignee: somebody

Version:

If I do not set NumSubProblems (I assumed it defaults to 1 from reading the documentation), then the _pi vector is not initialized. This leads to a segmentation fault at Manager::processCuts() when _pi is accessed via getPi().

missing header in AccpmDefs.h

Issue created by migration from Trac.

Original creator: @ycollet

Original creation time: 2009-09-14 08:34:51

Assignee: somebody

Version:

../../src/Utilities/AccpmDefs.h:68: erreur: ‘strcmp’ was not declared in this scope

Must add #include <string.h> in AccpmDefs.h

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.