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 defaultInfoView, 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 } ]