[Haskell] Announcement: Fast linear programming with comfort-glpk and coinor-clp

Henning Thielemann lemming at henning-thielemann.de
Sun May 14 17:14:51 UTC 2023


I happily released two other numeric packages based on the comfort-array 
types. These are bindings to fast numeric linear programming solvers:
   https://hackage.haskell.org/package/comfort-glpk
   https://hackage.haskell.org/package/coinor-clp

The first one is (another) binding to GLPK and the second one is a binding 
to COIN-OR/CLP. I guess this is the first Haskell binding to COIN-OR/CLP, 
at all. I found that the COIN-OR solver is not as simply structured as 
GLPK and the examples miss the simple use cases, but its performance is 
much better than that of GLPK and its interior point solver 
(Method.initialBarrierSolve) just works, in contrast to the one of GLPK.

Warm start of solvers is supported by according monadic interfaces.

Both packages use the same types to describe linear programming problems, 
thus you can describe your problem once and then simply choose the 
appropriate solver. The types are exported by the package 
linear-programming.

The flexible array shapes provided by comfort-array help a lot to 
structure the problem variables. This saves you from the need to manually 
work with integer indices. You can concatenate array shapes with (::+) and 
establish Cartesian products with (,) and define array shapes that are 
compatible with nested tuples (e.g. Shape.NestedTuple ((X,X),(X,X,X))) or 
define arrays with indices of any Enum type (Shape.Enumeration).


More information about the Haskell mailing list