swIMP 0.9 review
DownloadswIMP short from SWIG-based Interfaces for Mathematical Programming aims at making solvers written in C or C++ available under other
|
|
swIMP short from SWIG-based Interfaces for Mathematical Programming aims at making solvers written in C or C++ available under other languages.
The current focus is on Java as target language and on LP/IP-solvers which are compatible to the Open Solver Interface (OSI) from the Coin-OR-project. This includes both Open Source solvers as well as reknown commercial solvers like CPLEX and Xpress (see Features).
The wrappers are implemented using the generator tool SWIG. SWIG generates both C++ code which is then compiled into a shared library and Java-code which accesses the shared library through the Java Native Interface (JNI).
In principle, SWIG also supports other target languages like Python or Perl but this would require non-trivial modifications of the SWIG interface definitions currently provided by swIMP.
Here are some key features of "swIMP":
Java-wrappers for OSI-compatible solvers
The following solvers are currently supported:
Solvers from the Coin-OR-project, namely
Clp,
Cbc,
Vol,
Symphony.
Support for the following solvers should be easy to add (at most one day of work or so) but has not yet been added because I had no need to - a short notice if you need such a feature or even better a patch for including one of these solvers would of course be highly welcome:
GLPK,
CPLEX,
Xpress
Environment
The generated Java-code has been compiled and tested under Version 1.4.2 of Sun Java 2 Platform, Standard Edition (J2SE) .
The shared library is currently built and tested under Linux but should work on most UNIX systems. The GNU Build Tools (autoconf and automake) are used to achieve this portability. However, no tests on other platforms than Linux have been performed.
swIMP requires the following libraries from Coin-OR-project:
libCoin,
libCgl,
libOsi.
Furthermore, the libraries for the solvers which shall be accessed through Osi must be available, of course. For example, you may want to install
libCbc, libCgl and libVol from the Coin-OR-project,
together with their Osi-counterparts libOsiCbc, libOsiCgl and libOsiVol.
swIMP 0.9 search tags