Optimization library implemented in Haskell. This is a partial port of cppOpt
to Haskell, which offers a subset of the functionality.
It is currently defined for a pure context, calling IO functions or foreign programs is therefore not possible.
It allows minimising via simulated annealing
.
Parallel optimisation is possible by splitting the parameter space and assigning parts of it to each optimisation instance.
Overview
--- The input parameters which are used for the optimisation
type OptParams = [Double]
--- Range from min to max
type Range = (Double, Double)
--- The result of an optimisation
data OptResult = OptResult
{ inputs :: OptParams
, result :: Double
} deriving (Show)
--- The parameters used for the simulated annealing optimisation
data SAparams = SAparams
{ ...
, ranges :: [Range] --- Ranges for the parameters
, callback :: OptParams -> OptResult --- The function which shall be optimised
}