Dylp and OsiDylp

Dylp and the OsiDylp OSI interface layer are now distributed from the COIN-OR web site. The COIN-OR Project (COmputational INfrastructure for Operations Research) is an ongoing and active effort to develop quality open source software for the operations research community.

If you have difficulty building dylp or OsiDylp, or find a bug, I (Lou Hafer) want to know about it. The preferred method for reporting bugs is to file a ticket. (If you have the time, please scan the active tickets to see if you can simply add information to an existing bug report.) The more information you can supply, the more likely it is that we'll be able to find and fix your bug in a timely manner. For configuration problems, config.log is invaluable. For execution problems, a small example that triggers the bug really helps. You can also post email to the dylp mailing list, or email me directly.

Dylp itself is a standalone C code (i.e., it does not require other COIN modules to execute), but the version distributed from COIN does make use of the COIN build system (aka BuildTools).

COIN software can be obtained as source code or binaries. See the COIN-OR Download page for instructions. If you just want to use COIN software or dylp alone, the tarballs will work fine. If you intend to participate in COIN software development, you really should take the time to learn svn. It's a bit more work to get started with svn, but it's a lot more painful to keep up-to-date with tarballs.

The dylp distribution comes with a lengthy (83 pp.) technical report which explains in detail the algorithms used in the code, the options that can be set by the client, and the standalone user interface. You can find pointers to both PostScript and PDF from the dylp FAQ.

Dylp was developed as the LP solver for BonsaiG, and has been tested as a solver for cbc-generic, the generic OSI main program for cbc, the COIN-OR branch-and-cut code. However, cbc-generic is a work in progress, and it's often broken for lengthy periods due to changes in cbc that are specific to the COIN-OR LP solver, clp. If you're interested in this work, please send me email or post to the cbc mailing list.

In keeping with the policy of the COIN-OR Project, the files which constitute dylp and OsiDylp are licensed under the terms of the Eclipse Public License (EPL). If you're desperate to use either with the GPL, drop me an email. If you just want a GPL'd solver, I suggest glpk.

Background

Dylp is my research code, and as such is built more for flexibility and robustness than for speed. It was designed with an eye toward its intended use as the solver in the MILP code bonsaiG, and many of the algorithms are experimental or speculative. The most obvious difference from most solvers is the dynamic simplex algorithm, which continually modifies the constraint system as it works. See the technical report for a full description.

Compiled with full debugging capabilities, dylp is downright paranoid and can tell you far more than you'll ever want to know about what it's doing while it solves your LP problem. Compiled with full optimisation, it's decently fast. Both dylp and bonsaiG have been successfully used in production environments. Still, if your primary interest is production work and you want blazing speed, my advice is that you should consider clp (the COIN native lp solver), or consider purchasing one of the commercial solvers which also have COIN OSI interfaces. (That's the beauty of the COIN OSI layer --- you can develop your application without ending up tied to a particular solver.)

Dylp is written in C. Dylp is Fortran-free thanks to Andrew Makhorin and the basis code from glpk).

COIN-OR software is written in C++, as is the OsiDylp OSI interface layer. Both require IEEE floating point support. Dylp was developed on a Sun workstation running the Solaris operating system, using the Sun Studio compilers and development environment. It's been tested extensively in Linux/GCC and Solaris/GCC environments. You should be able to configure and build dylp (or any COIN software) in any environment that supports the Gnu autotools (autoconf and automake), including faux unices like Cygwin and MinGW/Msys. If you have trouble, please let us know by filing a ticket as described above.

While I'm not a fan of Windows, the COIN-OR Project is committed to supporting the Visual Studio programming environment.

Again, if you find bugs in dylp or the COIN-OR OSI layer, I and the other COIN-OR developers are interested in knowing about them. Please take the time to tell us, as described above. While I'm receptive to suggestions for new features, response time will vary wildly (and may approach infinity unless you supply code :-).

Lou Hafer
lou@cs.sfu.ca
May 2, 2011