| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
AI.MEP.Operators
Description
Genetic operators
- data Config n a = Config {}
- defaultConfig :: Config Char Double
- crossover :: Ord n => Chromosome n a -> Chromosome n a -> Rand (Chromosome n a, Chromosome n a)
- swap :: Double -> (t, t) -> Rand (t, t)
- replaceAt :: Int -> a -> Vector a -> Vector a
- mutation3 :: Ord n => Config n Double -> Chromosome n Double -> Rand (Chromosome n Double)
- smoothMutation :: Ord n => Double -> Config n Double -> Chromosome n Double -> Rand (Chromosome n Double)
- newChromosome :: Ord n => Config n Double -> Rand (Chromosome n Double)
- new :: Ord n => Double -> Double -> Vector n -> Vector (F Double) -> Int -> Rand (Gene Int n Double)
- newTerminal :: Ord n => Double -> Vector n -> Rand (Gene Int n Double)
- newVar :: Ord n => Vector n -> Rand (Gene Int n a)
- newOp :: Vector (F a) -> Int -> Rand (Gene Int n a)
- newCNormal :: Double -> Double -> Rand (Gene Int n Double)
- newC :: Rand (Gene i n Double)
Documentation
Constructors
| Config | |
Fields
| |
defaultConfig :: Config Char Double Source #
defaultConfig = Config
{
p'const = 0.1
, p'var = 0.4
, p'mutation = 0.1
, p'crossover = 0.9
, c'length = 30
, c'popSize = 40
, c'popN = 1
, c'ops = V.empty -- <-- To be overridden
, c'vars = V.singleton 'X'
}
crossover :: Ord n => Chromosome n a -> Chromosome n a -> Rand (Chromosome n a, Chromosome n a) Source #
Uniform crossover operator
Arguments
| :: Ord n | |
| => Config n Double | Common configuration |
| -> Chromosome n Double | |
| -> Rand (Chromosome n Double) |
Mutation operator with up to three mutations per chromosome
Arguments
| :: Ord n | |
| => Double | Probability of gene mutation |
| -> Config n Double | Common configuration |
| -> Chromosome n Double | |
| -> Rand (Chromosome n Double) |
Mutation operator with a fixed mutation probability of each gene
Randomly initialize a new chromosome. By definition, the first gene is terminal (a constant or a variable).
Arguments
| :: Ord n | |
| => Double | Probability to produce a constant |
| -> Double | Probability to produce a variable |
| -> Vector n | Variable labels vector |
| -> Vector (F Double) | Operations vector |
| -> Int | Maximal operation index |
| -> Rand (Gene Int n Double) |
Produce a new random gene
newVar :: Ord n => Vector n -> Rand (Gene Int n a) Source #
A random variable from the variables vector
newOp :: Vector (F a) -> Int -> Rand (Gene Int n a) Source #
A random operation from the operations vector
Draw a constant from the normal distribution