The vast majority of the computation takes place within a ``black box,'' of which the user need have no knowledge. SYMPHONY performs all the normal functions of branch, cut, and price--tree management, LP solution, cut pool management, as well as inter-process or inter-thread communication. Solvers can be built in a wide variety of configurations, ranging from fully parallel to completely sequential, depending on the user's needs. The library runs serially on almost any platform, and can also run in parallel in either a fully distributed environment (network of workstations) or shared-memory environment simply by changing a few options in the makefile. To run in a distributed environment, the user must have installed the Parallel Virtual Machine (PVM), available for free from Oak Ridge National Laboratories. To run in a shared memory environment, the user must have installed an OpenMP compliant compiler. A cross-platform compiler called Omni, which uses cc or gcc as a back end, is available for free download . For other options, visit http://www.openmp.org.
SYMPHONY-5.0 is now a C callable library with an interface whose look and feel is similar to other popular solvers, see Sections 7.1 and 7.2 for the library routines. This interface works for SYMPHONY's built-in generic MILP solver, as well as any customized algorithm developed by implementing one or more of SYMPHONY's user callback functions. For a summary of what else is new, see Section 1.1.Code written for previous versions of SYMPHONY will be broken, but not too badly. Instructions for porting from previous version are contained in the file SYMPHONY-5.0/README-5.0.
This section of the manual is concerned with the detailed specifications needed to compile the SYMPHONYlibrary, to create the generic MILP solver and to develop an application using SYMPHONY. It is assumed that the user has already read the first part of the manual, which provides a high-level introduction to parallel branch, cut, and price and the overall design and use of SYMPHONY.