

| 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. |