| Safe Haskell | None |
|---|
GA.Simple
- class NFData a => Chromosome a where
- runGA :: (RandomGen g, Chromosome a) => g -> Int -> Double -> (g -> (a, g)) -> (a -> Int -> Bool) -> a
- runGAIO :: Chromosome a => Int -> Double -> (StdGen -> (a, StdGen)) -> (a -> Int -> IO Bool) -> IO a
- zeroGeneration :: RandomGen g => g -> (g -> (a, g)) -> Int -> ([a], g)
- nextGeneration :: (RandomGen g, Chromosome a) => g -> [a] -> Int -> Double -> ([a], g)
Documentation
class NFData a => Chromosome a whereSource
Chromosome interface
Arguments
| :: (RandomGen g, Chromosome a) | |
| => g | Random number generator |
| -> Int | Population size |
| -> Double | Mutation probability [0, 1] |
| -> (g -> (a, g)) | Random chromosome generator (hint: use currying or closures) |
| -> (a -> Int -> Bool) | Stopping criteria, 1st arg - best chromosome, 2nd arg - generation number |
| -> a | Best chromosome |
Pure GA implementation
Arguments
| :: Chromosome a | |
| => Int | Population size |
| -> Double | Mutation probability [0, 1] |
| -> (StdGen -> (a, StdGen)) | Random chromosome generator (hint: use currying or closures) |
| -> (a -> Int -> IO Bool) | Stopping criteria, 1st arg - best chromosome, 2nd arg - generation number |
| -> IO a | Best chromosome |
Non-pure GA implementation
Arguments
| :: RandomGen g | |
| => g | Random number generator |
| -> (g -> (a, g)) | Random chromosome generator (hint: use closures) |
| -> Int | Population size |
| -> ([a], g) | Zero generation and new RNG |
Generate zero generation. Use this function only if you are going to implement your own runGA.
Arguments
| :: (RandomGen g, Chromosome a) | |
| => g | Random number generator |
| -> [a] | Current generation |
| -> Int | Population size |
| -> Double | Mutation probability |
| -> ([a], g) | Next generation ordered by fitness (best - first) and new RNG |
Generate next generation (in parallel) using mutation and crossover. Use this function only if you are going to implement your own runGA.