next up previous external Back to SYMPHONY Home Page
Next: Computing Environment Up: SYMPHONY: A Parallel Framework Previous: Algorithm Overview

The Design of SYMPHONY

 

In this section we describe the details of how each of the high-level functions from the last section is implemented in SYMPHONY. SYMPHONY was designed with two major goals in mind--effectiveness for a wide variety of problem settings and ease of use. The effectiveness of SYMPHONY stems from the enhancements and extensions to the generic algorithm (to be described in this section), most of which are transparent to the the casual user. The ease of use comes from the well-designed user interface to the library. To implement a branch and cut algorithm, the user provides files containing C subroutines that implement program functions requiring knowledge of the problem setting. The most obvious example of this is separation subroutines, which are a mainstay of any branch and cut implementation. Although it is possible to use generic separation routines, the most effective algorithms are those that utilize problem structure in searching for violated constraints. In addition to the required subroutines, the user can provide other optional subroutines that customize the execution of the algorithm. The interfaces between the library and the user functions are straightforward and do not require the user to have any knowledge of the inner workings of SYMPHONY.





Ted Ralphs
Thu Jun 8 14:31:17 CDT 2000