Skip to content
This repository has been archived by the owner on May 29, 2020. It is now read-only.

coin-or/ABACUS

Repository files navigation

ABACUS - A Branch-And-CUt System

Introduction

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.

Disclaimer

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.

Feedback

Bugs and feedback should be reported to abacus@informatik.uni-koeln.de. 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.

Reference Manual (doxygen-version)

ABACUS 3.0, User's Guide and Reference Manual (html-version)

ABACUS 3.0, User's Guide and Reference Manual (pdf-version)

Literature

  • 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

Download

At https://github.com/coin-or/ABACUS, you can download the source-code to compile ABACUS at your local machine. In addition you need the COIN-OR OSI package.

More download links: https://software.cs.uni-koeln.de/abacus/download.html

Short instruction to install ABACUS

Preconditions

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

Installation

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:

export ABACUS_DIR=/home/yourhome

Usually it is convenient to add these instructions to the personal '.login' file. Documentation

make doxygendoc

This produces the reference manual in html format in the sub- directory html. The start page is html/index.html.

make manual

This produces the complete user's guide and reference manual in pdf format (manual.pdf).

make manualhtml

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.

About

No description, website, or topics provided.

Resources

License

Unknown, LGPL-2.1 licenses found

Licenses found

Unknown
LICENSE
LGPL-2.1
COPYRIGHT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published