HOpt

written in Haskell source

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
    }