wiki:WikiStart

Welcome to the SYMPHONY development home page

SYMPHONY is an open-source solver for mixed-integer linear programs (MILPs) written in C. It can be used in four different main modes:

  • As a callable library through either the native C interface or through the Osi.
  • As an interactive solver using a command-line interface.
  • As a framework to build customized solvers for specific problem classes.
  • Through a number of different modeling languages: AMPL, GMPL, GAMS, PuLP (see below).

SYMPHONY can be executed in either parallel (distributed or shared memory) or sequential modes and has a number of advanced features that make it unique, including the ability to

  • solve biobjective MILPs,
  • warm start the solution procedure, and
  • perform basic sensitivity analyses.

SYMPHONY links to a number of other COIN projects for additional functionality, including:

  • Clp (the default solver for LP relaxations)
  • Osi (an interface to alternative solvers for solving LP relaxations)
  • Cgl (for cut generation)
  • CoinUtils (for reading in MPS files and various utilities)

SYMPHONY can utilize the libraries of GLPK to read GMPL files (a subset of AMPL) or can be called using either FLOPC++, an algebraic modeling language based on C++, or PuLP, a python-based modeling language. It can also be called through AMPL or GAMS using the links using the Optimization Services project. For more information on supported platforms, links to dependent projects, current version, and more, click here

Latest Releases

  • The latest stable version of SYMPHONY is SYMPHONY-latest-stable.png.
  • The latest release version of SYMPHONY is SYMPHONY-latest-release.png.
  • Click here to see the current change log.

Supported Platforms

  • GNU/Linux (gcc, 32- and 64-bit)
  • Microsoft Windows
    • CYGWIN (w/ gcc and cl compilers, 32- and 64-bit)
    • MinGW (w/ gcc and cl compilers, 32- and 64-bit)
    • Visual C++
  • Mac OSX (gcc and clang)

Testing Status

Travis-CI (OS X and Linux)

https://travis-ci.org/coin-or/SYMPHONY.svg
Appveyor (Windows)

https://ci.appveyor.com/api/projects/status/220ltxwv2w2ac51s/branch/master

Cite

https://zenodo.org/badge/23689820.svg

Download and Install

https://api.bintray.com/packages/coin-or/download/SYMPHONY/images/download.svg

  • Linux: On Debian, SYMPHONY is available in the package coinor-symphony and can be installed with apt. On Fedora, SYMPHONY is available in the package coin-or-SYMPHONY. Pre-compiled binaries are also available on BinTray and as part of the COIN-OR Optimization Suite.
  • Windows: The easiest way to get SYMPHONY on Windows is to download binaries from BinTray or just use the Windows installer for the COIN Optimization Suite, which provides Visual Studio compatible libraries and binaries (these are slightly out of date, however).
  • OS X: The easiest way to get SYMPHONY on OSX is through Homebrew. It can be installed with
    • brew tap coin-or-tools/coinor
    • brew install symphony.

Due to license incompatibilities, pre-compiled binaries lack some functionality and are not available for the distributed parallel version of SYMPHONY. If binaries are not available for your platform for the latest version and you would like to request them to be built and posted, feel free to let us know on the mailing list or by posting a ticket.

Source code can be obtained either by

  • Downloading a snapshot of the source code for the latest release version of SYMPHONY from the SYMPHONY source code download page, or
  • Checking out the latest stable source using a subversion client.
  • Checking out the code from Github

The recommended method is to use subversion because it makes it easier to obtain updates. Below are some quick start guides for building on common platforms. More detailed build instructions are here.

Quick Start Guide for Unix-like Environments

In a Unix-like environment (such as Linux or CYGWIN), the following commands may be used to obtain and build SYMPHONY from source using either SVN or git in most cases. For SVN, do

svn checkout https://projects.coin-or.org/svn/SYMPHONY/stable/5.6 SYMPHONY-5.6
cd SYMPHONY-5.6

For git do

git clone --branch=stable/5.6 https://github.com/coin-or/SYMPHONY SYMPHONY-5.6
cd SYMPHONY-5.6
git clone --branch=stable/0.8 https://github.com/coin-or-tools/BuildTools/
BuildTools/get.dependencies fetch

Finally, do

./configure
make
make install

Optionally, once could also execute make test to run SYMPHONY's unit test. For much more detailed information on custom builds, see the detailed install instructions or the User's Guide.

Quick Start Guide for Microsoft Visual C++ Users

For Microsoft Visual C++ users, there are project files for version 10 available in the MSVisualStudio directory. First, obtain the source code using either a Windows subversion client (see the COIN-OR FAQ) or download a snapshot. In MSVC++ Version 10, open the solution file and build the SYMPHONY project. The code should build out of the box with default settings. The procedure for other version of MSVC++ should be similar. For much more detailed information on custom builds (such as the parallel version), see the detailed install instructions file or the User's Guide.

Documentation and Additional Information

Getting More Help

  • There is a SYMPHONY user's mailing list for discussion. Please visit the mailing list home to join or view the archives.

Development News

January 16, 2017

  • SYMPHONY 5.6.16 has been released.
    • Fix problem with appveyor configuration
    • Click here to see the diff with release version 5.6.13.

January 15, 2017

  • SYMPHONY 5.6.15 has been released.
    • Fix for configuration issue with OpenMP when building with Visual Studio compiler under Msys2
    • Fix for bugs in PVM version
    • Fix for bugs in computing lower bounds
    • Fix for compilation error with gcc 6
    • Other minor fixes
    • Enabling binary uploads with BinTray?
    • Click here to see the diff with release version 5.6.13.

February 17, 2016

  • SYMPHONY 5.6.14 has been released.
    • Fixing small bug with re-setting environment in user applications.
    • Fixing some memory errors arising with applications when extra variables are used.
    • Fixing small bug with tracking variable indices in branching.
    • Moving code inside critical block to prevent memory access errors in shared memory parallel mode.
    • Added switches for turning hot starting on and off
    • Updates to documentation
    • Small fixes
    • Added support for Travis and Appveyor
    • Click here to see the diff with release version 5.6.13.

October 8, 2015

  • SYMPHONY 5.6.13 has been released.
    • Release to update externals and pick up bug fixes
    • Click here to see the diff with release version 5.6.12.

September 22, 2015

  • SYMPHONY 5.6.12 has been released.
    • Fixed function for determining duals and reduced costs.
    • Making it possible to build with cut validity checking enabled.
    • Fixed bug with re-using of environment for new instances.
    • Added parameter that allows saving of LP relaxations for debugging.
    • Added function for writing LP files.
    • Fixed bug that arose when we fixed a variable in strong branching (now, we keep going with LP loop when this happens).
    • Fixed long-standing bug that arose when child 0 could be pruned while generating children.
    • Click here to see the diff with release version 5.6.11.

September 2, 2015

  • SYMPHONY 5.6.11 has been released.
    • Updating externals
    • Click here to see the diff with release version 5.6.10.

April 3, 2015

  • SYMPHONY 5.6.10 has been released.
    • Fixed bug with using more the 1 process in PVM
    • Print to stderr on ctrl-c
    • Fixed double free with prep level < 1
    • Click here to see the diff with release version 5.6.9.

March 10, 2015

  • SYMPHONY 5.6.9 has been released.
    • Fixed memory leak
    • Fixed double free when nodes are retained in memory after pruning
    • Added ability to access solution pool after solve to retrieve additional suboptimal solutions.
    • Click here to see the diff with release version 5.6.8.

February 11, 2015

  • SYMPHONY 5.6.8 has been released.
    • Fix to dependency linking.
    • Fix for installation with DESTDIR
    • Click here to see the diff with release version 5.6.7.

February 9, 2015

  • SYMPHONY 5.6.7 has been released.
    • Fixes to distributed parallel (PVM) version.
    • Enable primal heuristics in distributed version.
    • Update externals to most recent stables.
    • Make dependency linking default.
    • Click here to see the diff with release version 5.6.6.

January 6, 2015

  • SYMPHONY 5.6.6 has been released.
    • Disabling pre-processor for multicriteria solves
    • Click here to see the diff with release version 5.6.5.

January 4, 2015

  • SYMPHONY 5.6.5 has been released.
    • Adding explicit dependence on libgomp
    • Click here to see the diff with release version 5.6.4.

December 16, 2014

  • SYMPHONY 5.6.4 has been released.
    • Fix to pkgconfig file to add flags for OpenMP.
    • Fixes for documentation.
    • More fixes for dependency linking.
    • Click here to see the diff with release version 5.6.3.

December 15, 2014

  • SYMPHONY 5.6.3 has been released.
    • Fixes to applications to allow some preprocessing, which is needed for some primal heuristics to work.
    • Fixes to preprocessor settings so that the minimal amount of preprocessing is always done.
    • Fixes to some methods so they still work preprely even when preprocessing is not done.
    • Fixes to pre-processor for applications that construct the LP relaxation algorithmically.
    • Fix to pkgconfig file for applications.
    • Fix for dependency linking.
    • Other small bug fixes.
    • Click here to see the diff with release version 5.6.2.

October 31, 2014

  • SYMPHONY 5.6.2 has been released.
    • Updates and fixes to manual and documentation files.
    • Fixes for configuring with PVM.
    • Fixes to allow dependency linking with the application library.
    • Bug fix for reliability branching.
    • Bug fix for addition of column cuts
    • Updates to externals to fix bugs in dependent projects.
    • Click here to see the diff with release version 5.6.1.

September 4, 2014

  • SYMPHONY 5.6.1 has been released.
    • Small fixes for OpenMP
    • Click here to see the diff with release version 5.6.0.

September 3, 2014

  • SYMPHONY 5.6.0 has been released.
    • Major re-design of shared memory parallel mode for increased efficiency and stability.
    • Fixes for distributed memory parallel version (PVM)
    • Fixes for bicriteria version
    • Click here to see the diff with release version 5.5.7.

December 17, 2013

  • SYMPHONY 5.5.7 has been released.
    • More updates to build harness
    • Click here to see the diff with release version 5.5.6.

November 23, 2013

  • SYMPHONY 5.5.6 has been released.
    • More updates to build harness
    • Click here to see the diff with release version 5.5.5.

November 12, 2013

  • SYMPHONY 5.5.5 has been released.
    • More updates to build harness
    • Click here to see the diff with release version 5.5.4.

October 21, 2013

  • SYMPHONY 5.5.4 has been released.
    • Fix memory leak
    • Delete superfluous header file
    • More updates to build harness
    • Click here to see the diff with release version 5.5.3.

October 18, 2013

  • SYMPHONY 5.5.3 has been released.
    • Updates to build harness
    • Click here to see the diff with release version 5.5.2.

October 15, 2013

  • SYMPHONY 5.5.2 has been released.
    • Fix problems with Visual Studio project files
    • Update to build tools
    • Minor bug fixes
    • Click here to see the diff with release version 5.5.1.

August 3, 2013

  • SYMPHONY 5.5.1 has been released.
    • Fix bug that caused all user applications to crash
    • Click here to see the diff with release version 5.5.0.

July 16, 2013

  • SYMPHONY 5.5.0 has been released.
    • First release in the 5.5 series.
    • Improvements to preprocessing
    • Improvements to heuristics
    • Improvements to MSVC++ support
    • Bug fixes
    • Significant performance gains

June 28, 2013

  • SYMPHONY 5.4.8 has been released.
    • Updates to MSVC++ files (applications now use property sheets and VRP app file is fixed).
    • Other fixes for build tools.
    • Click here to see the diff with release version 5.4.7.

January 28, 2013

  • SYMPHONY 5.4.7 has been released.
    • Updates to documentation
    • Click here to see the diff with release version 5.4.6.

Archived news

Licensing and Authors

SYMPHONY is written in C and is distributed as open source code under the Common Public License (CPL) (version 5.3 and earlier) or the Eclipse Public License (versions 5.4 and later). It is available from the COIN-OR initiative. The primary authors of the code are

The code is currently maintained by Ted Ralphs, Menal Guzelsoy, and Ashutosh Mahajan at the COR@L Lab at Lehigh University.

Note that this site is a Wiki, which allows users to modify the content to correct typos, add information, or share their experience and tips with other users. You are welcome to contribute to this project webpages. To edit these pages or submit a trouble ticket, you must first register and login.

Acknowledgements

The development of this software was partially supported by NSF grants DMS-9527214, DMI-0534862, and DMI-0522796, as well as Texas ATP Grant 97-3604-010.

Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation or the state of Texas.== News ==

Last modified 8 months ago Last modified on Feb 28, 2017 2:39:25 PM

Attachments (1)

Download all attachments as: .zip