SimpleEA-0.2.1: Simple evolutionary algorithm framework.

Safe HaskellSafe-Infered

AI.SimpleEA.Utils

Description

Utilitify functions that makes it easier to write the genetic operators and functions for doing calculations on the EA data.

Synopsis

Documentation

avgFitnesses :: [[(Genome a, Fitness)]] -> [Fitness]Source

Returns the average fitnesses for a list of generations.

maxFitnesses :: [[(Genome a, Fitness)]] -> [Fitness]Source

Returns the maximum fitness per generation for a list of generations.

minFitnesses :: [[(Genome a, Fitness)]] -> [Fitness]Source

Returns the minimum fitness per generation for a list of generations.

stdDeviations :: [[(Genome a, Fitness)]] -> [Double]Source

Returns the standard deviation of the fitness values per generation fot a list of generations.

randomGenomes :: (RandomGen g, Random a, Enum a) => Int -> Int -> a -> a -> Rand g [Genome a]Source

Returns a list of len random genomes who has length genomeLen made of elements in the range [from,to].

fitPropSelect :: RandomGen g => [(a, Fitness)] -> Rand g aSource

Fitness-proportionate selection: select a random item from a list of (item, score) where each item's chance of being selected is proportional to its score

tournamentSelect :: [(a, Fitness)] -> Int -> Rand PureMT aSource

Performs tournament selection amoing size individuals and returns the winner

sigmaScale :: [Fitness] -> [Fitness]Source

Applies sigma scaling to a list of fitness values. In sigma scaling, the standard deviation of the population fitness is used to scale the fitness scores.

rankScale :: [Fitness] -> [Fitness]Source

Takes a list of fitness values and returns rank scaled values. For a list of n values, this means that the best fitness is scaled to n, the second best to n-1, and so on.

elite :: [(a, Fitness)] -> [a]Source

takes a list of (genome,fitness) pairs and returns a list of genomes sorted by fitness (descending)

getPlottingData :: [[(Genome a, Fitness)]] -> StringSource

takes a list of generations and returns a string intended for plotting with gnuplot.