packages feed

aivika-experiment-chart 1.0 → 1.1

raw patch · 4 files changed

+19/−28 lines, 4 filesdep ~aivikadep ~aivika-experiment

Dependency ranges changed: aivika, aivika-experiment

Files

aivika-experiment-chart.cabal view
@@ -1,5 +1,5 @@ name:            aivika-experiment-chart-version:         1.0+version:         1.1 synopsis:        Simulation experiments with charting for the Aivika library description:     This package complements the Aivika and Aivika Experiment packages with@@ -51,7 +51,7 @@                      lens >= 3.9,                      data-default-class < 0.1,                      colour >= 2.3.3,-                     aivika >= 1.0,-                     aivika-experiment >= 1.0+                     aivika >= 1.1,+                     aivika-experiment >= 1.1      ghc-options:     -O2
examples/BassDiffusion.hs view
@@ -1,6 +1,7 @@  import System.Random import Data.Array+ import Control.Monad import Control.Monad.Trans @@ -36,16 +37,6 @@                        Left "adopters"] } ]     } -exprnd :: Double -> IO Double-exprnd lambda =-  do x <- getStdRandom random-     return (- log x / lambda)-     -boolrnd :: Double -> IO Bool-boolrnd p =-  do x <- getStdRandom random-     return (x <= p)- data Person = Person { personAgent :: Agent,                        personPotentialAdopter :: AgentState,                        personAdopter :: AgentState }@@ -71,20 +62,23 @@   do setStateActivation (personPotentialAdopter p) $        do modifyRef potentialAdopters $ \a -> a + 1           -- add a timeout-          t <- liftIO $ exprnd advertisingEffectiveness +          t <- liftParameter $+               randomExponential (1 / advertisingEffectiveness)           let st  = personPotentialAdopter p               st' = personAdopter p           addTimeout st t $ selectState st'      setStateActivation (personAdopter p) $         do modifyRef adopters  $ \a -> a + 1           -- add a timer that works while the state is active-          let t = liftIO $ exprnd contactRate    -- many times!+          let t = liftParameter $+                  randomExponential (1 / contactRate)    -- many times!           addTimer (personAdopter p) t $             do i <- liftIO $ getStdRandom $ randomR (1, n)                let p' = ps ! i                st <- selectedState (personAgent p')                when (st == Just (personPotentialAdopter p')) $-                 do b <- liftIO $ boolrnd adoptionFraction+                 do b <- liftParameter $+                         randomTrue adoptionFraction                     when b $ selectState (personAdopter p')      setStateDeactivation (personPotentialAdopter p) $        modifyRef potentialAdopters $ \a -> a - 1@@ -109,7 +103,7 @@      adopters <- newRef 0      ps <- createPersons      definePersons ps potentialAdopters adopters-     runEventInStartTime IncludingCurrentEvents $+     runEventInStartTime $        activatePersons ps      experimentDataInStartTime        [("potentialAdopters",
examples/Furnace.hs view
@@ -33,15 +33,13 @@ -- processor.  import Data.Maybe-import System.Random+ import Control.Monad import Control.Monad.Trans  import Simulation.Aivika import Simulation.Aivika.Queue.Infinite -import qualified Simulation.Aivika.DoubleLinkedList as DLL- import Simulation.Aivika.Experiment import Simulation.Aivika.Experiment.Chart @@ -311,26 +309,26 @@   do furnace <- newFurnace         -- initialize the furnace and start its iterating in start time-     runEventInStartTime IncludingCurrentEvents $+     runEventInStartTime $        do initializeFurnace furnace           startIteratingFurnace furnace            -- generate randomly new input ingots-     runProcessInStartTime IncludingCurrentEvents $+     runProcessInStartTime $        inputProcess furnace       -- load permanently the input ingots in the furnace-     runProcessInStartTime IncludingCurrentEvents $+     runProcessInStartTime $        loadingProcess furnace            experimentDataInStartTime        [(totalIngotCountName,          seriesEntity "total ingot count" $-         queueStoreCount (furnaceQueue furnace)),+         enqueueStoreCount (furnaceQueue furnace)),                       (loadedIngotCountName,          seriesEntity "loaded ingot count" $  -- actually, +/- 1-         queueOutputCount (furnaceQueue furnace)),+         dequeueCount (furnaceQueue furnace)),                       (readyIngotCountName,          seriesEntity "ready ingot count" $
examples/MachRep3.hs view
@@ -13,7 +13,6 @@ -- until both machines are down. We find the proportion of up time. It -- should come out to about 0.45. -import System.Random import Control.Monad import Control.Monad.Trans @@ -126,10 +125,10 @@                              machine pid -     runProcessInStartTimeUsingId IncludingCurrentEvents+     runProcessInStartTimeUsingId        pid1 (machine pid2) -     runProcessInStartTimeUsingId IncludingCurrentEvents+     runProcessInStartTimeUsingId        pid2 (machine pid1)            let result =