Popularity
1.9
Growing
Activity
0.0
Stable
2
2
0
Monthly Downloads: 2
Programming language: Haskell
License: BSD 3clause "New" or "Revised" License
simplegeneticalgorithmmr alternatives and similar packages
Based on the "simple" category.
Alternatively, view simplegeneticalgorithmmr alternatives based on common mentions on social networks and blogs.

simplegeneticalgorithm
Simple parallel genetic algorithm implementation in pure Haskell 
simpleneuralnetworks
Simple parallel neural networks implementation in pure Haskell
Do you think we are missing an alternative of simplegeneticalgorithmmr or a related project?
README
simplegeneticalgorithmmr
This is a simple fork of simplegeneticalgorithm, using MonadRandom instead of manually threading the random generator, for convenience.
The readme for simplegeneticalgorithm is below:
simplegeneticalgorithm
Simple parallel genetic algorithm implementation in pure Haskell
Sin() function interpolation example ( src/MainSin.hs ):
import AI.GeneticAlgorithm.Simple
import System.Random
import Text.Printf
import Data.List as L
import Control.DeepSeq
newtype SinInt = SinInt [Double]
instance NFData SinInt where
rnf (SinInt xs) = rnf xs `seq` ()
instance Show SinInt where
show (SinInt []) = "<empty SinInt>"
show (SinInt (x:xs)) =
let start = printf "%.5f" x
lst = [1 :: Int ..]
end = concat $ zipWith (\c p > printf "%+.5f" c ++ "X^" ++ show p) xs lst
in start ++ end
polynomialOrder = 4 :: Int
err :: SinInt > Double
err (SinInt xs) =
let f x = snd $ L.foldl' (\(mlt,s) coeff > (mlt*x, s + coeff*mlt)) (1,0) xs
in maximum [ abs $ sin x  f x  x < [0.0,0.001 .. pi/2]]
instance Chromosome SinInt where
crossover g (SinInt xs) (SinInt ys) =
( [ SinInt (L.zipWith (\x y > (x+y)/2) xs ys) ], g)
mutation g (SinInt xs) =
let (idx, g') = randomR (0, length xs  1) g
(dx, g'') = randomR (10.0, 10.0) g'
t = xs !! idx
xs' = take idx xs ++ [t + t*dx] ++ drop (idx+1) xs
in (SinInt xs', g'')
fitness int =
let max_err = 1000.0 in
max_err  (min (err int) max_err)
randomSinInt gen =
let (lst, gen') =
L.foldl'
(\(xs, g) _ > let (x, g') = randomR (10.0,10.0) g in (x:xs,g') )
([], gen) [0..polynomialOrder]
in (SinInt lst, gen')
stopf :: SinInt > Int > IO Bool
stopf best gnum = do
let e = err best
_ < printf "Generation: %02d, Error: %.8f\n" gnum e
return $ e < 0.0002  gnum > 20
main = do
int < runGAIO 64 0.1 randomSinInt stopf
putStrLn ""
putStrLn $ "Result: " ++ show int
For more details see: