packages feed

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

module Experiment (experiment, generators) where

import Data.Monoid
import Control.Category

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

import Model

-- | The simulation specs.
specs = Specs { spcStartTime = 0.0,
                spcStopTime = 1000.0,
                -- spcStopTime = 300.0,
                spcDT = 0.1,
                spcMethod = RungeKutta4,
                spcGeneratorType = SimpleGenerator }
        
-- | The experiment.
experiment :: Experiment
experiment =
  defaultExperiment {
    experimentSpecs = specs,
    -- experimentRunCount = 1000,
    experimentRunCount = 100,
    experimentTitle = "The Furnace model (the Monte-Carlo simulation)" }

generators :: ChartRendering r => [WebPageGenerator r]
generators =
  [outputView defaultExperimentSpecsView,
   outputView $ defaultDeviationChartView {
     deviationChartTitle = "Deviation Chart - 1",
     deviationChartPlotTitle = "The input, loaded and output ingot counts",
     deviationChartRightYSeries =
       resultByName inputIngotCountName <>
       resultByName loadedIngotCountName <>
       resultByName outputIngotCountName },
   outputView $ defaultFinalHistogramView {
     finalHistogramTitle = "Final Histogram - 1",
     finalHistogramPlotTitle = "The distribution of input, loaded and output " ++
                               "ingot counts in the final time point.",
     finalHistogramSeries =
       resultByName inputIngotCountName <>
       resultByName loadedIngotCountName <>
       resultByName outputIngotCountName },
   outputView $ defaultFinalStatsView {
     finalStatsTitle = "Final Statistics - 1",
     finalStatsDescription = "The summary of input, loaded and output " ++
                             "ingot counts in the final time point.",
     finalStatsSeries =
       resultByName inputIngotCountName <>
       resultByName loadedIngotCountName <>
       resultByName outputIngotCountName },
   outputView $ defaultDeviationChartView {
     deviationChartTitle = "Deviation Chart - 2",
     deviationChartPlotTitle = "The used pit count",
     deviationChartRightYSeries =
       resultByName pitCountName },
   outputView $ defaultFinalHistogramView {
     finalHistogramTitle = "Final Histogram - 2",
     finalHistogramPlotTitle = "The used pit count in the final time point.",
     finalHistogramSeries =
       resultByName pitCountName },
   outputView $ defaultFinalStatsView {
     finalStatsTitle = "Final Statistics - 2",
     finalStatsDescription = "The summary of the used pit count in the final time point.",
     finalStatsSeries =
       resultByName pitCountName },
   outputView $ defaultDeviationChartView {
     deviationChartTitle = "Deviation Chart - 3",
     deviationChartPlotTitle = "The queue size",
     deviationChartRightYSeries =
       resultByName furnaceQueueName >>> resultById QueueCountId },
   outputView $ defaultFinalHistogramView {
     finalHistogramTitle = "Final Histogram - 3",
     finalHistogramPlotTitle = "The queue size in the final time point.",
     finalHistogramSeries =
       resultByName furnaceQueueName >>> resultById QueueCountId },
   outputView $ defaultFinalStatsView {
     finalStatsTitle = "Final Statistics - 3",
     finalStatsDescription = "The summary of the queue size in the final time point.",
     finalStatsSeries =
       resultByName furnaceQueueName >>> resultById QueueCountId },
   outputView $ defaultDeviationChartView {
     deviationChartTitle = "Deviation Chart - 4",
     deviationChartPlotTitle = "The mean wait time",
     deviationChartRightYSeries =
       resultByName furnaceQueueName >>> resultById QueueWaitTimeId },
   outputView $ defaultFinalStatsView {
     finalStatsTitle = "Final Statistics - 4",
     finalStatsDescription = "The summary of the mean wait time in " ++
                             "the final time point.",
     finalStatsSeries =
       resultByName furnaceQueueName >>> resultById QueueWaitTimeId },
   outputView $ defaultDeviationChartView {
     deviationChartTitle = "Deviation Chart - 5",
     deviationChartPlotTitle = "The queue rate",
     deviationChartRightYSeries =
       resultByName furnaceQueueName >>> resultById QueueRateId },
   outputView $ defaultFinalStatsView {
     finalStatsTitle = "Final Statistics - 5",
     finalStatsDescription = "The summary of the queue rate in " ++
                             "the final time point.",
     finalStatsSeries =
       resultByName furnaceQueueName >>> resultById QueueRateId },
   outputView $ defaultDeviationChartView {
     deviationChartTitle = "Deviation Chart - 6",
     deviationChartPlotTitle = "The mean heating time",
     deviationChartRightYSeries =
       resultByName heatingTimeName },
   outputView $ defaultFinalStatsView {
     finalStatsTitle = "Final Statistics - 6",
     finalStatsDescription = "The summary of the mean heating time in " ++
                             "the final time point.",
     finalStatsSeries =
       resultByName heatingTimeName },
   outputView $ defaultDeviationChartView {
     deviationChartTitle = "Deviation Chart - 7",
     deviationChartPlotTitle = "The output ingot temperature",
     deviationChartRightYSeries =
       resultByName outputIngotTempName },
   outputView $ defaultFinalHistogramView {
     finalHistogramTitle = "Final Histogram - 7",
     finalHistogramPlotTitle = "The output ingot temperature in " ++
                               "the final time point.",
     finalHistogramSeries =
       resultByName outputIngotTempName },
   outputView $ defaultFinalStatsView {
     finalStatsTitle = "Final Statistics - 7",
     finalStatsDescription = "The summary of the output ingot temperature in " ++
                             "the final time point.",
     finalStatsSeries =
       resultByName outputIngotTempName } ]