concurrent-sa-1.0.1: Concurrent simulated annealing system.



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.



data Annealer s e Source

An annealer. Maintains a population of states and a perturbation function.

initAnnealer :: Ord e => [s] -> (s -> e) -> Int -> (s -> IO s) -> IO (Annealer s e)Source

initAnnealer initPop energyFunc popSize perturb initializes an annealer.

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

annealForTime nThreads microTime annealer runs nThreads annealing threads for the specified length of time.