Description
Linear Programming using GLPK and comfort-array.
Description
Simple interface to linear programming functions provided by GLPK using the flexible Array shape framework from comfort-array
.
E.g. you can use Shape.Tuple
to convert safely between nested tuples and arrays with the same number of elements.
type X = Shape.Element
type PairShape = Shape.NestedTuple Shape.TupleIndex (X,X)
case Shape.indexTupleFromShape (Shape.static :: PairShape) of
(posIx,negIx) ->
case mapSnd (mapSnd Array.toTuple) <$>
LP.simplex [] [[1.*posIx, (-1).*negIx] ==. 314]
(LP.Minimize,
Array.fromTuple (23,42) :: Array PairShape Double)
of
(Right (LP.Optimal, (absol, (pos, neg)))) ->
printf "absol %f, pos %f, neg %f\n" absol pos neg
_ -> fail "GLPK solver failed"
Alternatives: coinor-clp
, hmatrix-glpk
, glpk-hs