Chapter 5
Using ABACUS

Section 5.1 provides the basic guidelines how a new application can be attacked with the help of ABACUS. While this section describes the first steps a user should follow, we discuss in Section 5.2 advanced features, in particular how default strategies can be modified according to problem specific requirements.

We strongly encourage to study this chapter together with the example of the ABACUS distribution. In this example all concepts of Section 5.1 and several features of Section 5.2 can be found.

In the following sections we also present pieces of C++ code. When we discuss variables that are of the type “pointer to some type”, then we usually omit for convenience of presentation the “pointer to” and the operator * if there is no danger of confusion. For instance, given the variable

  ABA_ARRAY<ABA_CONSTRAINT*> *constraints;

we also say “the constraints are stored in the array constraints” instead of “the pointer to constraints are stored in the array *constraints”.

In order to simplify the use ABACUS we are using the following style for the names of classes, functions, variables, and enumerations.

 5.1 Basics
  5.1.1 Constraints and Variables
  5.1.2 The Master
  5.1.3 The Subproblem
  5.1.4 Starting the Optimization
 5.2 Advanced Features
  5.2.1 Using other Pools
  5.2.2 Pool without Multiple Storage of Items
  5.2.3 Constraints and Variables
  5.2.4 Infeasible Linear Programs
  5.2.5 Other Enumeration Strategies
  5.2.6 Selection of the Branching Variable
  5.2.7 Using other Branching Strategies
  5.2.8 Strong Branching
  5.2.9 Activating and Deactivating a Subproblem
  5.2.10 Calling ABACUS Recursively
  5.2.11 Selecting the LP-Method
  5.2.12 Generating Output
  5.2.13 Memory Management
  5.2.14 Eliminating Constraints
  5.2.15 Eliminating Variables
  5.2.16 Adding Constraints/Variables in General
  5.2.17 Fixing and Setting Variables by Logical Implications
  5.2.18 Loading an Initial Basis
  5.2.19 Integer Objective Functions
  5.2.20 An Entry Point at the End of the Optimization
  5.2.21 Output of Statistics
  5.2.22 Accessing Internal Data of the LP-Solver
  5.2.23 Problem Specific Fathoming Criteria
  5.2.24 Enforcing a Branching Step
  5.2.25 Advanced Tailing Off Control
  5.2.26 System Parameters
  5.2.27 Solver Parameters
  5.2.28 Parameter Handling
 5.3 Using the ABACUS Templates