next up previous contents Back to SYMPHONY Home Page
Next: Writing the User Functions Up: Advanced Development Previous: Advanced Development

Orienting Yourself

The easiest way to get oriented is to examine the organization of the source files (note that file names will be given Unix-style). When you unpack the SYMPHONY distribution, you will notice that the source files are organized along the lines of the modules. There is a separate directory for each module--master (Master), tree manager (TreeManager), cut generator (CutGen), cut pool (CutPool), and LP solver (LP). In addition, there is a directory called DrawGraph and a directory called Common that also contain source files. The DrawGraph directory provides an interface from SYMPHONY to the Interactive Graph Drawing software package developed by Marta Esö. This is an excellent utility for graphical display and debugging. The Common directory contains source code for functions used by multiple modules.

Within each module's directory, there is a primary source file containing the function main() (named *.c where * is the module name), a source file containing functions related to inter-process communication (named *_proccomm.c) and a file containing general subroutines used by the module (named *_func.c). The master is the exception and is organized slightly differently. The LP process source code is further subdivided due to the sheer number of functions.

The include directory contains the header files. Corresponding to each module, there are three header files, one containing internal data structures and function prototypes associated with the module (named *.h where * is the module name), one containing the data structures for storing the parameters (these are also used by the master process), and the third containing the function prototypes for the user functions (name *_u.h). By looking at the header files, you should get a general idea of how things are laid out.

In addition to the subdirectories corresponding to each module, there is a subdirectory called SYMPHONY-4.0/USER, which contains the files needed for customizing the behaviors of the modules. Before beginning customization, it is recommended to make a copy of the directory SYMPHONY-4.0/USER that will be used as a template for creating your customized solver. In this directory and its subdirectories, which mirror the subdirectories of SYMPHONY itself, each file contains function stubs that can be filled in to create a new custom application. There is one file for each module, initially called SYMPHONY-4.0/USER/*/user_*.c, where * is the name of the module. The primary thing that you, as the user, need to understand to build a custom application is how to fill in these stubs. That is what the second section of this manual is about.


next up previous contents
Next: Writing the User Functions Up: Advanced Development Previous: Advanced Development
Ted Ralphs
2003-10-16