simple-genetic-algorithm-0.1.0.2: Simple parallel genetic algorithm implementation

Safe HaskellNone

GA.Simple

Synopsis

Documentation

class NFData a => Chromosome a whereSource

Chromosome interface

Methods

crossover :: RandomGen g => g -> a -> a -> ([a], g)Source

Crossover function

mutation :: RandomGen g => g -> a -> (a, g)Source

Mutation function

fitness :: a -> DoubleSource

Fitness function. fitness x > fitness y means that x is better than y

runGASource

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

runGAIOSource

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

zeroGenerationSource

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.

nextGenerationSource

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.