Control.Concurrent.Annealer
Description
The traditional simulated annealing is to maintain a current state, and repeatedly perturb it, keeping or discarding the perturbed state depending on the difference in an energy function and a temperature, which changes as a function of time. This concurrent SA implementation maintains a population of current states which are perturbed, and lower-ranked states are deleted according to a temperature function. It is intended as a lightweight approach to parallelizing optimization problems.
Documentation
initAnnealer :: Ord e => [s] -> (s -> e) -> Int -> (s -> IO s) -> IO (Annealer s e)Source
initializes an annealer.
initAnnealer
initPop energyFunc popSize perturb
offerState :: s -> Annealer s e -> IO ()Source
Offer a state to the annealer. Depending on the current population, the state may or may not be kept.
getBestState :: Ord e => Annealer s e -> IO sSource
Returns the current best state in the annealer.
annealForTime :: Ord e => Int -> Int -> Annealer s e -> IO sSource
runs annealForTime
nThreads microTime annealernThreads
annealing threads for the specified length of time.