MOPTA 2005
SYMPHONY
¡User interaction
lBlack box solver for MILPs
¡MPS files
¡GMPL files
¡FLOPC++
lCallable library
¡C API
¡C++ API (OSI)
lCustomizable framework
¡C callback functions
¡Execution modes
lSequential
lShared memory parallel
lDistributed memory parallel
¡Additional functionality
lMulticriteria MILP solver
lBasic sensitivity analysis
lWarm starting
¡
¡Ted Ralphs, Project Manager
SYMPHONY Overview (from Ted)
SYMPHONY is a black box solver, callable library, and solver framework
for MILPs that evolved from the COMPSys framework of Ralphs and
Lad\'anyi \cite{ladanyi:96,ralphs:95}. The source code for packaged
releases, with full documentation and examples, is available for
download \cite{download.symphony:04} and is licensed under the Common
Public License (CPL). The latest source is also available from the CVS
repository of the COIN-OR Foundation \cite{coin:04}. SYMPHONY is fully
documented and seven different specialized solvers built with SYMPHONY
are available for download as examples of how to use the code. There is
a step by step example showing how to build a simple branch-and-cut
solver in SYMPHONY for the matching problem \cite{trick.guzelsoy:04},
which is summarized in Section \ref{sec:case-studies}. The core solution
methodology of SYMPHONY is a customizable branch and cut algorithm that
can be executed sequentially or in
parallel~\cite{ralphs.ladanyi.saltzman:03}. SYMPHONY calls on several
other open source libraries for specific functionality, including
COIN-OR's Cut Generation Library, Open Solver Interface, and MPS file
parser components, GLPK's GMPL file parser, and a third-party solver for
linear-programming problems (LPs), such as COIN-OR's LP Solver (CLP).

There are several unique features of SYMPHONY that are worthy of
mention. First, SYMPHONY contains a generic implementation of the WCN
algorithm described in \cite{ralphs.saltzman.wiecek:04} for solving
bicriteria MILPs, and methods for approximating the set of Pareto
outcomes.  The bicriteria solver can be used to examine tradeoffs
between competing objectives, and for solving parametric MILPS, a form
of global sensitivity analysis.  SYMPHONY also contains functions for
local sensitivity analysis based on ideas suggested by Schrage and
Wolsey~\cite{schrage.wolsey:85}.  Second, SYMPHONY has the capability to
warm start the branch-and-bound process from a previously calculated
branch-and-bound tree, even after modifying the problem data.
These capabilities are described in more detail in the paper of Ralphs
and Guzelsoy~\cite{ralphs.guzelsoy:04}. The \textbf{target audience} for
SYMPHONY is similar to that of MINTO---users who require the power of a
sophisticated solver framework, primarily for implementing custom branch
and cut algorithms, with a relatively simple C-style interface, or users
who require other advanced features such as parallelism, the ability to
solve multi-criteria instances, or the ability to warm start solution
procedures.

Symphony Users
Quite a few
 - Cincinnati Children's Hospital Research Foundation's Biomedical  Informatics division.  They have been using SYMPHONY for solving some bioinformatics problems.
 - I know SYMPHONY is being used by at least one airline,
 - a wireless services provider
 - a company that makes routing software,
 - a company that makes scheduling software for the mining industry,
 - and a major pharmaceutical company

Relationship between BCP and SYMPHONy from Ted’s FAQs:
What is the relationship of SYMPHONY and COIN/BCP?
COIN/BCP is a C++ framework based roughly on an ancestor of SYMPHONY, so they take substantially the same approach and have similar functionality. COIN/BCP was developed at IBM and is currently part of the COIN-OR software repository. Currently, SYMPHONY is easier to use "out of the box" and is a better choice for beginners. It is also more efficient for performing pure branch and cut (without column generation). COIN/BCP has improved on SYMPHONY in some areas, however, such as support for branch and price. SYMPHONY's support for branch and price is limited. COIN/BCP is missing some features that SYMPHONY has, such as an implementation of global cut pools. SYMPHONY and COIN/BCP may be combined into a third-generation framework currently under development.