import Control.Monad
import Control.Monad.Trans
import Simulation.Aivika.Trans
import Simulation.Aivika.Lattice
import Simulation.Aivika.Experiment.Histogram
meanUpTime = 1.0
meanRepairTime = 0.5
specs = Specs { spcStartTime = 0.0,
spcStopTime = 1000.0,
spcDT = 0.1,
spcMethod = RungeKutta4,
spcGeneratorType = SimpleGenerator }
model :: Simulation LIO Histogram
model =
do let latticeDistribution :: Estimate LIO [Int]
latticeDistribution =
do k <- liftComp latticeMemberIndex
return [k]
let reduce :: [Int] -> [Int] -> Estimate LIO [Int]
reduce ks1 ks2 = return $ ks1 ++ ks2
let leaf = latticeDistribution
ks <- foldEstimate reduce leaf
runEstimateInStartTime $
do xs <- ks
let ys = fmap (fromIntegral) xs
hs = histogram binScott [ys]
return hs
main :: IO ()
main =
do lat <- newRandomLattice 10
hs <- runLIO lat $
runSimulation model specs
putStrLn "Histogram:"
putStrLn (show hs)