module Simulation.Aivika.Trans.Server.Random
(newRandomUniformServer,
newRandomUniformIntServer,
newRandomTriangularServer,
newRandomNormalServer,
newRandomLogNormalServer,
newRandomExponentialServer,
newRandomErlangServer,
newRandomPoissonServer,
newRandomBinomialServer,
newRandomGammaServer,
newRandomBetaServer,
newRandomWeibullServer,
newRandomDiscreteServer,
newPreemptibleRandomUniformServer,
newPreemptibleRandomUniformIntServer,
newPreemptibleRandomTriangularServer,
newPreemptibleRandomNormalServer,
newPreemptibleRandomLogNormalServer,
newPreemptibleRandomExponentialServer,
newPreemptibleRandomErlangServer,
newPreemptibleRandomPoissonServer,
newPreemptibleRandomBinomialServer,
newPreemptibleRandomGammaServer,
newPreemptibleRandomBetaServer,
newPreemptibleRandomWeibullServer,
newPreemptibleRandomDiscreteServer) where
import Simulation.Aivika.Trans.DES
import Simulation.Aivika.Trans.Generator
import Simulation.Aivika.Trans.Simulation
import Simulation.Aivika.Trans.Process
import Simulation.Aivika.Trans.Process.Random
import Simulation.Aivika.Trans.Server
newRandomUniformServer :: MonadDES m
=> Double
-> Double
-> Simulation m (Server m () a a)
{-# INLINABLE newRandomUniformServer #-}
newRandomUniformServer :: Double -> Double -> Simulation m (Server m () a a)
newRandomUniformServer =
Bool -> Double -> Double -> Simulation m (Server m () a a)
forall (m :: * -> *) a.
MonadDES m =>
Bool -> Double -> Double -> Simulation m (Server m () a a)
newPreemptibleRandomUniformServer Bool
False
newRandomUniformIntServer :: MonadDES m
=> Int
-> Int
-> Simulation m (Server m () a a)
{-# INLINABLE newRandomUniformIntServer #-}
newRandomUniformIntServer :: Int -> Int -> Simulation m (Server m () a a)
newRandomUniformIntServer =
Bool -> Int -> Int -> Simulation m (Server m () a a)
forall (m :: * -> *) a.
MonadDES m =>
Bool -> Int -> Int -> Simulation m (Server m () a a)
newPreemptibleRandomUniformIntServer Bool
False
newRandomTriangularServer :: MonadDES m
=> Double
-> Double
-> Double
-> Simulation m (Server m () a a)
{-# INLINABLE newRandomTriangularServer #-}
newRandomTriangularServer :: Double -> Double -> Double -> Simulation m (Server m () a a)
newRandomTriangularServer =
Bool
-> Double -> Double -> Double -> Simulation m (Server m () a a)
forall (m :: * -> *) a.
MonadDES m =>
Bool
-> Double -> Double -> Double -> Simulation m (Server m () a a)
newPreemptibleRandomTriangularServer Bool
False
newRandomNormalServer :: MonadDES m
=> Double
-> Double
-> Simulation m (Server m () a a)
{-# INLINABLE newRandomNormalServer #-}
newRandomNormalServer :: Double -> Double -> Simulation m (Server m () a a)
newRandomNormalServer =
Bool -> Double -> Double -> Simulation m (Server m () a a)
forall (m :: * -> *) a.
MonadDES m =>
Bool -> Double -> Double -> Simulation m (Server m () a a)
newPreemptibleRandomNormalServer Bool
False
newRandomLogNormalServer :: MonadDES m
=> Double
-> Double
-> Simulation m (Server m () a a)
{-# INLINABLE newRandomLogNormalServer #-}
newRandomLogNormalServer :: Double -> Double -> Simulation m (Server m () a a)
newRandomLogNormalServer =
Bool -> Double -> Double -> Simulation m (Server m () a a)
forall (m :: * -> *) a.
MonadDES m =>
Bool -> Double -> Double -> Simulation m (Server m () a a)
newPreemptibleRandomLogNormalServer Bool
False
newRandomExponentialServer :: MonadDES m
=> Double
-> Simulation m (Server m () a a)
{-# INLINABLE newRandomExponentialServer #-}
newRandomExponentialServer :: Double -> Simulation m (Server m () a a)
newRandomExponentialServer =
Bool -> Double -> Simulation m (Server m () a a)
forall (m :: * -> *) a.
MonadDES m =>
Bool -> Double -> Simulation m (Server m () a a)
newPreemptibleRandomExponentialServer Bool
False
newRandomErlangServer :: MonadDES m
=> Double
-> Int
-> Simulation m (Server m () a a)
{-# INLINABLE newRandomErlangServer #-}
newRandomErlangServer :: Double -> Int -> Simulation m (Server m () a a)
newRandomErlangServer =
Bool -> Double -> Int -> Simulation m (Server m () a a)
forall (m :: * -> *) a.
MonadDES m =>
Bool -> Double -> Int -> Simulation m (Server m () a a)
newPreemptibleRandomErlangServer Bool
False
newRandomPoissonServer :: MonadDES m
=> Double
-> Simulation m (Server m () a a)
{-# INLINABLE newRandomPoissonServer #-}
newRandomPoissonServer :: Double -> Simulation m (Server m () a a)
newRandomPoissonServer =
Bool -> Double -> Simulation m (Server m () a a)
forall (m :: * -> *) a.
MonadDES m =>
Bool -> Double -> Simulation m (Server m () a a)
newPreemptibleRandomPoissonServer Bool
False
newRandomBinomialServer :: MonadDES m
=> Double
-> Int
-> Simulation m (Server m () a a)
{-# INLINABLE newRandomBinomialServer #-}
newRandomBinomialServer :: Double -> Int -> Simulation m (Server m () a a)
newRandomBinomialServer =
Bool -> Double -> Int -> Simulation m (Server m () a a)
forall (m :: * -> *) a.
MonadDES m =>
Bool -> Double -> Int -> Simulation m (Server m () a a)
newPreemptibleRandomBinomialServer Bool
False
newRandomGammaServer :: MonadDES m
=> Double
-> Double
-> Simulation m (Server m () a a)
{-# INLINABLE newRandomGammaServer #-}
newRandomGammaServer :: Double -> Double -> Simulation m (Server m () a a)
newRandomGammaServer =
Bool -> Double -> Double -> Simulation m (Server m () a a)
forall (m :: * -> *) a.
MonadDES m =>
Bool -> Double -> Double -> Simulation m (Server m () a a)
newPreemptibleRandomGammaServer Bool
False
newRandomBetaServer :: MonadDES m
=> Double
-> Double
-> Simulation m (Server m () a a)
{-# INLINABLE newRandomBetaServer #-}
newRandomBetaServer :: Double -> Double -> Simulation m (Server m () a a)
newRandomBetaServer =
Bool -> Double -> Double -> Simulation m (Server m () a a)
forall (m :: * -> *) a.
MonadDES m =>
Bool -> Double -> Double -> Simulation m (Server m () a a)
newPreemptibleRandomBetaServer Bool
False
newRandomWeibullServer :: MonadDES m
=> Double
-> Double
-> Simulation m (Server m () a a)
{-# INLINABLE newRandomWeibullServer #-}
newRandomWeibullServer :: Double -> Double -> Simulation m (Server m () a a)
newRandomWeibullServer =
Bool -> Double -> Double -> Simulation m (Server m () a a)
forall (m :: * -> *) a.
MonadDES m =>
Bool -> Double -> Double -> Simulation m (Server m () a a)
newPreemptibleRandomWeibullServer Bool
False
newRandomDiscreteServer :: MonadDES m
=> DiscretePDF Double
-> Simulation m (Server m () a a)
{-# INLINABLE newRandomDiscreteServer #-}
newRandomDiscreteServer :: DiscretePDF Double -> Simulation m (Server m () a a)
newRandomDiscreteServer =
Bool -> DiscretePDF Double -> Simulation m (Server m () a a)
forall (m :: * -> *) a.
MonadDES m =>
Bool -> DiscretePDF Double -> Simulation m (Server m () a a)
newPreemptibleRandomDiscreteServer Bool
False
newPreemptibleRandomUniformServer :: MonadDES m
=> Bool
-> Double
-> Double
-> Simulation m (Server m () a a)
{-# INLINABLE newPreemptibleRandomUniformServer #-}
newPreemptibleRandomUniformServer :: Bool -> Double -> Double -> Simulation m (Server m () a a)
newPreemptibleRandomUniformServer Bool
preemptible Double
min Double
max =
Bool -> (a -> Process m a) -> Simulation m (Server m () a a)
forall (m :: * -> *) a b.
MonadDES m =>
Bool -> (a -> Process m b) -> Simulation m (Server m () a b)
newPreemptibleServer Bool
preemptible ((a -> Process m a) -> Simulation m (Server m () a a))
-> (a -> Process m a) -> Simulation m (Server m () a a)
forall a b. (a -> b) -> a -> b
$ \a
a ->
do Double -> Double -> Process m ()
forall (m :: * -> *).
MonadDES m =>
Double -> Double -> Process m ()
randomUniformProcess_ Double
min Double
max
a -> Process m a
forall (m :: * -> *) a. Monad m => a -> m a
return a
a
newPreemptibleRandomUniformIntServer :: MonadDES m
=> Bool
-> Int
-> Int
-> Simulation m (Server m () a a)
{-# INLINABLE newPreemptibleRandomUniformIntServer #-}
newPreemptibleRandomUniformIntServer :: Bool -> Int -> Int -> Simulation m (Server m () a a)
newPreemptibleRandomUniformIntServer Bool
preemptible Int
min Int
max =
Bool -> (a -> Process m a) -> Simulation m (Server m () a a)
forall (m :: * -> *) a b.
MonadDES m =>
Bool -> (a -> Process m b) -> Simulation m (Server m () a b)
newPreemptibleServer Bool
preemptible ((a -> Process m a) -> Simulation m (Server m () a a))
-> (a -> Process m a) -> Simulation m (Server m () a a)
forall a b. (a -> b) -> a -> b
$ \a
a ->
do Int -> Int -> Process m ()
forall (m :: * -> *). MonadDES m => Int -> Int -> Process m ()
randomUniformIntProcess_ Int
min Int
max
a -> Process m a
forall (m :: * -> *) a. Monad m => a -> m a
return a
a
newPreemptibleRandomTriangularServer :: MonadDES m
=> Bool
-> Double
-> Double
-> Double
-> Simulation m (Server m () a a)
{-# INLINABLE newPreemptibleRandomTriangularServer #-}
newPreemptibleRandomTriangularServer :: Bool
-> Double -> Double -> Double -> Simulation m (Server m () a a)
newPreemptibleRandomTriangularServer Bool
preemptible Double
min Double
median Double
max =
Bool -> (a -> Process m a) -> Simulation m (Server m () a a)
forall (m :: * -> *) a b.
MonadDES m =>
Bool -> (a -> Process m b) -> Simulation m (Server m () a b)
newPreemptibleServer Bool
preemptible ((a -> Process m a) -> Simulation m (Server m () a a))
-> (a -> Process m a) -> Simulation m (Server m () a a)
forall a b. (a -> b) -> a -> b
$ \a
a ->
do Double -> Double -> Double -> Process m ()
forall (m :: * -> *).
MonadDES m =>
Double -> Double -> Double -> Process m ()
randomTriangularProcess_ Double
min Double
median Double
max
a -> Process m a
forall (m :: * -> *) a. Monad m => a -> m a
return a
a
newPreemptibleRandomNormalServer :: MonadDES m
=> Bool
-> Double
-> Double
-> Simulation m (Server m () a a)
{-# INLINABLE newPreemptibleRandomNormalServer #-}
newPreemptibleRandomNormalServer :: Bool -> Double -> Double -> Simulation m (Server m () a a)
newPreemptibleRandomNormalServer Bool
preemptible Double
mu Double
nu =
Bool -> (a -> Process m a) -> Simulation m (Server m () a a)
forall (m :: * -> *) a b.
MonadDES m =>
Bool -> (a -> Process m b) -> Simulation m (Server m () a b)
newPreemptibleServer Bool
preemptible ((a -> Process m a) -> Simulation m (Server m () a a))
-> (a -> Process m a) -> Simulation m (Server m () a a)
forall a b. (a -> b) -> a -> b
$ \a
a ->
do Double -> Double -> Process m ()
forall (m :: * -> *).
MonadDES m =>
Double -> Double -> Process m ()
randomNormalProcess_ Double
mu Double
nu
a -> Process m a
forall (m :: * -> *) a. Monad m => a -> m a
return a
a
newPreemptibleRandomLogNormalServer :: MonadDES m
=> Bool
-> Double
-> Double
-> Simulation m (Server m () a a)
{-# INLINABLE newPreemptibleRandomLogNormalServer #-}
newPreemptibleRandomLogNormalServer :: Bool -> Double -> Double -> Simulation m (Server m () a a)
newPreemptibleRandomLogNormalServer Bool
preemptible Double
mu Double
nu =
Bool -> (a -> Process m a) -> Simulation m (Server m () a a)
forall (m :: * -> *) a b.
MonadDES m =>
Bool -> (a -> Process m b) -> Simulation m (Server m () a b)
newPreemptibleServer Bool
preemptible ((a -> Process m a) -> Simulation m (Server m () a a))
-> (a -> Process m a) -> Simulation m (Server m () a a)
forall a b. (a -> b) -> a -> b
$ \a
a ->
do Double -> Double -> Process m ()
forall (m :: * -> *).
MonadDES m =>
Double -> Double -> Process m ()
randomLogNormalProcess_ Double
mu Double
nu
a -> Process m a
forall (m :: * -> *) a. Monad m => a -> m a
return a
a
newPreemptibleRandomExponentialServer :: MonadDES m
=> Bool
-> Double
-> Simulation m (Server m () a a)
{-# INLINABLE newPreemptibleRandomExponentialServer #-}
newPreemptibleRandomExponentialServer :: Bool -> Double -> Simulation m (Server m () a a)
newPreemptibleRandomExponentialServer Bool
preemptible Double
mu =
Bool -> (a -> Process m a) -> Simulation m (Server m () a a)
forall (m :: * -> *) a b.
MonadDES m =>
Bool -> (a -> Process m b) -> Simulation m (Server m () a b)
newPreemptibleServer Bool
preemptible ((a -> Process m a) -> Simulation m (Server m () a a))
-> (a -> Process m a) -> Simulation m (Server m () a a)
forall a b. (a -> b) -> a -> b
$ \a
a ->
do Double -> Process m ()
forall (m :: * -> *). MonadDES m => Double -> Process m ()
randomExponentialProcess_ Double
mu
a -> Process m a
forall (m :: * -> *) a. Monad m => a -> m a
return a
a
newPreemptibleRandomErlangServer :: MonadDES m
=> Bool
-> Double
-> Int
-> Simulation m (Server m () a a)
{-# INLINABLE newPreemptibleRandomErlangServer #-}
newPreemptibleRandomErlangServer :: Bool -> Double -> Int -> Simulation m (Server m () a a)
newPreemptibleRandomErlangServer Bool
preemptible Double
beta Int
m =
Bool -> (a -> Process m a) -> Simulation m (Server m () a a)
forall (m :: * -> *) a b.
MonadDES m =>
Bool -> (a -> Process m b) -> Simulation m (Server m () a b)
newPreemptibleServer Bool
preemptible ((a -> Process m a) -> Simulation m (Server m () a a))
-> (a -> Process m a) -> Simulation m (Server m () a a)
forall a b. (a -> b) -> a -> b
$ \a
a ->
do Double -> Int -> Process m ()
forall (m :: * -> *). MonadDES m => Double -> Int -> Process m ()
randomErlangProcess_ Double
beta Int
m
a -> Process m a
forall (m :: * -> *) a. Monad m => a -> m a
return a
a
newPreemptibleRandomPoissonServer :: MonadDES m
=> Bool
-> Double
-> Simulation m (Server m () a a)
{-# INLINABLE newPreemptibleRandomPoissonServer #-}
newPreemptibleRandomPoissonServer :: Bool -> Double -> Simulation m (Server m () a a)
newPreemptibleRandomPoissonServer Bool
preemptible Double
mu =
Bool -> (a -> Process m a) -> Simulation m (Server m () a a)
forall (m :: * -> *) a b.
MonadDES m =>
Bool -> (a -> Process m b) -> Simulation m (Server m () a b)
newPreemptibleServer Bool
preemptible ((a -> Process m a) -> Simulation m (Server m () a a))
-> (a -> Process m a) -> Simulation m (Server m () a a)
forall a b. (a -> b) -> a -> b
$ \a
a ->
do Double -> Process m ()
forall (m :: * -> *). MonadDES m => Double -> Process m ()
randomPoissonProcess_ Double
mu
a -> Process m a
forall (m :: * -> *) a. Monad m => a -> m a
return a
a
newPreemptibleRandomBinomialServer :: MonadDES m
=> Bool
-> Double
-> Int
-> Simulation m (Server m () a a)
{-# INLINABLE newPreemptibleRandomBinomialServer #-}
newPreemptibleRandomBinomialServer :: Bool -> Double -> Int -> Simulation m (Server m () a a)
newPreemptibleRandomBinomialServer Bool
preemptible Double
prob Int
trials =
Bool -> (a -> Process m a) -> Simulation m (Server m () a a)
forall (m :: * -> *) a b.
MonadDES m =>
Bool -> (a -> Process m b) -> Simulation m (Server m () a b)
newPreemptibleServer Bool
preemptible ((a -> Process m a) -> Simulation m (Server m () a a))
-> (a -> Process m a) -> Simulation m (Server m () a a)
forall a b. (a -> b) -> a -> b
$ \a
a ->
do Double -> Int -> Process m ()
forall (m :: * -> *). MonadDES m => Double -> Int -> Process m ()
randomBinomialProcess_ Double
prob Int
trials
a -> Process m a
forall (m :: * -> *) a. Monad m => a -> m a
return a
a
newPreemptibleRandomGammaServer :: MonadDES m
=> Bool
-> Double
-> Double
-> Simulation m (Server m () a a)
{-# INLINABLE newPreemptibleRandomGammaServer #-}
newPreemptibleRandomGammaServer :: Bool -> Double -> Double -> Simulation m (Server m () a a)
newPreemptibleRandomGammaServer Bool
preemptible Double
kappa Double
theta =
Bool -> (a -> Process m a) -> Simulation m (Server m () a a)
forall (m :: * -> *) a b.
MonadDES m =>
Bool -> (a -> Process m b) -> Simulation m (Server m () a b)
newPreemptibleServer Bool
preemptible ((a -> Process m a) -> Simulation m (Server m () a a))
-> (a -> Process m a) -> Simulation m (Server m () a a)
forall a b. (a -> b) -> a -> b
$ \a
a ->
do Double -> Double -> Process m ()
forall (m :: * -> *).
MonadDES m =>
Double -> Double -> Process m ()
randomGammaProcess_ Double
kappa Double
theta
a -> Process m a
forall (m :: * -> *) a. Monad m => a -> m a
return a
a
newPreemptibleRandomBetaServer :: MonadDES m
=> Bool
-> Double
-> Double
-> Simulation m (Server m () a a)
{-# INLINABLE newPreemptibleRandomBetaServer #-}
newPreemptibleRandomBetaServer :: Bool -> Double -> Double -> Simulation m (Server m () a a)
newPreemptibleRandomBetaServer Bool
preemptible Double
alpha Double
beta =
Bool -> (a -> Process m a) -> Simulation m (Server m () a a)
forall (m :: * -> *) a b.
MonadDES m =>
Bool -> (a -> Process m b) -> Simulation m (Server m () a b)
newPreemptibleServer Bool
preemptible ((a -> Process m a) -> Simulation m (Server m () a a))
-> (a -> Process m a) -> Simulation m (Server m () a a)
forall a b. (a -> b) -> a -> b
$ \a
a ->
do Double -> Double -> Process m ()
forall (m :: * -> *).
MonadDES m =>
Double -> Double -> Process m ()
randomBetaProcess_ Double
alpha Double
beta
a -> Process m a
forall (m :: * -> *) a. Monad m => a -> m a
return a
a
newPreemptibleRandomWeibullServer :: MonadDES m
=> Bool
-> Double
-> Double
-> Simulation m (Server m () a a)
{-# INLINABLE newPreemptibleRandomWeibullServer #-}
newPreemptibleRandomWeibullServer :: Bool -> Double -> Double -> Simulation m (Server m () a a)
newPreemptibleRandomWeibullServer Bool
preemptible Double
alpha Double
beta =
Bool -> (a -> Process m a) -> Simulation m (Server m () a a)
forall (m :: * -> *) a b.
MonadDES m =>
Bool -> (a -> Process m b) -> Simulation m (Server m () a b)
newPreemptibleServer Bool
preemptible ((a -> Process m a) -> Simulation m (Server m () a a))
-> (a -> Process m a) -> Simulation m (Server m () a a)
forall a b. (a -> b) -> a -> b
$ \a
a ->
do Double -> Double -> Process m ()
forall (m :: * -> *).
MonadDES m =>
Double -> Double -> Process m ()
randomWeibullProcess_ Double
alpha Double
beta
a -> Process m a
forall (m :: * -> *) a. Monad m => a -> m a
return a
a
newPreemptibleRandomDiscreteServer :: MonadDES m
=> Bool
-> DiscretePDF Double
-> Simulation m (Server m () a a)
{-# INLINABLE newPreemptibleRandomDiscreteServer #-}
newPreemptibleRandomDiscreteServer :: Bool -> DiscretePDF Double -> Simulation m (Server m () a a)
newPreemptibleRandomDiscreteServer Bool
preemptible DiscretePDF Double
dpdf =
Bool -> (a -> Process m a) -> Simulation m (Server m () a a)
forall (m :: * -> *) a b.
MonadDES m =>
Bool -> (a -> Process m b) -> Simulation m (Server m () a b)
newPreemptibleServer Bool
preemptible ((a -> Process m a) -> Simulation m (Server m () a a))
-> (a -> Process m a) -> Simulation m (Server m () a a)
forall a b. (a -> b) -> a -> b
$ \a
a ->
do DiscretePDF Double -> Process m ()
forall (m :: * -> *).
MonadDES m =>
DiscretePDF Double -> Process m ()
randomDiscreteProcess_ DiscretePDF Double
dpdf
a -> Process m a
forall (m :: * -> *) a. Monad m => a -> m a
return a
a