packages feed

aivika-experiment-chart 4.3.2 → 5.0

raw patch · 63 files changed

+668/−166 lines, 63 filesdep ~aivikadep ~aivika-experimentPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: aivika, aivika-experiment

API changes (from Hackage documentation)

- Simulation.Aivika.Experiment.Chart.DeviationChartView: instance Simulation.Aivika.Experiment.Chart.Types.ChartRendering r => Simulation.Aivika.Experiment.Types.ExperimentView Simulation.Aivika.Experiment.Chart.DeviationChartView.DeviationChartView (Simulation.Aivika.Experiment.FileRenderer.FileRenderer r)
- Simulation.Aivika.Experiment.Chart.DeviationChartView: instance Simulation.Aivika.Experiment.Chart.Types.ChartRendering r => Simulation.Aivika.Experiment.Types.ExperimentView Simulation.Aivika.Experiment.Chart.DeviationChartView.DeviationChartView (Simulation.Aivika.Experiment.WebPageRenderer.WebPageRenderer r)
- Simulation.Aivika.Experiment.Chart.FinalHistogramView: instance Simulation.Aivika.Experiment.Chart.Types.ChartRendering r => Simulation.Aivika.Experiment.Types.ExperimentView Simulation.Aivika.Experiment.Chart.FinalHistogramView.FinalHistogramView (Simulation.Aivika.Experiment.FileRenderer.FileRenderer r)
- Simulation.Aivika.Experiment.Chart.FinalHistogramView: instance Simulation.Aivika.Experiment.Chart.Types.ChartRendering r => Simulation.Aivika.Experiment.Types.ExperimentView Simulation.Aivika.Experiment.Chart.FinalHistogramView.FinalHistogramView (Simulation.Aivika.Experiment.WebPageRenderer.WebPageRenderer r)
- Simulation.Aivika.Experiment.Chart.FinalXYChartView: instance Simulation.Aivika.Experiment.Chart.Types.ChartRendering r => Simulation.Aivika.Experiment.Types.ExperimentView Simulation.Aivika.Experiment.Chart.FinalXYChartView.FinalXYChartView (Simulation.Aivika.Experiment.FileRenderer.FileRenderer r)
- Simulation.Aivika.Experiment.Chart.FinalXYChartView: instance Simulation.Aivika.Experiment.Chart.Types.ChartRendering r => Simulation.Aivika.Experiment.Types.ExperimentView Simulation.Aivika.Experiment.Chart.FinalXYChartView.FinalXYChartView (Simulation.Aivika.Experiment.WebPageRenderer.WebPageRenderer r)
- Simulation.Aivika.Experiment.Chart.HistogramView: instance Simulation.Aivika.Experiment.Chart.Types.ChartRendering r => Simulation.Aivika.Experiment.Types.ExperimentView Simulation.Aivika.Experiment.Chart.HistogramView.HistogramView (Simulation.Aivika.Experiment.FileRenderer.FileRenderer r)
- Simulation.Aivika.Experiment.Chart.HistogramView: instance Simulation.Aivika.Experiment.Chart.Types.ChartRendering r => Simulation.Aivika.Experiment.Types.ExperimentView Simulation.Aivika.Experiment.Chart.HistogramView.HistogramView (Simulation.Aivika.Experiment.WebPageRenderer.WebPageRenderer r)
- Simulation.Aivika.Experiment.Chart.TimeSeriesView: instance Simulation.Aivika.Experiment.Chart.Types.ChartRendering r => Simulation.Aivika.Experiment.Types.ExperimentView Simulation.Aivika.Experiment.Chart.TimeSeriesView.TimeSeriesView (Simulation.Aivika.Experiment.FileRenderer.FileRenderer r)
- Simulation.Aivika.Experiment.Chart.TimeSeriesView: instance Simulation.Aivika.Experiment.Chart.Types.ChartRendering r => Simulation.Aivika.Experiment.Types.ExperimentView Simulation.Aivika.Experiment.Chart.TimeSeriesView.TimeSeriesView (Simulation.Aivika.Experiment.WebPageRenderer.WebPageRenderer r)
- Simulation.Aivika.Experiment.Chart.XYChartView: instance Simulation.Aivika.Experiment.Chart.Types.ChartRendering r => Simulation.Aivika.Experiment.Types.ExperimentView Simulation.Aivika.Experiment.Chart.XYChartView.XYChartView (Simulation.Aivika.Experiment.FileRenderer.FileRenderer r)
- Simulation.Aivika.Experiment.Chart.XYChartView: instance Simulation.Aivika.Experiment.Chart.Types.ChartRendering r => Simulation.Aivika.Experiment.Types.ExperimentView Simulation.Aivika.Experiment.Chart.XYChartView.XYChartView (Simulation.Aivika.Experiment.WebPageRenderer.WebPageRenderer r)
+ Simulation.Aivika.Experiment.Chart.DeviationChartView: instance Simulation.Aivika.Experiment.Chart.Types.ChartRendering r => Simulation.Aivika.Experiment.Types.ExperimentView Simulation.Aivika.Experiment.Chart.DeviationChartView.DeviationChartView (Simulation.Aivika.Experiment.Base.FileRenderer.FileRenderer r)
+ Simulation.Aivika.Experiment.Chart.DeviationChartView: instance Simulation.Aivika.Experiment.Chart.Types.ChartRendering r => Simulation.Aivika.Experiment.Types.ExperimentView Simulation.Aivika.Experiment.Chart.DeviationChartView.DeviationChartView (Simulation.Aivika.Experiment.Base.WebPageRenderer.WebPageRenderer r)
+ Simulation.Aivika.Experiment.Chart.FinalHistogramView: instance Simulation.Aivika.Experiment.Chart.Types.ChartRendering r => Simulation.Aivika.Experiment.Types.ExperimentView Simulation.Aivika.Experiment.Chart.FinalHistogramView.FinalHistogramView (Simulation.Aivika.Experiment.Base.FileRenderer.FileRenderer r)
+ Simulation.Aivika.Experiment.Chart.FinalHistogramView: instance Simulation.Aivika.Experiment.Chart.Types.ChartRendering r => Simulation.Aivika.Experiment.Types.ExperimentView Simulation.Aivika.Experiment.Chart.FinalHistogramView.FinalHistogramView (Simulation.Aivika.Experiment.Base.WebPageRenderer.WebPageRenderer r)
+ Simulation.Aivika.Experiment.Chart.FinalXYChartView: instance Simulation.Aivika.Experiment.Chart.Types.ChartRendering r => Simulation.Aivika.Experiment.Types.ExperimentView Simulation.Aivika.Experiment.Chart.FinalXYChartView.FinalXYChartView (Simulation.Aivika.Experiment.Base.FileRenderer.FileRenderer r)
+ Simulation.Aivika.Experiment.Chart.FinalXYChartView: instance Simulation.Aivika.Experiment.Chart.Types.ChartRendering r => Simulation.Aivika.Experiment.Types.ExperimentView Simulation.Aivika.Experiment.Chart.FinalXYChartView.FinalXYChartView (Simulation.Aivika.Experiment.Base.WebPageRenderer.WebPageRenderer r)
+ Simulation.Aivika.Experiment.Chart.HistogramView: instance Simulation.Aivika.Experiment.Chart.Types.ChartRendering r => Simulation.Aivika.Experiment.Types.ExperimentView Simulation.Aivika.Experiment.Chart.HistogramView.HistogramView (Simulation.Aivika.Experiment.Base.FileRenderer.FileRenderer r)
+ Simulation.Aivika.Experiment.Chart.HistogramView: instance Simulation.Aivika.Experiment.Chart.Types.ChartRendering r => Simulation.Aivika.Experiment.Types.ExperimentView Simulation.Aivika.Experiment.Chart.HistogramView.HistogramView (Simulation.Aivika.Experiment.Base.WebPageRenderer.WebPageRenderer r)
+ Simulation.Aivika.Experiment.Chart.TimeSeriesView: instance Simulation.Aivika.Experiment.Chart.Types.ChartRendering r => Simulation.Aivika.Experiment.Types.ExperimentView Simulation.Aivika.Experiment.Chart.TimeSeriesView.TimeSeriesView (Simulation.Aivika.Experiment.Base.FileRenderer.FileRenderer r)
+ Simulation.Aivika.Experiment.Chart.TimeSeriesView: instance Simulation.Aivika.Experiment.Chart.Types.ChartRendering r => Simulation.Aivika.Experiment.Types.ExperimentView Simulation.Aivika.Experiment.Chart.TimeSeriesView.TimeSeriesView (Simulation.Aivika.Experiment.Base.WebPageRenderer.WebPageRenderer r)
+ Simulation.Aivika.Experiment.Chart.XYChartView: instance Simulation.Aivika.Experiment.Chart.Types.ChartRendering r => Simulation.Aivika.Experiment.Types.ExperimentView Simulation.Aivika.Experiment.Chart.XYChartView.XYChartView (Simulation.Aivika.Experiment.Base.FileRenderer.FileRenderer r)
+ Simulation.Aivika.Experiment.Chart.XYChartView: instance Simulation.Aivika.Experiment.Chart.Types.ChartRendering r => Simulation.Aivika.Experiment.Types.ExperimentView Simulation.Aivika.Experiment.Chart.XYChartView.XYChartView (Simulation.Aivika.Experiment.Base.WebPageRenderer.WebPageRenderer r)

Files

CHANGELOG.md view
@@ -1,4 +1,9 @@ +Version 5.0+-----++* Adjusted to a new API of library aivika-experiment.+ Version 4.3.1 ----- 
LICENSE view
@@ -1,4 +1,4 @@-Copyright (c) 2012-2015 David Sorokin <david.sorokin@gmail.com>+Copyright (c) 2012-2017 David Sorokin <david.sorokin@gmail.com>  All rights reserved. 
Simulation/Aivika/Experiment/Chart.hs view
@@ -1,31 +1,33 @@  -- | -- Module     : Simulation.Aivika.Experiment.Chart--- Copyright  : Copyright (c) 2012-2015, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2012-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental--- Tested with: GHC 7.10.1+-- Tested with: GHC 8.0.1 -- -- This module re-exports the library functionality. --  module Simulation.Aivika.Experiment.Chart        (-- * Modules+        module Simulation.Aivika.Experiment.Base,         module Simulation.Aivika.Experiment.Chart.Types, -        module Simulation.Aivika.Experiment.Chart.TimeSeriesView,-        module Simulation.Aivika.Experiment.Chart.XYChartView,-        module Simulation.Aivika.Experiment.Chart.FinalXYChartView,+        module Simulation.Aivika.Experiment.Chart.Utils,         module Simulation.Aivika.Experiment.Chart.DeviationChartView,-        module Simulation.Aivika.Experiment.Chart.HistogramView,         module Simulation.Aivika.Experiment.Chart.FinalHistogramView,-        module Simulation.Aivika.Experiment.Chart.Utils) where+        module Simulation.Aivika.Experiment.Chart.FinalXYChartView,+        module Simulation.Aivika.Experiment.Chart.HistogramView,+        module Simulation.Aivika.Experiment.Chart.TimeSeriesView,+        module Simulation.Aivika.Experiment.Chart.XYChartView) where +import Simulation.Aivika.Experiment.Base import Simulation.Aivika.Experiment.Chart.Types-import Simulation.Aivika.Experiment.Chart.TimeSeriesView-import Simulation.Aivika.Experiment.Chart.XYChartView-import Simulation.Aivika.Experiment.Chart.FinalXYChartView+import Simulation.Aivika.Experiment.Chart.Utils import Simulation.Aivika.Experiment.Chart.DeviationChartView-import Simulation.Aivika.Experiment.Chart.HistogramView import Simulation.Aivika.Experiment.Chart.FinalHistogramView-import Simulation.Aivika.Experiment.Chart.Utils+import Simulation.Aivika.Experiment.Chart.FinalXYChartView+import Simulation.Aivika.Experiment.Chart.HistogramView+import Simulation.Aivika.Experiment.Chart.TimeSeriesView+import Simulation.Aivika.Experiment.Chart.XYChartView
Simulation/Aivika/Experiment/Chart/DeviationChartView.hs view
@@ -3,11 +3,11 @@  -- | -- Module     : Simulation.Aivika.Experiment.Chart.DeviationChartView--- Copyright  : Copyright (c) 2012-2015, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2012-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental--- Tested with: GHC 7.10.1+-- Tested with: GHC 8.0.1 -- -- The module defines 'DeviationChartView' that plots the deviation chart using rule of 3-sigma. --@@ -37,7 +37,8 @@  import Simulation.Aivika import Simulation.Aivika.Experiment-import Simulation.Aivika.Experiment.MRef+import Simulation.Aivika.Experiment.Base+import Simulation.Aivika.Experiment.Concurrent.MVar import Simulation.Aivika.Experiment.Chart.Types import Simulation.Aivika.Experiment.Chart.Utils (colourisePlotLines, colourisePlotFillBetween) @@ -123,7 +124,7 @@ instance ChartRendering r => ExperimentView DeviationChartView (WebPageRenderer r) where      outputView v = -    let reporter exp (WebPageRenderer renderer) dir =+    let reporter exp (WebPageRenderer renderer _) dir =           do st <- newDeviationChart v exp renderer dir              let context =                    WebPageContext $@@ -138,7 +139,7 @@ instance ChartRendering r => ExperimentView DeviationChartView (FileRenderer r) where      outputView v = -    let reporter exp (FileRenderer renderer) dir =+    let reporter exp (FileRenderer renderer _) dir =           do st <- newDeviationChart v exp renderer dir              return ExperimentReporter { reporterInitialise = return (),                                          reporterFinalise   = finaliseDeviationChart st,@@ -153,28 +154,25 @@                             deviationChartRenderer   :: r,                             deviationChartDir        :: FilePath,                              deviationChartFile       :: IORef (Maybe FilePath),-                            deviationChartLock       :: MVar (),-                            deviationChartResults    :: MRef (Maybe DeviationChartResults) }+                            deviationChartResults    :: MVar (Maybe DeviationChartResults) }  -- | The deviation chart item. data DeviationChartResults =   DeviationChartResults { deviationChartTimes :: IOArray Int Double,                           deviationChartNames :: [Either String String],-                          deviationChartStats :: [IOArray Int (SamplingStats Double)] }+                          deviationChartStats :: [MVar (IOArray Int (SamplingStats Double))] }    -- | Create a new state of the view. newDeviationChart :: DeviationChartView -> Experiment -> r -> FilePath -> ExperimentWriter (DeviationChartViewState r) newDeviationChart view exp renderer dir =   liftIO $    do f <- newIORef Nothing-     l <- newMVar () -     r <- newMRef Nothing+     r <- newMVar Nothing      return DeviationChartViewState { deviationChartView       = view,                                       deviationChartExperiment = exp,                                       deviationChartRenderer   = renderer,                                       deviationChartDir        = dir,                                        deviationChartFile       = f,-                                      deviationChartLock       = l,                                        deviationChartResults    = r }         -- | Create new chart results.@@ -184,7 +182,7 @@          bnds  = integIterationBnds specs      times <- liftIO $ newListArray bnds (integTimes specs)      stats <- forM names $ \_ -> -       liftIO $ newArray bnds emptySamplingStats+       liftIO $ newArray bnds emptySamplingStats >>= newMVar      return DeviationChartResults { deviationChartTimes = times,                                     deviationChartNames = names,                                     deviationChartStats = stats }@@ -192,14 +190,14 @@ -- | Require to return unique chart results associated with the specified state.  requireDeviationChartResults :: DeviationChartViewState r -> [Either String String] -> IO DeviationChartResults requireDeviationChartResults st names =-  maybeWriteMRef (deviationChartResults st)+  maybePutMVar (deviationChartResults st)   (newDeviationChartResults names (deviationChartExperiment st)) $ \results ->   if (names /= deviationChartNames results)   then error "Series with different names are returned for different runs: requireDeviationChartResults"   else return results         -- | Simulate the specified series.-simulateDeviationChart :: DeviationChartViewState r -> ExperimentData -> Event DisposableEvent+simulateDeviationChart :: DeviationChartViewState r -> ExperimentData -> Composite () simulateDeviationChart st expdata =   do let view    = deviationChartView st          rs1     = deviationChartLeftYSeries view $@@ -216,18 +214,24 @@          names   = map Left names1 ++ map Right names2          signals = experimentPredefinedSignals expdata          signal  = resultSignalInIntegTimes signals-         lock    = deviationChartLock st-     results <- liftIO $ requireDeviationChartResults st names-     let stats   = deviationChartStats results-     handleSignal signal $ \_ ->-       do xs <- forM exts resultValueData-          i  <- liftDynamics integIteration-          liftIO $-            forM_ (zip xs stats) $ \(x, stats) ->-            withMVar lock $ \() ->-            do y <- readArray stats i-               let y' = combineSamplingStatsEither x y-               y' `seq` writeArray stats i y'+     hs <- forM exts $ \ext ->+           newSignalHistory $+           flip mapSignalM signal $ \t ->+           resultValueData ext+     disposableComposite $+       DisposableEvent $+       do results <- liftIO $ requireDeviationChartResults st names+          let stats = deviationChartStats results+          forM_ (zip hs stats) $ \(h, stats') ->+            do (ts, xs) <- readSignalHistory h+               let (lo, hi) = bounds ts+               liftIO $+                 withMVar stats' $ \stats'' ->+                 forM_ [lo..hi] $ \i ->+                 do let x = xs ! i+                    y <- readArray stats'' i+                    let y' = combineSamplingStatsEither x y+                    y' `seq` writeArray stats'' i y'       -- | Plot the deviation chart after the simulation is complete. finaliseDeviationChart :: ChartRendering r => DeviationChartViewState r -> ExperimentWriter ()@@ -249,7 +253,7 @@              mapFilePath (flip replaceExtension $ renderableChartExtension renderer) $              expandFilePath (deviationChartFileName view) $              M.fromList [("$TITLE", title)]-     results <- liftIO $ readMRef $ deviationChartResults st+     results <- liftIO $ readMVar $ deviationChartResults st      case results of        Nothing -> return ()        Just results ->@@ -257,8 +261,9 @@          do let times = deviationChartTimes results                 names = deviationChartNames results                 stats = deviationChartStats results-            ps1 <- forM (zip3 names stats plotLines) $ \(name, stats, plotLines) ->-              do xs <- getAssocs stats+            ps1 <- forM (zip3 names stats plotLines) $ \(name, stats', plotLines) ->+              do stats'' <- readMVar stats'+                 xs <- getAssocs stats''                  zs <- forM xs $ \(i, stats) ->                    do t <- readArray times i                       return (t, samplingStatsMean stats)@@ -270,8 +275,9 @@                  case name of                    Left _  -> return $ Left p                    Right _ -> return $ Right p-            ps2 <- forM (zip3 names stats plotFillBetween) $ \(name, stats, plotFillBetween) ->-              do xs <- getAssocs stats+            ps2 <- forM (zip3 names stats plotFillBetween) $ \(name, stats', plotFillBetween) ->+              do stats'' <- readMVar stats'+                 xs <- getAssocs stats''                  zs <- forM xs $ \(i, stats) ->                    do t <- readArray times i                       let mu    = samplingStatsMean stats
Simulation/Aivika/Experiment/Chart/FinalHistogramView.hs view
@@ -3,11 +3,11 @@  -- | -- Module     : Simulation.Aivika.Experiment.Chart.FinalHistogramView--- Copyright  : Copyright (c) 2012-2015, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2012-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental--- Tested with: GHC 7.10.1+-- Tested with: GHC 8.0.1 -- -- The module defines 'FinalHistogramView' that plots a histogram -- by the specified series in final time points collected from different @@ -39,7 +39,8 @@  import Simulation.Aivika import Simulation.Aivika.Experiment-import Simulation.Aivika.Experiment.MRef+import Simulation.Aivika.Experiment.Base+import Simulation.Aivika.Experiment.Concurrent.MVar import Simulation.Aivika.Experiment.Chart.Types import Simulation.Aivika.Experiment.Chart.Utils (colourisePlotBars) @@ -115,7 +116,7 @@ instance ChartRendering r => ExperimentView FinalHistogramView (WebPageRenderer r) where      outputView v = -    let reporter exp (WebPageRenderer renderer) dir =+    let reporter exp (WebPageRenderer renderer _) dir =           do st <- newFinalHistogram v exp renderer dir              let context =                    WebPageContext $@@ -130,7 +131,7 @@ instance ChartRendering r => ExperimentView FinalHistogramView (FileRenderer r) where      outputView v = -    let reporter exp (FileRenderer renderer) dir =+    let reporter exp (FileRenderer renderer _) dir =           do st <- newFinalHistogram v exp renderer dir              return ExperimentReporter { reporterInitialise = return (),                                          reporterFinalise   = finaliseFinalHistogram st,@@ -145,19 +146,19 @@                             finalHistogramRenderer   :: r,                             finalHistogramDir        :: FilePath,                              finalHistogramFile       :: IORef (Maybe FilePath),-                            finalHistogramResults    :: MRef (Maybe FinalHistogramResults) }+                            finalHistogramResults    :: MVar (Maybe FinalHistogramResults) }  -- | The histogram item. data FinalHistogramResults =   FinalHistogramResults { finalHistogramNames  :: [String],-                          finalHistogramValues :: [MRef [Double]] }+                          finalHistogramValues :: [MVar [Double]] }    -- | Create a new state of the view. newFinalHistogram :: FinalHistogramView -> Experiment -> r -> FilePath -> ExperimentWriter (FinalHistogramViewState r) newFinalHistogram view exp renderer dir =   liftIO $   do f <- newIORef Nothing-     r <- newMRef Nothing+     r <- newMVar Nothing      return FinalHistogramViewState { finalHistogramView       = view,                                       finalHistogramExperiment = exp,                                       finalHistogramRenderer   = renderer,@@ -168,21 +169,21 @@ -- | Create new histogram results. newFinalHistogramResults :: [String] -> Experiment -> IO FinalHistogramResults newFinalHistogramResults names exp =-  do values <- forM names $ \_ -> liftIO $ newMRef []+  do values <- forM names $ \_ -> liftIO $ newMVar []      return FinalHistogramResults { finalHistogramNames  = names,                                     finalHistogramValues = values }         -- | Require to return unique results associated with the specified state.  requireFinalHistogramResults :: FinalHistogramViewState r -> [String] -> IO FinalHistogramResults requireFinalHistogramResults st names =-  maybeWriteMRef (finalHistogramResults st)+  maybePutMVar (finalHistogramResults st)   (newFinalHistogramResults names (finalHistogramExperiment st)) $ \results ->   if (names /= finalHistogramNames results)   then error "Series with different names are returned for different runs: requireFinalHistogramResults"   else return results  -- | Simulation of the specified series.-simulateFinalHistogram :: FinalHistogramViewState r -> ExperimentData -> Event DisposableEvent+simulateFinalHistogram :: FinalHistogramViewState r -> ExperimentData -> Composite () simulateFinalHistogram st expdata =   do let view    = finalHistogramView st          rs      = finalHistogramSeries view $@@ -196,11 +197,11 @@          predicate = finalHistogramPredicate view      results <- liftIO $ requireFinalHistogramResults st names      let values = finalHistogramValues results-     handleSignal signal $ \_ ->+     handleSignalComposite signal $ \_ ->        do xs <- forM exts resultValueData           liftIO $             forM_ (zip xs values) $ \(x, values) ->-            modifyMRef_ values $ return . (++) x+            modifyMVar_ values $ return . (++) x       -- | Plot the histogram after the simulation is complete. finaliseFinalHistogram :: ChartRendering r => FinalHistogramViewState r -> ExperimentWriter ()@@ -221,14 +222,14 @@              mapFilePath (flip replaceExtension $ renderableChartExtension renderer) $              expandFilePath (finalHistogramFileName view) $              M.fromList [("$TITLE", title)]-     results <- liftIO $ readMRef $ finalHistogramResults st+     results <- liftIO $ readMVar $ finalHistogramResults st      case results of        Nothing -> return ()        Just results ->          liftIO $          do let names  = finalHistogramNames results                 values = finalHistogramValues results-            xs <- forM values readMRef+            xs <- forM values readMVar             let zs = histogramToBars . filterHistogram . histogram $                       map filterData xs                 p  = plotBars $
Simulation/Aivika/Experiment/Chart/FinalXYChartView.hs view
@@ -3,11 +3,11 @@  -- | -- Module     : Simulation.Aivika.Experiment.Chart.FinalXYChartView--- Copyright  : Copyright (c) 2012-2015, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2012-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental--- Tested with: GHC 7.10.1+-- Tested with: GHC 8.0.1 -- -- The module defines 'FinalXYChartView' that plots a single XY chart -- in final time points for different simulation runs sequentially@@ -39,7 +39,8 @@  import Simulation.Aivika import Simulation.Aivika.Experiment-import Simulation.Aivika.Experiment.MRef+import Simulation.Aivika.Experiment.Base+import Simulation.Aivika.Experiment.Concurrent.MVar import Simulation.Aivika.Experiment.Chart.Types import Simulation.Aivika.Experiment.Chart.Utils (colourisePlotLines) @@ -132,7 +133,7 @@ instance ChartRendering r => ExperimentView FinalXYChartView (WebPageRenderer r) where      outputView v = -    let reporter exp (WebPageRenderer renderer) dir =+    let reporter exp (WebPageRenderer renderer _) dir =           do st <- newFinalXYChart v exp renderer dir              let context =                    WebPageContext $@@ -147,7 +148,7 @@ instance ChartRendering r => ExperimentView FinalXYChartView (FileRenderer r) where      outputView v = -    let reporter exp (FileRenderer renderer) dir =+    let reporter exp (FileRenderer renderer _) dir =           do st <- newFinalXYChart v exp renderer dir              return ExperimentReporter { reporterInitialise = return (),                                          reporterFinalise   = finaliseFinalXYChart st,@@ -163,7 +164,7 @@                           finalXYChartDir        :: FilePath,                            finalXYChartFile       :: IORef (Maybe FilePath),                           finalXYChartLock       :: MVar (),-                          finalXYChartResults    :: MRef (Maybe FinalXYChartResults) }+                          finalXYChartResults    :: MVar (Maybe FinalXYChartResults) }  -- | The XY chart results. data FinalXYChartResults =@@ -177,7 +178,7 @@   liftIO $   do f <- newIORef Nothing      l <- newMVar () -     r <- newMRef Nothing+     r <- newMVar Nothing      return FinalXYChartViewState { finalXYChartView       = view,                                     finalXYChartExperiment = exp,                                     finalXYChartRenderer   = renderer,@@ -199,14 +200,14 @@ -- | Require to return unique results associated with the specified state.  requireFinalXYChartResults :: FinalXYChartViewState r -> String -> [Either String String] -> IO FinalXYChartResults requireFinalXYChartResults st xname ynames =-  maybeWriteMRef (finalXYChartResults st)+  maybePutMVar (finalXYChartResults st)   (newFinalXYChartResults xname ynames (finalXYChartExperiment st)) $ \results ->   if (xname /= finalXYChartXName results) || (ynames /= finalXYChartYNames results)   then error "Series with different names are returned for different runs: requireFinalXYChartResults"   else return results         -- | Simulation.-simulateFinalXYChart :: FinalXYChartViewState r -> ExperimentData -> Event DisposableEvent+simulateFinalXYChart :: FinalXYChartViewState r -> ExperimentData -> Composite () simulateFinalXYChart st expdata =   do let view    = finalXYChartView st          rs0     = finalXYChartXSeries view $@@ -237,7 +238,7 @@          lock = finalXYChartLock st      results <- liftIO $ requireFinalXYChartResults st name0 names      let xys = finalXYChartXY results-     handleSignal signal $ \_ ->+     handleSignalComposite signal $ \_ ->        do x  <- resultValueData ext0           ys <- forM exts resultValueData           i  <- liftParameter simulationIndex@@ -265,7 +266,7 @@              mapFilePath (flip replaceExtension $ renderableChartExtension renderer) $              expandFilePath (finalXYChartFileName view) $              M.fromList [("$TITLE", title)]-     results <- liftIO $ readMRef $ finalXYChartResults st+     results <- liftIO $ readMVar $ finalXYChartResults st      case results of        Nothing -> return ()        Just results ->
Simulation/Aivika/Experiment/Chart/HistogramView.hs view
@@ -3,11 +3,11 @@  -- | -- Module     : Simulation.Aivika.Experiment.Chart.HistogramView--- Copyright  : Copyright (c) 2012-2015, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2012-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental--- Tested with: GHC 7.10.1+-- Tested with: GHC 8.0.1 -- -- The module defines 'HistogramView' that plots the histogram -- collecting statistics in all integration time points and does@@ -37,6 +37,7 @@  import Simulation.Aivika import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Base import Simulation.Aivika.Experiment.Chart.Types import Simulation.Aivika.Experiment.Chart.Utils (colourisePlotBars) import Simulation.Aivika.Experiment.Histogram@@ -125,7 +126,7 @@ instance ChartRendering r => ExperimentView HistogramView (WebPageRenderer r) where      outputView v = -    let reporter exp (WebPageRenderer renderer) dir =+    let reporter exp (WebPageRenderer renderer _) dir =           do st <- newHistogram v exp renderer dir              let context =                    WebPageContext $@@ -140,7 +141,7 @@ instance ChartRendering r => ExperimentView HistogramView (FileRenderer r) where      outputView v = -    let reporter exp (FileRenderer renderer) dir =+    let reporter exp (FileRenderer renderer _) dir =           do st <- newHistogram v exp renderer dir              return ExperimentReporter { reporterInitialise = return (),                                          reporterFinalise   = return (),@@ -176,7 +177,7 @@                                  histogramMap        = m }         -- | Plot the histogram during the simulation.-simulateHistogram :: ChartRendering r => HistogramViewState r -> ExperimentData -> Event DisposableEvent+simulateHistogram :: ChartRendering r => HistogramViewState r -> ExperimentData -> Composite () simulateHistogram st expdata =   do let view    = histogramView st          rs      = histogramSeries view $@@ -213,7 +214,7 @@        mapSignalM (const $ resultValueData ext) $        filterSignalM (const predicate) $        resultSignalInIntegTimes signals-     return $+     disposableComposite $        DisposableEvent $        do xs <- forM hs readSignalHistory           let zs = histogramToBars . filterHistogram . build $ 
Simulation/Aivika/Experiment/Chart/TimeSeriesView.hs view
@@ -3,11 +3,11 @@  -- | -- Module     : Simulation.Aivika.Experiment.Chart.TimeSeriesView--- Copyright  : Copyright (c) 2012-2015, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2012-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental--- Tested with: GHC 7.10.1+-- Tested with: GHC 8.0.1 -- -- The module defines 'TimeSeriesView' that plots the time series charts. --@@ -36,6 +36,7 @@  import Simulation.Aivika import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Base import Simulation.Aivika.Experiment.Chart.Types import Simulation.Aivika.Experiment.Chart.Utils (colourisePlotLines) @@ -130,7 +131,7 @@ instance ChartRendering r => ExperimentView TimeSeriesView (WebPageRenderer r) where      outputView v = -    let reporter exp (WebPageRenderer renderer) dir =+    let reporter exp (WebPageRenderer renderer _) dir =           do st <- newTimeSeries v exp renderer dir              let context =                    WebPageContext $@@ -145,7 +146,7 @@ instance ChartRendering r => ExperimentView TimeSeriesView (FileRenderer r) where      outputView v = -    let reporter exp (FileRenderer renderer) dir =+    let reporter exp (FileRenderer renderer _) dir =           do st <- newTimeSeries v exp renderer dir              return ExperimentReporter { reporterInitialise = return (),                                          reporterFinalise   = return (),@@ -181,7 +182,7 @@                                   timeSeriesMap        = m }         -- | Plot the time series chart within simulation.-simulateTimeSeries :: ChartRendering r => TimeSeriesViewState r -> ExperimentData -> Event DisposableEvent+simulateTimeSeries :: ChartRendering r => TimeSeriesViewState r -> ExperimentData -> Composite () simulateTimeSeries st expdata =   do let view    = timeSeriesView st          rs1     = timeSeriesLeftYSeries view $@@ -229,7 +230,7 @@               resultValueSignal ext      hs1 <- inputHistory exts1      hs2 <- inputHistory exts2-     return $+     disposableComposite $        DisposableEvent $        do let plots hs exts plotLineTails =                 do ps <-
Simulation/Aivika/Experiment/Chart/Types.hs view
@@ -1,11 +1,11 @@  -- | -- Module     : Simulation.Aivika.Experiment.Chart.Types--- Copyright  : Copyright (c) 2012-2015, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2012-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental--- Tested with: GHC 7.10.1+-- Tested with: GHC 8.0.1 -- -- The module defines a type class for rendering charts. --
Simulation/Aivika/Experiment/Chart/Utils.hs view
@@ -1,11 +1,11 @@  -- | -- Module     : Simulation.Aivika.Experiment.Chart.Utils--- Copyright  : Copyright (c) 2012-2015, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2012-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental--- Tested with: GHC 7.10.1+-- Tested with: GHC 8.0.1 -- -- The module defines some utilities used in the charting. --
Simulation/Aivika/Experiment/Chart/XYChartView.hs view
@@ -3,11 +3,11 @@  -- | -- Module     : Simulation.Aivika.Experiment.Chart.XYChartView--- Copyright  : Copyright (c) 2012-2015, David Sorokin <david.sorokin@gmail.com>+-- Copyright  : Copyright (c) 2012-2017, David Sorokin <david.sorokin@gmail.com> -- License    : BSD3 -- Maintainer : David Sorokin <david.sorokin@gmail.com> -- Stability  : experimental--- Tested with: GHC 7.10.1+-- Tested with: GHC 8.0.1 -- -- The module defines 'XYChartView' that plots the XY charts. --@@ -36,6 +36,7 @@  import Simulation.Aivika import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Base import Simulation.Aivika.Experiment.Chart.Types import Simulation.Aivika.Experiment.Chart.Utils (colourisePlotLines) @@ -139,7 +140,7 @@ instance ChartRendering r => ExperimentView XYChartView (WebPageRenderer r) where      outputView v = -    let reporter exp (WebPageRenderer renderer) dir =+    let reporter exp (WebPageRenderer renderer _) dir =           do st <- newXYChart v exp renderer dir              let context =                    WebPageContext $@@ -154,7 +155,7 @@ instance ChartRendering r => ExperimentView XYChartView (FileRenderer r) where      outputView v = -    let reporter exp (FileRenderer renderer) dir =+    let reporter exp (FileRenderer renderer _) dir =           do st <- newXYChart v exp renderer dir              return ExperimentReporter { reporterInitialise = return (),                                          reporterFinalise   = return (),@@ -190,7 +191,7 @@                                xyChartMap        = m }         -- | Plot the XY chart during the simulation.-simulateXYChart :: ChartRendering r => XYChartViewState r -> ExperimentData -> Event DisposableEvent+simulateXYChart :: ChartRendering r => XYChartViewState r -> ExperimentData -> Composite () simulateXYChart st expdata =   do let view    = xyChartView st          rs0     = xyChartXSeries view $@@ -249,7 +250,7 @@               signalx <> signaly      hs1 <- inputHistory exts1      hs2 <- inputHistory exts2-     return $+     disposableComposite $        DisposableEvent $        do let plots hs exts plotLineTails =                 do ps <-
aivika-experiment-chart.cabal view
@@ -1,5 +1,5 @@ name:            aivika-experiment-chart-version:         4.3.2+version:         5.0 synopsis:        Simulation experiments with charting for the Aivika library description:     This package complements the aivika [1] and aivika-experiment [2] packages with@@ -23,10 +23,10 @@ category:        Simulation license:         BSD3 license-file:    LICENSE-copyright:       (c) 2012-2015. David Sorokin <david.sorokin@gmail.com>+copyright:       (c) 2012-2017. David Sorokin <david.sorokin@gmail.com> author:          David Sorokin maintainer:      David Sorokin <david.sorokin@gmail.com>-homepage:        http://github.com/dsorokin/aivika-experiment-chart+homepage:        http://www.aivikasoft.com cabal-version:   >= 1.6 build-type:      Simple tested-with:     GHC == 7.10.1@@ -61,6 +61,16 @@                      examples/Furnace/MainUsingCairo.hs                      examples/Furnace/MainUsingDiagrams.hs                      examples/Furnace/README+                     examples/GPSSExample7-26/Model.hs+                     examples/GPSSExample7-26/Experiment.hs+                     examples/GPSSExample7-26/MainUsingCairo.hs+                     examples/GPSSExample7-26/MainUsingDiagrams.hs+                     examples/GPSSExample7-26/README+                     examples/GPSSExample7-31/Model.hs+                     examples/GPSSExample7-31/Experiment.hs+                     examples/GPSSExample7-31/MainUsingCairo.hs+                     examples/GPSSExample7-31/MainUsingDiagrams.hs+                     examples/GPSSExample7-31/README                      examples/InspectionAdjustmentStations/Model.hs                      examples/InspectionAdjustmentStations/Experiment.hs                      examples/InspectionAdjustmentStations/MainUsingCairo.hs@@ -117,13 +127,13 @@      exposed-modules: Simulation.Aivika.Experiment.Chart                      Simulation.Aivika.Experiment.Chart.Types-                     Simulation.Aivika.Experiment.Chart.TimeSeriesView-                     Simulation.Aivika.Experiment.Chart.XYChartView-                     Simulation.Aivika.Experiment.Chart.FinalXYChartView+                     Simulation.Aivika.Experiment.Chart.Utils                      Simulation.Aivika.Experiment.Chart.DeviationChartView-                     Simulation.Aivika.Experiment.Chart.HistogramView                      Simulation.Aivika.Experiment.Chart.FinalHistogramView-                     Simulation.Aivika.Experiment.Chart.Utils+                     Simulation.Aivika.Experiment.Chart.FinalXYChartView+                     Simulation.Aivika.Experiment.Chart.HistogramView+                     Simulation.Aivika.Experiment.Chart.TimeSeriesView+                     Simulation.Aivika.Experiment.Chart.XYChartView      build-depends:   base >= 3 && < 6,                      mtl >= 1.1.0.2,@@ -135,8 +145,8 @@                      lens >= 3.9,                      data-default-class >= 0.0.1,                      colour >= 2.3.3,-                     aivika >= 4.3,-                     aivika-experiment >= 4.0.3+                     aivika >= 5.1,+                     aivika-experiment >= 5.0      extensions:      MultiParamTypeClasses 
examples/BassDiffusion/MainUsingCairo.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-cairo must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Cairo  import Graphics.Rendering.Chart.Backend.Cairo@@ -9,4 +10,4 @@ import Model import Experiment -main = runExperiment experiment generators (WebPageRenderer $ CairoRenderer PNG) model+main = runExperiment experiment generators (WebPageRenderer (CairoRenderer PNG) experimentFilePath) model
examples/BassDiffusion/MainUsingDiagrams.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-diagrams must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Diagrams  import Graphics.Rendering.Chart.Backend.Diagrams@@ -9,4 +10,7 @@ import Model import Experiment -main = runExperiment experiment generators (WebPageRenderer $ DiagramsRenderer SVG loadCommonFonts) model+main = +  do fonts <- loadCommonFonts+     let renderer = DiagramsRenderer SVG (return fonts)+     runExperiment experiment generators (WebPageRenderer renderer experimentFilePath) model
examples/BouncingBall/MainUsingCairo.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-cairo must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Cairo  import Graphics.Rendering.Chart.Backend.Cairo@@ -9,4 +10,4 @@ import Model import Experiment -main = runExperiment experiment generators (WebPageRenderer $ CairoRenderer PNG) model+main = runExperiment experiment generators (WebPageRenderer (CairoRenderer PNG) experimentFilePath) model
examples/BouncingBall/MainUsingDiagrams.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-diagrams must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Diagrams  import Graphics.Rendering.Chart.Backend.Diagrams@@ -9,4 +10,7 @@ import Model import Experiment -main = runExperiment experiment generators (WebPageRenderer $ DiagramsRenderer SVG loadCommonFonts) model+main = +  do fonts <- loadCommonFonts+     let renderer = DiagramsRenderer SVG (return fonts)+     runExperiment experiment generators (WebPageRenderer renderer experimentFilePath) model
examples/ChemicalReaction/MainUsingCairo.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-cairo must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Cairo  import Graphics.Rendering.Chart.Backend.Cairo@@ -9,4 +10,4 @@ import Model import Experiment -main = runExperiment experiment generators (WebPageRenderer $ CairoRenderer PNG) model+main = runExperiment experiment generators (WebPageRenderer (CairoRenderer PNG) experimentFilePath) model
examples/ChemicalReaction/MainUsingDiagrams.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-diagrams must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Diagrams  import Graphics.Rendering.Chart.Backend.Diagrams@@ -9,4 +10,7 @@ import Model import Experiment -main = runExperiment experiment generators (WebPageRenderer $ DiagramsRenderer SVG loadCommonFonts) model+main = +  do fonts <- loadCommonFonts+     let renderer = DiagramsRenderer SVG (return fonts)+     runExperiment experiment generators (WebPageRenderer renderer experimentFilePath) model
examples/DifferenceEquations/MainUsingCairo.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-cairo must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Cairo  import Graphics.Rendering.Chart.Backend.Cairo@@ -9,4 +10,4 @@ import Model import Experiment -main = runExperiment experiment generators (WebPageRenderer $ CairoRenderer PNG) model+main = runExperiment experiment generators (WebPageRenderer (CairoRenderer PNG) experimentFilePath) model
examples/DifferenceEquations/MainUsingDiagrams.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-diagrams must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Diagrams  import Graphics.Rendering.Chart.Backend.Diagrams@@ -9,4 +10,7 @@ import Model import Experiment -main = runExperiment experiment generators (WebPageRenderer $ DiagramsRenderer SVG loadCommonFonts) model+main = +  do fonts <- loadCommonFonts+     let renderer = DiagramsRenderer SVG (return fonts)+     runExperiment experiment generators (WebPageRenderer renderer experimentFilePath) model
examples/Financial/MainUsingCairo.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-cairo must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Cairo  import Graphics.Rendering.Chart.Backend.Cairo@@ -15,11 +16,11 @@   putStrLn "*** The simulation with default parameters..."   runExperiment     singleExperiment singleGenerators-    (WebPageRenderer $ CairoRenderer PNG) (model defaultParams)+    (WebPageRenderer (CairoRenderer PNG) experimentFilePath) (model defaultParams)   putStrLn ""    -- run the Monte-Carlo simulation   putStrLn "*** The Monte-Carlo simulation..."   randomParams >>= runExperimentParallel     monteCarloExperiment monteCarloGenerators-    (WebPageRenderer $ CairoRenderer PNG) . model+    (WebPageRenderer (CairoRenderer PNG) experimentFilePath) . model
examples/Financial/MainUsingDiagrams.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-diagrams must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Diagrams  import Graphics.Rendering.Chart.Backend.Diagrams@@ -11,16 +12,18 @@ import Experiment  main = do+  fonts <- loadCommonFonts+  let renderer = DiagramsRenderer SVG (return fonts)      -- run the ordinary simulation   putStrLn "*** The simulation with default parameters..."   runExperiment     singleExperiment singleGenerators-    (WebPageRenderer $ DiagramsRenderer SVG loadCommonFonts) (model defaultParams)+    (WebPageRenderer renderer experimentFilePath) (model defaultParams)   putStrLn ""    -- run the Monte-Carlo simulation   putStrLn "*** The Monte-Carlo simulation..."   randomParams >>= runExperimentParallel     monteCarloExperiment monteCarloGenerators-    (WebPageRenderer $ DiagramsRenderer SVG loadCommonFonts) . model+    (WebPageRenderer renderer experimentFilePath) . model
examples/Furnace/Experiment.hs view
@@ -37,10 +37,10 @@ outputIngotTemp  = resultByName outputIngotTempName  furnaceQueue     = T.Queue $ resultByName furnaceQueueName-furnaceQueueCount      = T.tr $ T.queueCount furnaceQueue+furnaceQueueCount      = T.queueCount furnaceQueue furnaceQueueCountStats = T.tr $ T.queueCountStats furnaceQueue furnaceQueueWaitTime   = T.tr $ T.queueWaitTime furnaceQueue-furnaceQueueRate       = T.tr $ T.queueRate furnaceQueue+furnaceQueueRate       = T.queueRate furnaceQueue  generators :: ChartRendering r => [WebPageGenerator r] generators =
examples/Furnace/MainUsingCairo.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-cairo must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Cairo  import Graphics.Rendering.Chart.Backend.Cairo@@ -9,4 +10,4 @@ import Model import Experiment -main = runExperiment experiment generators (WebPageRenderer $ CairoRenderer PNG) model+main = runExperiment experiment generators (WebPageRenderer (CairoRenderer PNG) experimentFilePath) model
examples/Furnace/MainUsingDiagrams.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-diagrams must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Diagrams  import Graphics.Rendering.Chart.Backend.Diagrams@@ -9,4 +10,7 @@ import Model import Experiment -main = runExperiment experiment generators (WebPageRenderer $ DiagramsRenderer SVG loadCommonFonts) model+main = +  do fonts <- loadCommonFonts+     let renderer = DiagramsRenderer SVG (return fonts)+     runExperiment experiment generators (WebPageRenderer renderer experimentFilePath) model
+ examples/GPSSExample7-26/Experiment.hs view
@@ -0,0 +1,89 @@++{-# LANGUAGE FlexibleContexts #-}++module Experiment (experiment, generators) where++import Data.Monoid++import Control.Arrow++import Simulation.Aivika+import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart++import qualified Simulation.Aivika.Results.Transform as T+import qualified Simulation.Aivika.GPSS.Results.Transform as GpssT++-- | The simulation specs.+specs = Specs { spcStartTime = 0.0,+                spcStopTime = 500000.0,+                spcDT = 1000.0,+                spcMethod = RungeKutta4,+                spcGeneratorType = SimpleGenerator }++-- | The experiment.+experiment :: Experiment+experiment =+  defaultExperiment {+    experimentSpecs = specs,+    experimentRunCount = 500,+    -- experimentRunCount = 10,+    experimentTitle = "The GPSS module 7.31" }++line = GpssT.Queue $ resultByName "line"+lineContent = GpssT.queueContent line+lineContentStats = T.tr $ GpssT.queueContentStats line+lineWaitTime = T.tr $ GpssT.queueWaitTime line+lineNonZeroEntryWaitTime = T.tr $ GpssT.queueNonZeroEntryWaitTime line++prof = GpssT.Facility $ resultByName "prof"+profUtilCount = GpssT.facilityUtilisationCount prof+profUtilCountStats = T.tr $ GpssT.facilityUtilisationCountStats prof+profHoldingTime = T.tr $ GpssT.facilityHoldingTime prof++statsView title series =+  defaultFinalStatsView {+    finalStatsTitle = title,+    finalStatsSeries = series+  }++chartView title series =+  defaultDeviationChartView {+    deviationChartTitle = title,+    deviationChartRightYSeries = series+  }+  +histogramView title series = +  defaultFinalHistogramView {+    finalHistogramTitle = title,+    finalHistogramSeries = series+  }++generators :: ChartRendering r => [WebPageGenerator r]+generators =+  [outputView defaultExperimentSpecsView,+   outputView defaultInfoView,+   outputView $ statsView "PROF Utilisation" $+     profUtilCount <>+     profUtilCountStats,+   outputView $ chartView "PROF Utilisation" $+     profUtilCount <> +     profUtilCountStats,+   outputView $ statsView "PROF Holding Time"+     profHoldingTime,+   outputView $ chartView "PROF Holding Time"+     profHoldingTime,+   outputView $ statsView "LINE Content" $+     lineContent <>+     lineContentStats,+   outputView $ chartView "LINE Content" $+     lineContent <>+     lineContentStats,+   outputView $ histogramView "LINE Content"+     lineContent,+   outputView $ statsView "LINE Wait Time" $+     lineWaitTime <>+     lineNonZeroEntryWaitTime,+   outputView $ chartView "LINE Wait Time" $+     lineWaitTime <>+     lineNonZeroEntryWaitTime]
+ examples/GPSSExample7-26/MainUsingCairo.hs view
@@ -0,0 +1,13 @@++-- To run, package aivika-experiment-cairo must be installed.++import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart+import Simulation.Aivika.Experiment.Chart.Backend.Cairo++import Graphics.Rendering.Chart.Backend.Cairo++import Model+import Experiment++main = runExperiment experiment generators (WebPageRenderer (CairoRenderer PNG) experimentFilePath) model
+ examples/GPSSExample7-26/MainUsingDiagrams.hs view
@@ -0,0 +1,16 @@++-- To run, package aivika-experiment-diagrams must be installed.++import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart+import Simulation.Aivika.Experiment.Chart.Backend.Diagrams++import Graphics.Rendering.Chart.Backend.Diagrams++import Model+import Experiment++main = +  do fonts <- loadCommonFonts+     let renderer = DiagramsRenderer SVG (return fonts)+     runExperiment experiment generators (WebPageRenderer renderer experimentFilePath) model
+ examples/GPSSExample7-26/Model.hs view
@@ -0,0 +1,95 @@++{-+        GENERATE 2000,500,,,1+        GATE NI PROF,Busy+        PREEMPT PROF,PR,Add,5+        ADVANCE (Exponential(1,0,200))+        RETURN PROF+Busy    TERMINATE++        GENERATE 2000,500+        QUEUE LINE+        SEIZE PROF+        DEPART LINE+        ADVANCE (Exponential(1,0,1000))+LetGo   RELEASE PROF+        TERMINATE++Add     ASSIGN 5+,300+        ADVANCE P5+        TRANSFER ,LetGo++        GENERATE 10000000+        TERMINATE 1++        START 1+ -}+ +module Model (model) where++import Prelude hiding (id)++import Control.Category+import Control.Monad.Trans++import Data.Maybe++import Simulation.Aivika+import Simulation.Aivika.GPSS+import qualified Simulation.Aivika.GPSS.Queue as Q++model :: Simulation Results+model =+  do line <- runEventInStartTime Q.newQueue+     prof <- runEventInStartTime newFacility++     let phoneCallStream = randomUniformStream (2000 - 500) (2000 + 500)+         studentStream   = randomUniformStream (2000 - 500) (2000 + 500)++     let phoneCalls     = streamGeneratorBlock phoneCallStream 1+         phoneCallChain =+           Block (\a ->+                   do f <- liftEvent (facilityInterrupted prof)+                      if f+                        then blockProcess (transferBlock busy) a+                        else return a) >>>+           preemptBlock prof+           (PreemptBlockMode { preemptBlockPriorityMode = True,+                               preemptBlockTransfer     = Just add,+                               -- preemptBlockTransfer     = Nothing,+                               preemptBlockRemoveMode   = False }) >>>+           advanceBlock (randomExponentialProcess_ 200) >>>+           returnBlock prof >>>+           busy+         busy           = terminateBlock+         +         students       = streamGeneratorBlock studentStream 0+         studentChain   =+           queueBlock line 1 >>>+           seizeBlock prof >>>+           departBlock line 1 >>>+           advanceBlock (randomExponentialProcess_ 1000) >>>+           letGo+         letGo          =+           releaseBlock prof >>>+           terminateBlock+         add dt0        =+           let dt = maybe 0 id dt0+           in advanceBlock (holdProcess (dt + 300)) >>>+              transferBlock letGo++     runProcessInStartTime $+       runGeneratorBlock phoneCalls phoneCallChain ++     runProcessInStartTime $+       runGeneratorBlock students studentChain ++     runEventInStartTime $+       enqueueEvent 100000 $+       do Q.resetQueue line+          resetFacility prof+  +     return $+       results+       [resultSource "line" "Line" line,+        resultSource "prof" "Prof" prof]
+ examples/GPSSExample7-26/README view
@@ -0,0 +1,2 @@++Here is an example of the GPSS model. You need to have aivika-gpss installed on your computer.
+ examples/GPSSExample7-31/Experiment.hs view
@@ -0,0 +1,69 @@++{-# LANGUAGE FlexibleContexts #-}++module Experiment (experiment, generators) where++import Data.Monoid++import Control.Arrow++import Simulation.Aivika+import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart++import qualified Simulation.Aivika.Results.Transform as T+import qualified Simulation.Aivika.GPSS.Results.Transform as GpssT++-- | The simulation specs.+specs = Specs { spcStartTime = 0.0,+                spcStopTime = 20000.0,+                spcDT = 10.0,+                spcMethod = RungeKutta4,+                spcGeneratorType = SimpleGenerator }++-- | The experiment.+experiment :: Experiment+experiment =+  defaultExperiment {+    experimentSpecs = specs,+    experimentRunCount = 100,+    -- experimentRunCount = 10,+    experimentTitle = "The GPSS module 7.31" }++worker = GpssT.Facility $ resultByName "workr"+workerUtilCount = GpssT.facilityUtilisationCount worker+workerUtilCountStats = T.tr $ GpssT.facilityUtilisationCountStats worker+workerHoldingTime = T.tr $ GpssT.facilityHoldingTime worker++tatym = resultByName "stats"++statsView title series =+  defaultFinalStatsView {+    finalStatsTitle = title,+    finalStatsSeries = series+  }++chartView title series =+  defaultDeviationChartView {+    deviationChartTitle = title,+    deviationChartRightYSeries = series+  }++generators :: ChartRendering r => [WebPageGenerator r]+generators =+  [outputView defaultExperimentSpecsView,+   outputView defaultInfoView,+   outputView $ statsView "Worker Utilisation (WORKR)" $+     workerUtilCount <>+     workerUtilCountStats,+   outputView $ chartView "Worker Utilisation (WORKR)" $+     workerUtilCount <> +     workerUtilCountStats,+   outputView $ statsView "Worker Holding Time (WORKR)"+     workerHoldingTime,+   outputView $ chartView "Worker Holding Time (WORKR)"+     workerHoldingTime,+   outputView $ statsView "Processing Time (TATYM)" $+     tatym,+   outputView $ chartView "Processing Time (TATYM)" $+     tatym]
+ examples/GPSSExample7-31/MainUsingCairo.hs view
@@ -0,0 +1,13 @@++-- To run, package aivika-experiment-cairo must be installed.++import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart+import Simulation.Aivika.Experiment.Chart.Backend.Cairo++import Graphics.Rendering.Chart.Backend.Cairo++import Model+import Experiment++main = runExperiment experiment generators (WebPageRenderer (CairoRenderer PNG) experimentFilePath) model
+ examples/GPSSExample7-31/MainUsingDiagrams.hs view
@@ -0,0 +1,16 @@++-- To run, package aivika-experiment-diagrams must be installed.++import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart+import Simulation.Aivika.Experiment.Chart.Backend.Diagrams++import Graphics.Rendering.Chart.Backend.Diagrams++import Model+import Experiment++main = +  do fonts <- loadCommonFonts+     let renderer = DiagramsRenderer SVG (return fonts)+     runExperiment experiment generators (WebPageRenderer renderer experimentFilePath) model
+ examples/GPSSExample7-31/Model.hs view
@@ -0,0 +1,83 @@++{-+TATYM   TABLE M1,450,20,20++        GENERATE ,,,1+Back1   MARK+        SEIZE WORKR+        ADVANCE 8,3+        SPLIT 1,Back1+        RELEASE WORKR+        PRIORITY 1+        GATHER 24++        SEIZE WORKR+        ADVANCE 16,3+        RELEASE WORKR+        ASSEMBLE 12+        TABULATE TATYM+        TERMINATE++        GENERATE 100000+        TERMINATE 1++        START 1+ -}++module Model (model) where++import Prelude hiding (id)++import Control.Category+import Control.Monad.Trans++import Data.Maybe++import Simulation.Aivika+import Simulation.Aivika.GPSS++model :: Simulation Results+model =+  do workr <- runEventInStartTime newFacility+     stats <- newRef emptySamplingStats++     let bottleStream = takeStream 1 $+                        randomUniformStream 0 0++     let bottles     = streamGeneratorBlock bottleStream 0+         bottleChain =+           Block (\a ->+                   do t <- liftDynamics time+                      return $ assignTransactValue a (const t)) >>>+           seizeBlock workr >>>+           advanceBlock (randomUniformProcess_ (8 - 3) (8 + 3)) >>>+           splitBlock [bottleChain] >>>+           releaseBlock workr >>>+           priorityBlock 1 >>>+           gatherBlock 24 >>>+           +           seizeBlock workr >>>+           advanceBlock (randomUniformProcess_ (16 - 3) (16 + 3)) >>>+           releaseBlock workr >>>+           assembleBlock 12 >>>+           Block (\a ->+                   do t <- liftDynamics time+                      let t0 = transactValue a+                      liftEvent $+                        modifyRef stats $+                        addSamplingStats (t - t0)+                      return a) >>>+           terminateBlock++     runProcessInStartTime $+       runGeneratorBlock bottles bottleChain++     runEventInStartTime $+       enqueueEvent 5000 $+       do resetFacility workr+          writeRef stats emptySamplingStats +  +     return $+       results+       [resultSource "workr" "WORKR" workr,+        resultSource "stats" "TATYM" stats]
+ examples/GPSSExample7-31/README view
@@ -0,0 +1,2 @@++Here is an example of the GPSS model. You need to have aivika-gpss installed on your computer.
examples/InspectionAdjustmentStations/Experiment.hs view
@@ -43,14 +43,14 @@  resultProcessingFactor :: ResultTransform resultProcessingFactor =-  (T.tr $ T.serverProcessingFactor inspectionStations) <>-  (T.tr $ T.serverProcessingFactor adjustmentStations)+  (T.serverProcessingFactor inspectionStations) <>+  (T.serverProcessingFactor adjustmentStations) -inspectionQueueCount      = T.tr $ T.queueCount inspectionQueue+inspectionQueueCount      = T.queueCount inspectionQueue inspectionQueueCountStats = T.tr $ T.queueCountStats inspectionQueue inspectionWaitTime        = T.tr $ T.queueWaitTime inspectionQueue -adjustmentQueueCount      = T.tr $ T.queueCount adjustmentQueue+adjustmentQueueCount      = T.queueCount adjustmentQueue adjustmentQueueCountStats = T.tr $ T.queueCountStats adjustmentQueue adjustmentWaitTime        = T.tr $ T.queueWaitTime adjustmentQueue 
examples/InspectionAdjustmentStations/MainUsingCairo.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-cairo must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Cairo  import Graphics.Rendering.Chart.Backend.Cairo@@ -9,4 +10,4 @@ import Model import Experiment -main = runExperiment experiment generators (WebPageRenderer $ CairoRenderer PNG) model+main = runExperiment experiment generators (WebPageRenderer (CairoRenderer PNG) experimentFilePath) model
examples/InspectionAdjustmentStations/MainUsingDiagrams.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-diagrams must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Diagrams  import Graphics.Rendering.Chart.Backend.Diagrams@@ -9,4 +10,7 @@ import Model import Experiment -main = runExperiment experiment generators (WebPageRenderer $ DiagramsRenderer SVG loadCommonFonts) model+main = +  do fonts <- loadCommonFonts+     let renderer = DiagramsRenderer SVG (return fonts)+     runExperiment experiment generators (WebPageRenderer renderer experimentFilePath) model
examples/InventorySystem/Experiment.hs view
@@ -28,16 +28,15 @@     experimentTitle = "Inventory System with Lost Sales and Backorders" }  radio = T.Resource $ resultByName "radio"-radioCount      = T.tr $ T.resourceCount radio+radioCount      = T.resourceCount radio radioCountStats = T.tr $ T.resourceCountStats radio  invPos = T.TimingCounter $ resultByName "invPos"-invPosValue = T.tr $ T.timingCounterValue invPos+invPosValue = T.timingCounterValue invPos invPosStats = T.tr $ T.timingCounterStats invPos  tbLostSales = resultByName "tbLostSales" tbLostSalesCount = -  T.tr $   T.samplingStatsCount $   T.SamplingStats tbLostSales 
examples/InventorySystem/MainUsingCairo.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-cairo must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Cairo  import Graphics.Rendering.Chart.Backend.Cairo@@ -9,4 +10,4 @@ import Model import Experiment -main = runExperiment experiment generators (WebPageRenderer $ CairoRenderer PNG) model+main = runExperiment experiment generators (WebPageRenderer (CairoRenderer PNG) experimentFilePath) model
examples/InventorySystem/MainUsingDiagrams.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-diagrams must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Diagrams  import Graphics.Rendering.Chart.Backend.Diagrams@@ -9,4 +10,7 @@ import Model import Experiment -main = runExperiment experiment generators (WebPageRenderer $ DiagramsRenderer SVG loadCommonFonts) model+main = +  do fonts <- loadCommonFonts+     let renderer = DiagramsRenderer SVG (return fonts)+     runExperiment experiment generators (WebPageRenderer renderer experimentFilePath) model
examples/LinearArray/MainUsingCairo.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-cairo must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Cairo  import Graphics.Rendering.Chart.Backend.Cairo@@ -9,4 +10,4 @@ import Model import Experiment -main = runExperiment experiment generators (WebPageRenderer $ CairoRenderer PNG) (model 51)+main = runExperiment experiment generators (WebPageRenderer (CairoRenderer PNG) experimentFilePath) (model 51)
examples/LinearArray/MainUsingDiagrams.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-diagrams must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Diagrams  import Graphics.Rendering.Chart.Backend.Diagrams@@ -9,4 +10,7 @@ import Model import Experiment -main = runExperiment experiment generators (WebPageRenderer $ DiagramsRenderer SVG loadCommonFonts) (model 51)+main = +  do fonts <- loadCommonFonts+     let renderer = DiagramsRenderer SVG (return fonts)+     runExperiment experiment generators (WebPageRenderer renderer experimentFilePath) (model 51)
examples/MachRep3/MainUsingCairo.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-cairo must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Cairo  import Graphics.Rendering.Chart.Backend.Cairo@@ -9,4 +10,4 @@ import Model import Experiment -main = runExperiment experiment generators (WebPageRenderer $ CairoRenderer PNG) model+main = runExperiment experiment generators (WebPageRenderer (CairoRenderer PNG) experimentFilePath) model
examples/MachRep3/MainUsingDiagrams.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-diagrams must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Diagrams  import Graphics.Rendering.Chart.Backend.Diagrams@@ -9,4 +10,7 @@ import Model import Experiment -main = runExperiment experiment generators (WebPageRenderer $ DiagramsRenderer SVG loadCommonFonts) model+main = +  do fonts <- loadCommonFonts+     let renderer = DiagramsRenderer SVG (return fonts)+     runExperiment experiment generators (WebPageRenderer renderer experimentFilePath) model
examples/MachineBreakdowns/Experiment.hs view
@@ -33,7 +33,7 @@ machineProcessing = T.Server $ resultByName "machineProcessing"  jobsCompletedCount =-  T.tr $ T.samplingStatsCount $+  T.samplingStatsCount $   T.arrivalProcessingTime jobsCompleted    processingTime :: ResultTransform@@ -46,7 +46,7 @@  queueCount :: ResultTransform queueCount =-  T.tr $ T.queueCount inputQueue+  T.queueCount inputQueue  queueCountStats :: ResultTransform queueCountStats =@@ -54,7 +54,7 @@  processingFactor :: ResultTransform processingFactor =-  T.tr $ T.serverProcessingFactor machineProcessing+  T.serverProcessingFactor machineProcessing  generators :: ChartRendering r => [WebPageGenerator r] generators =
examples/MachineBreakdowns/MainUsingCairo.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-cairo must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Cairo  import Graphics.Rendering.Chart.Backend.Cairo@@ -9,4 +10,4 @@ import Model import Experiment -main = runExperimentParallel experiment generators (WebPageRenderer $ CairoRenderer PNG) model+main = runExperimentParallel experiment generators (WebPageRenderer (CairoRenderer PNG) experimentFilePath) model
examples/MachineBreakdowns/MainUsingDiagrams.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-diagrams must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Diagrams  import Graphics.Rendering.Chart.Backend.Diagrams@@ -9,4 +10,7 @@ import Model import Experiment -main = runExperimentParallel experiment generators (WebPageRenderer $ DiagramsRenderer SVG loadCommonFonts) model+main = +  do fonts <- loadCommonFonts+     let renderer = DiagramsRenderer SVG (return fonts)+     runExperiment experiment generators (WebPageRenderer renderer experimentFilePath) model
examples/PERT/Experiment.hs view
@@ -42,7 +42,6 @@   T.ArrivalTimer series  completionTimeMean series = -  T.tr $    T.samplingStatsMean $   T.arrivalProcessingTime $   T.ArrivalTimer series
examples/PERT/MainUsingCairo.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-cairo must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Cairo  import Graphics.Rendering.Chart.Backend.Cairo@@ -9,4 +10,4 @@ import Model import Experiment -main = runExperiment experiment generators (WebPageRenderer $ CairoRenderer PNG) model+main = runExperiment experiment generators (WebPageRenderer (CairoRenderer PNG) experimentFilePath) model
examples/PERT/MainUsingDiagrams.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-diagrams must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Diagrams  import Graphics.Rendering.Chart.Backend.Diagrams@@ -9,4 +10,7 @@ import Model import Experiment -main = runExperiment experiment generators (WebPageRenderer $ DiagramsRenderer SVG loadCommonFonts) model+main = +  do fonts <- loadCommonFonts+     let renderer = DiagramsRenderer SVG (return fonts)+     runExperiment experiment generators (WebPageRenderer renderer experimentFilePath) model
examples/PortOperations/Experiment.hs view
@@ -32,14 +32,14 @@ berth                 = T.Resource $ resultByName "berth" berthCountStats       = T.tr $ T.resourceCountStats berth berthUtilisationCount = T.tr $ T.resourceUtilisationCountStats berth-berthQueueCount       = T.tr $ T.resourceQueueCount berth+berthQueueCount       = T.resourceQueueCount berth berthQueueCountStats  = T.tr $ T.resourceQueueCountStats berth berthWaitTime         = T.tr $ T.resourceWaitTime berth  tug                 = T.Resource $ resultByName "tug" tugCountStats       = T.tr $ T.resourceCountStats tug tugUtilisationCount = T.tr $ T.resourceUtilisationCountStats tug-tugQueueCount       = T.tr $ T.resourceQueueCount tug+tugQueueCount       = T.resourceQueueCount tug tugQueueCountStats  = T.tr $ T.resourceQueueCountStats tug tugWaitTime         = T.tr $ T.resourceWaitTime tug 
examples/PortOperations/MainUsingCairo.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-cairo must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Cairo  import Graphics.Rendering.Chart.Backend.Cairo@@ -9,4 +10,4 @@ import Model import Experiment -main = runExperiment experiment generators (WebPageRenderer $ CairoRenderer PNG) model+main = runExperiment experiment generators (WebPageRenderer (CairoRenderer PNG) experimentFilePath) model
examples/PortOperations/MainUsingDiagrams.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-diagrams must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Diagrams  import Graphics.Rendering.Chart.Backend.Diagrams@@ -9,4 +10,7 @@ import Model import Experiment -main = runExperiment experiment generators (WebPageRenderer $ DiagramsRenderer SVG loadCommonFonts) model+main = +  do fonts <- loadCommonFonts+     let renderer = DiagramsRenderer SVG (return fonts)+     runExperiment experiment generators (WebPageRenderer renderer experimentFilePath) model
examples/QuarryOperations/Experiment.hs view
@@ -32,18 +32,18 @@ shovelActvty  = T.Activity $ resultByName "shovelActvty" crusherActvty = T.Activity $ resultByName "crusherActvty" -shovelQueueCount      = T.tr $ T.queueCount shovelQueue+shovelQueueCount      = T.queueCount shovelQueue shovelQueueCountStats = T.tr $ T.queueCountStats shovelQueue shovelQueueWaitTime   = T.tr $ T.queueWaitTime shovelQueue-shovelQueueRate       = T.tr $ T.queueRate shovelQueue+shovelQueueRate       = T.queueRate shovelQueue -crusherQueueCount      = T.tr $ T.queueCount crusherQueue+crusherQueueCount      = T.queueCount crusherQueue crusherQueueCountStats = T.tr $ T.queueCountStats crusherQueue crusherQueueWaitTime   = T.tr $ T.queueWaitTime crusherQueue-crusherQueueRate       = T.tr $ T.queueRate crusherQueue+crusherQueueRate       = T.queueRate crusherQueue -shovelUtilisationFactor  = T.tr $ T.activityUtilisationFactor shovelActvty-crusherUtilisationFactor = T.tr $ T.activityUtilisationFactor crusherActvty+shovelUtilisationFactor  = T.activityUtilisationFactor shovelActvty+crusherUtilisationFactor = T.activityUtilisationFactor crusherActvty  subgenerators1 :: ChartRendering r => String -> ResultTransform -> [WebPageGenerator r] subgenerators1 title series =
examples/QuarryOperations/MainUsingCairo.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-cairo must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Cairo  import Graphics.Rendering.Chart.Backend.Cairo@@ -9,4 +10,4 @@ import Model import Experiment -main = runExperiment experiment generators (WebPageRenderer $ CairoRenderer PNG) model+main = runExperiment experiment generators (WebPageRenderer (CairoRenderer PNG) experimentFilePath) model
examples/QuarryOperations/MainUsingDiagrams.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-diagrams must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Diagrams  import Graphics.Rendering.Chart.Backend.Diagrams@@ -9,4 +10,7 @@ import Model import Experiment -main = runExperiment experiment generators (WebPageRenderer $ DiagramsRenderer SVG loadCommonFonts) model+main = +  do fonts <- loadCommonFonts+     let renderer = DiagramsRenderer SVG (return fonts)+     runExperiment experiment generators (WebPageRenderer renderer experimentFilePath) model
examples/SingleLaneTraffic/Experiment.hs view
@@ -31,7 +31,7 @@ greenLightTime = resultByName "greenLightTime"  start                      = T.Resource $ resultByName "start"-startQueueCount            = T.tr $ T.resourceQueueCount start+startQueueCount            = T.resourceQueueCount start startQueueCountStats       = T.tr $ T.resourceQueueCountStats start startWaitTime              = T.tr $ T.resourceWaitTime start startCountStats            = T.tr $ T.resourceCountStats start
examples/SingleLaneTraffic/MainUsingCairo.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-cairo must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Cairo  import Graphics.Rendering.Chart.Backend.Cairo@@ -10,6 +11,6 @@ import Experiment  main = do-  runExperiment experiment generators (WebPageRenderer $ CairoRenderer PNG) model1-  runExperiment experiment generators (WebPageRenderer $ CairoRenderer PNG) model2-  runExperiment experiment generators (WebPageRenderer $ CairoRenderer PNG) model3+  runExperiment experiment generators (WebPageRenderer (CairoRenderer PNG) experimentFilePath) model1+  runExperiment experiment generators (WebPageRenderer (CairoRenderer PNG) experimentFilePath) model2+  runExperiment experiment generators (WebPageRenderer (CairoRenderer PNG) experimentFilePath) model3
examples/SingleLaneTraffic/MainUsingDiagrams.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-diagrams must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Diagrams  import Graphics.Rendering.Chart.Backend.Diagrams@@ -10,6 +11,8 @@ import Experiment  main = do-  runExperiment experiment generators (WebPageRenderer $ DiagramsRenderer SVG loadCommonFonts) model1-  runExperiment experiment generators (WebPageRenderer $ DiagramsRenderer SVG loadCommonFonts) model2-  runExperiment experiment generators (WebPageRenderer $ DiagramsRenderer SVG loadCommonFonts) model3+  fonts <- loadCommonFonts+  let renderer = DiagramsRenderer SVG (return fonts)+  runExperiment experiment generators (WebPageRenderer renderer experimentFilePath) model1+  runExperiment experiment generators (WebPageRenderer renderer experimentFilePath) model2+  runExperiment experiment generators (WebPageRenderer renderer experimentFilePath) model3
examples/TruckHaulingSituation/Experiment.hs view
@@ -30,23 +30,23 @@     experimentTitle = "A Truck Hauling Situation" }  loadQueue           = T.Queue $ resultByName "loadQueue"-loadQueueCount      = T.tr $ T.queueCount loadQueue+loadQueueCount      = T.queueCount loadQueue loadQueueCountStats = T.tr $ T.queueCountStats loadQueue loadWaitTime        = T.tr $ T.queueWaitTime loadQueue  truckQueue           = T.Queue $ resultByName "truckQueue"-truckQueueCount      = T.tr $ T.queueCount truckQueue+truckQueueCount      = T.queueCount truckQueue truckQueueCountStats = T.tr $ T.queueCountStats truckQueue truckWaitTime        = T.tr $ T.queueWaitTime truckQueue  loaderQueue           = T.Queue $ resultByName "loaderQueue"-loaderQueueCount      = T.tr $ T.queueCount loaderQueue+loaderQueueCount      = T.queueCount loaderQueue loaderQueueCountStats = T.tr $ T.queueCountStats loaderQueue loaderWaitTime        = T.tr $ T.queueWaitTime loaderQueue  loaderOps               = T.Operation $ resultByName "loaderOps" loaderUtilisationTime   = T.tr $ T.operationUtilisationTime loaderOps-loaderUtilisationFactor = T.tr $ T.operationUtilisationFactor loaderOps+loaderUtilisationFactor = T.operationUtilisationFactor loaderOps  statsView title series =   defaultFinalStatsView {
examples/TruckHaulingSituation/MainUsingCairo.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-cairo must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Cairo  import Graphics.Rendering.Chart.Backend.Cairo@@ -9,4 +10,4 @@ import Model import Experiment -main = runExperiment experiment generators (WebPageRenderer $ CairoRenderer PNG) model+main = runExperiment experiment generators (WebPageRenderer (CairoRenderer PNG) experimentFilePath) model
examples/TruckHaulingSituation/MainUsingDiagrams.hs view
@@ -2,6 +2,7 @@ -- To run, package aivika-experiment-diagrams must be installed.  import Simulation.Aivika.Experiment+import Simulation.Aivika.Experiment.Chart import Simulation.Aivika.Experiment.Chart.Backend.Diagrams  import Graphics.Rendering.Chart.Backend.Diagrams@@ -9,4 +10,7 @@ import Model import Experiment -main = runExperiment experiment generators (WebPageRenderer $ DiagramsRenderer SVG loadCommonFonts) model+main = +  do fonts <- loadCommonFonts+     let renderer = DiagramsRenderer SVG (return fonts)+     runExperiment experiment generators (WebPageRenderer renderer experimentFilePath) model