L-seed-0.1: src/fastScorer.hs
import Lseed.Data
import Lseed.Data.Functions
import Lseed.Grammar.Parse
import Lseed.Constants
import Lseed.Mainloop
import qualified Data.Map as M
import Control.Monad
import Debug.Trace
import System.Environment
import System.Time
import System.Random
import Text.Printf
parseFile filename = do
content <- readFile filename
let result = parseGrammar filename content
return $ either (error.show) id result
readArgs doit = do
args <- getArgs
if null args
then do
putStrLn "L-Seed Demo application."
putStrLn "Please pass L-Seed files on the command line."
else do
genomes <- mapM parseFile args
doit (spread genomes)
where spread gs = zipWith (\g p -> Planted ((fromIntegral p + 0.5) / l) p g inititalPlant) gs [0..]
where l = fromIntegral (length gs)
scoringObs = nullObserver {
obFinished = \garden -> do
forM_ garden $ \planted -> do
printf "Plant from %d at %.4f: Total size %.4f\n"
(plantOwner planted)
(plantPosition planted)
(plantLength (phenotype planted))
let owernerscore = foldr (\p -> M.insertWith (+) (plantOwner p) (plantLength (phenotype p))) M.empty garden
forM_ (M.toList owernerscore) $ \(o,s) ->
printf "Sum for %d: %.4f\n" o s
}
main = readArgs $ \garden -> do
lseedMainLoop False scoringObs 30 garden