While the Chapters 1 to 4 of this manual are a user’s guide describing the installation, design, and application of ABACUS the last chapter contains the reference manual. Chapter 2 explains how ABACUS is installed on your computer system and what hardware and software environment is required. In order to simplify the user understanding ABACUS I describe in Chapter 4 the design of the software framework. While I recommend to study in any case the basic concepts outlined in Section 4.1 before beginning with the implementation of an application, it should be sufficient to return to Section 4.2 only for rather advanced usage. Also Chapter 5 is split into two sections. The first one, Section 5.1, explains the first steps that have to be performed to implement an application. This section should be studied together with the example included in the ABACUS distribution. The second one, Chapter 5.2, shows how default strategies of ABACUS can be modified and outlines some additional features of the system. The reference manual of Chapter 6 is complemented by the index that simplifies finding a certain class or one of its members.
This manual is both available in Postscript and HTML format. The HTML form turns out to be quite useful for finding members of the reference manual.
This user’s guide is not intended to teach the concepts of linear-programming based branch-and-bound, but I assume that the reader of this manual and the user of ABACUS is familiar with these algorithms. For an introduction to branch-and-cut I refer to [JRT95], for an introduction to branch-and-price algorithms I recommend to [BJN+97]. Both approaches are described in [Thi95].
Moreover, I also assume that the user of ABACUS is familiar with the concepts of object oriented programming. For the reader who is unexperienced in object oriented programming I refer to [KM90] for a good brief introduction and to [Boo94] for a detailed description. There are many books about the programming language C++. The classical introduction is [Str93]. Very useful reference manuals are [ES92] and the current working paper of the C++ standardization committee [ASC95].
ABACUS originates from the dissertation of its author [Thi95] and has since then been tested, slightly modified and improved. Here, I would like to thank all initial testers, in particular Thomas Christof, Meinrad Funke, and François Margot for their bug reports and helpful comments. I am very grateful to Joachim Kupke for carefully proofreading an earlier version. I also want to thank Denis Naddef, LMC-IMAG, Grenoble, France, for his hospitality while writing the major part of this manual.
Despite these successful tests I consider ABACUS still as an experimental system. Therefore, feedback of the users is appreciated. Some parts of the user’s guide were adapted from [Thi95], while the reference manual has been compiled for the first time. Therefore, I also encourage the reader to send me error reports and improvement suggestions for the user’s guide and the reference manual.
I am aware that neither the software nor its documentation is perfect, but I think it is time to dare a first public release.
Grenoble, August 1996 Stefan Thienel