Popularity
6.8
Declining
Activity
0.0
Stable
12
2
8
Monthly Downloads: 16
Programming language: Haskell
License: BSD 3clause "New" or "Revised" License
simplegeneticalgorithm alternatives and similar packages
Based on the "simple" category.
Alternatively, view simplegeneticalgorithm alternatives based on common mentions on social networks and blogs.

simpleneuralnetworks
Simple parallel neural networks implementation in pure Haskell 
simplegeneticalgorithmmr
Fork of simplegeneticalgorithm using MonadRandom
Do you think we are missing an alternative of simplegeneticalgorithm or a related project?
README
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: