Back to SYMPHONY Home Page
Next: How to Use This
Up: Introduction
Previous: Introduction
Introducing SYMPHONY 4.0
Welcome to the SYMPHONY user's manual. Whether you are a new user or simply
upgrading to version 4.0, we hope you will find this manual useful in
getting started with what we hope you will find to be a very useful and
powerful framework for developing custom branch, cut, and price
algorithms. There has been a significant amount of new development since the
last version of SYMPHONY was released. We hope this will make version 4.0
significantly easier to use, as well as significantly more
powerful. Unfortunately, this also means that there have been a number of
changes to the API. Code written for previous versions of SYMPHONY will be
broken and will have to be ported. Instructions for porting from previous
version are contained in the file
SYMPHONY-4.0/README-4.0. All this change has also
undoubtedly introduced bugs. There are now a very large number of
configurations in which SYMPHONY can be used and we have tested many of them,
but it is not possible to test them all. Please keep this is mind and report
all bugs that you find. Among the new enhancements and features are:
- SYMPHONY now works out of the box as a full-featured, parallel
mixed-integer linear program (MILP) solver, with a wide variety of options for
customization and enhancement.
- SYMPHONY now makes full use of the libraries available from
COIN
for cut generation, file I/O, and solver interface. For example,
- SYMPHONY is now capable of reading both MPS files (through the COIN
MPS reader) and GMPL (a subset of AMPL) files (using the parser available
from GLPK).
- SYMPHONY now uses the COIN Open Solver Interface (OSI), allowing it
to be used with almost any commonly available LP solver, including a number of
open source alternatives. This makes SYMPHONY an end-to-end open source
solution.
- SYMPHONY can now use COIN's Cut Generator Library (CGL) to generate
generic cutting planes.
- The API has been simplified SIGNIFICANTLY, with more default options,
helper functions, and more automation of basic functions. The parallelism is
now more hidden, especially for sequential users.
- There is automated support for user cuts generated and stored as
explicit matrix rows. The user no longer has to derive a packed form and does
not have to implement user_unpack_cuts() in order to use cuts expressed as
explicit matrix rows.
- Improvements have been made to the mechanism for accessing and displaying
solutions, including built-in support for column names, objective sense, and
objective offset.
- More sample codes are now available to aid in development, including
solvers for vehicle routing, set partitioning (basic and advanced versions),
bipartite matching, and the mixed postman problem.
- There is now a white paper available that illustrates the use of SYMPHONY
to build a simple matching solver.
- Restructuring of the makefile now allow the user to build the code from
the directory where the application is installed instead of the SYMPHONY
directory. This allows compiling multiple applications without editing make
files. Also, executables can have custom names and are built in different
directories for different LP solvers so the object files don't have to be
cleaned to switch LP solvers.
- There are makefiles available for Windows that can be configured in a
fashion similar to Unix makefiles and work with the MSVC++ 6 compiler.
Next: How to Use This
Up: Introduction
Previous: Introduction
Ted Ralphs
2003-10-16