ABACUS - A Branch-And-CUt System
ABACUS is a software system written in C++ that provides a framework for the implementation of branch-and-bound algorithms using linear programming relaxations. Cutting planes or columns can be generated dynamically (branch-and-cut, branch-and-price, branch-and-cut-and-price).
ABACUS allows the software developer to concentrate merely on the problem specific parts, i.e., the separation of cutting planes, column generation, and primal heuristics.
ABACUS supports the Open Solver Interface (Osi) developed by the COIN-OR (COmputational INfrastructure for Operations Research) project which means that every solver supported by OSI can be used to solve the relaxations.
Moreover, ABACUS provides a variety of general algorithmic concepts, e.g., a list of different enumeration and branching strategies from which the best alternative for the user's application can be chosen.
Finally, ABACUS provides many basic data structures and useful tools for the implementation of such algorithms. It is designed both for general mixed integer optimization problems and for combinatorial optimization problems. It unifies cutting plane and column generation within one algorithm framework. Simple reuse of code and the design of abstract data structures and algorithms are met by object oriented programming modules.
ABACUS is open source software. It is developed by the Chair of Computer Science - Prof. Dr. Michael Jünger at the University of Cologne. ABACUS is distributed under both the lesser GNU General Public License and the Common Public License. For a description of these license models see lGPL and CPL.
Bugs and feedback should be reported to email@example.com. You can find some hints how to report bugs in the README file of the distribution.
There is a new mailing list for every kind of ABACUS related discussions. New releases of the library will also be announced on the mailing list. In order to subscribe please go to abacus-forum.
Reference Manual & User's Guide
We provide a Reference Manual (generated by doxygen) and a User's Guide. For your convenience you may want to bookmark the links below.
Branch-and-Cut Algorithms for Combinatorial Optimization and Their Implementation in ABACUS, published in 2001 by Springer in the book "Computational Combinatorial Optimization" (edited by Michael Jünger, Denis Naddef), series "Lecture Notes in Computer Science", volume 2241, pages 157-222
The ABACUS System for Branch-and-Cut-and-Price Algorithms in Integer Programming and Combinatorial Optimization, published in 2000 in the journal "Software: Practice and Experience", volume 30, pages 1325-1352 (Article by Michael Jünger, Stefan Thienel)
Download & Installation
More download links: https://software.cs.uni-koeln.de/abacus/download.html
Short instruction to install ABACUS
Before compiling ABACUS 3.0 make sure that COIN-OSI is installed. For more information on the installation of COIN-OSI see https://github.com/coin-or/Osi. To build the documentation several auxiliary programs are needed:
* cweave and ctangle for the tsp-example * doxygen and latex for the reference manual and user guide * tex4ht (actually the debian tex4ht package) for the html version of the user guide
Set the paths at the top of the Makefile to the include directories of COIN-OSI and the LP solvers installed on your system. Settings for different compilers are stored in the directory Make-settings. Which settings file is used is determined by the variable ABACUS_MAKE_SETTINGS. To compile ABACUS with g++-4.1, for example, do:
make abacus ABACUS_MAKE_SETTINGS=linux20-gcc41
To install abacus to a specific location instead of the base directory set the variables ABACUS_INSTALL_LIBDIR and ABACUS_INSTALL_HEADERDIR in the Makefile and run, for example:
make abacus ABACUS_MAKE_SETTINGS=linux20-gcc41
The environment variable ABACUS_DIR has to be set to the directory containing the general configuration file '.abacus'. A master version of this configuration file is provided in the base directory of the ABACUS distribution. It is recommended that every user makes a private copy of the file '.abacus' and sets ABACUS_DIR accordingly. To set the environment variable to /home/yourhome, for example, using the C-shell or its relatives, do:
setenv ABACUS_DIR /home/yourhome
If the Bourne-shell is used do:
Usually it is convenient to add these instructions to the personal '.login' file. Documentation
This produces the reference manual in html format in the sub- directory html. The start page is html/index.html.
This produces the complete user's guide and reference manual in pdf format (manual.pdf).
This produces the complete user's guide and reference manual in html format. The start page is manualhtml/manual.html
For more detailed installation instructions and information on environment variable settings, please read chapter 2 of the user's guide.