packages feed

aivika-experiment-chart-3.0: examples/MachRep3/Experiment.hs

module Experiment (experiment, generators) where

import Data.Monoid

import Simulation.Aivika
import Simulation.Aivika.Experiment
import Simulation.Aivika.Experiment.Chart

specs = Specs { spcStartTime = 0.0,
                spcStopTime = 1000.0,
                spcDT = 1.0,
                spcMethod = RungeKutta4,
                spcGeneratorType = SimpleGenerator }

experiment :: Experiment
experiment =
  defaultExperiment {
    experimentSpecs = specs,
    experimentRunCount = 200,
    experimentDescription = "Experiment Description" }

x = resultByName "upTimeProp"
t = resultByName "totalUpTime"
n = resultByName "runIndex"

generators :: ChartRendering r => [WebPageGenerator r]
generators =
  [outputView defaultExperimentSpecsView,
   outputView $ defaultDeviationChartView {
     deviationChartLeftYSeries = t,
     deviationChartRightYSeries = x },
   outputView $ defaultFinalXYChartView {
     finalXYChartPlotTitle = "The proportion up time", 
     finalXYChartXSeries = n,
     finalXYChartRightYSeries = x }, 
   outputView $ defaultFinalXYChartView {
     finalXYChartPlotTitle = "The proportion up time for simulation runs < 50 and > 100", 
     finalXYChartXSeries = n,
     finalXYChartRightYSeries = x, 
     finalXYChartPredicate =
       do i <- liftParameter simulationIndex
          return $ (i < 50) || (i > 100) },
   outputView $ defaultFinalHistogramView {
     finalHistogramPlotTitle = "Final Histogram (Default, Double for Testing)",
     finalHistogramSeries = x <> x },
   outputView $ defaultFinalHistogramView {
     finalHistogramPlotTitle = "Final Histogram (Default, Double for Testing)",
     finalHistogramSeries = t <> t },
   outputView $ defaultFinalStatsView {
     finalStatsSeries = x },
   outputView $ defaultFinalHistogramView {
     finalHistogramPlotTitle = "Final Histogram (Default)",
     finalHistogramSeries = x },
   outputView $ defaultFinalHistogramView {
     finalHistogramPlotTitle = "Final Histogram (Bin Size = 0.001)",
     finalHistogramBuild  = histogramBinSize 0.001,
     finalHistogramSeries = x },
   outputView $ defaultFinalHistogramView {
     finalHistogramPlotTitle  = "Final Histogram (Bin Num = 10)",
     finalHistogramBuild  = histogramNumBins 10,
     finalHistogramSeries = x },
   outputView $ defaultFinalHistogramView {
     finalHistogramPlotTitle  = "Final Histogram (Sturges)",
     finalHistogramBuild  = histogram binSturges,
     finalHistogramSeries = x },
   outputView $ defaultFinalHistogramView {
     finalHistogramPlotTitle  = "Final Histogram (Doane)",
     finalHistogramBuild  = histogram binDoane,
     finalHistogramSeries = x },
   outputView $ defaultFinalHistogramView {
     finalHistogramPlotTitle  = "Final Histogram (Sqrt)",
     finalHistogramBuild  = histogram binSqrt,
     finalHistogramSeries = x },
   outputView $ defaultFinalHistogramView {
     finalHistogramPlotTitle  = "Final Histogram (Scott)",
     finalHistogramBuild  = histogram binScott,
     finalHistogramSeries = x } ]