glpk-hs-0.0.2: Comprehensive GLPK linear programming bindings

Data.LinFunc

Synopsis

# Documentation

type LinFunc = MapSource

`LinFunc v c` is a linear combination of variables of type `v` with coefficients from `c`. Formally, this is the free `c`-module on `v`.

class Module r m | m -> r whereSource

In algebra, if `r` is a ring, an `r`-module is an additive group with a scalar multiplication operation. When `r` is a field, this is equivalent to a vector space.

Methods

(*^) :: r -> m -> mSource

zero :: mSource

(^+^) :: m -> m -> mSource

(^-^) :: m -> m -> mSource

neg :: m -> mSource

Instances

 Module Double Double Module Int Int Module Integer Integer Module r m => Module r (IntMap m) (IArray UArray m, Module r m) => Module r (UArray Int m) Module r m => Module r (Array Int m) (Ord k, Module r m) => Module r (Map k m) Module r m => Module r (a -> m) Integral a => Module (Ratio a) (Ratio a)

var :: (Ord v, Num c) => v -> LinFunc v cSource

Given a variable `v`, returns the function equivalent to `v`.

varSum :: (Ord v, Num c) => [v] -> LinFunc v cSource

Equivalent to `vsum . map var`.

(*&) :: (Ord v, Num c) => c -> v -> LinFunc v cSource

`c *& v` is equivalent to `c *^ var v`.

vsum :: Module r v => [v] -> vSource

Returns a vector sum.

combination :: Module r m => [(r, m)] -> mSource

Given a collection of vectors and scaling coefficients, returns this linear combination.

linCombination :: (Ord v, Num r) => [(r, v)] -> LinFunc v rSource

Given a set of basic variables and coefficients, returns the linear combination obtained by summing.