10 Aug 2006 cbbrowne   » (Master)

The Too Cool Thing that I discovered today is that there is now, many years later, a free software alternative to AMPL, namely ZIMPL .

What is that? It is a Little Language for transforming descriptions of mathematical problems into Integer Programming/Linear Programming formulations that may then be solved using an LP/MIP solver.

Why? Because the quasi-standard format for these problems, MPS, will make your ears bleed if you try to write up a complex model directly. If you're trying to describe a problem of interesting size (thousands of variables and constraints), you really do need to write a program to generate an MPS file.

AMPL, and now ZIMPL, allow you to describe your problem using reasonably nice looking equations, with two particularly pointed additions:

  • You can define model variables and parameters that draw their values from formatted data in external files, allowing you to use any sort of database / import scheme to define large portions of the problem and parameters

  • You can define sets of model variables with descriptive "subscripts," and have equation descriptions that generate gobs of model equations that are identically shaped by merely describing one of them

It's not difficult for 30 lines of AMPL/ZIMPL model description to combine with a data file with 50-100 parameter values to then expand to generate a planning model with tens of thousands of variables and constraints.

Of course, it would be bad news if this was insoluble; modern LP solvers on modern hardware can solve problems with hundreds of thousands if not millions of variables/constraints.

The one annoyance is that the default solver is anything but free; it's still all too common for Operations Research tools to be "free for purely academic use" but exceedingly proprietary anywhere else...

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!