next up previous contents Back to SYMPHONY Home Page
Next: User-written Functions Up: Introduction Previous: Getting Started

Source Files

The easiest way to get oriented is to examine the organization of the source files. 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 are subdirectories corresponding to applications. The sample application is contained in the directory Vrp/. The files containing function stubs that can be filled in to create a new application are contained in the directory User/. There is one file for each module, initially called User/*/*_user.c. The primary thing that you, as the user, need to understand to build an application is how to fill in these stubs. That is what the second section of this manual is about.


next up previous contents
Next: User-written Functions Up: Introduction Previous: Getting Started
Ted Ralphs
2000-09-08