aivika-transformers-4.3.5: Transformers for the Aivika simulation library

CopyrightCopyright (c) 2009-2015, David Sorokin <david.sorokin@gmail.com>
LicenseBSD3
MaintainerDavid Sorokin <david.sorokin@gmail.com>
Stabilityexperimental
Safe HaskellNone
LanguageHaskell2010

Simulation.Aivika.Trans.Arrival

Description

Tested with: GHC 7.10.1

This module defines the types and functions for working with the events that can represent something that arrive from outside the model, or represent other things which computation is delayed and hence is not synchronized.

Therefore, the additional information is provided about the time and delay of arrival.

Synopsis

Documentation

data Arrival a :: * -> *

It defines when an event has arrived, usually generated by some random stream.

Such events should arrive one by one without time lag in the following sense that the model should start awaiting the next event exactly in that time when the previous event has arrived.

Another use case is a situation when the actual event is not synchronized with the Event computation, being synchronized with the event queue, nevertheless. Then the arrival is used for providing the additional information about the time at which the event had been actually arrived.

Constructors

Arrival 

Fields

arrivalValue :: a

the data we received with the event

arrivalTime :: Double

the simulation time at which the event has arrived

arrivalDelay :: Maybe Double

the delay time which has passed from the time of arriving the previous event

Instances

Eq a => Eq (Arrival a) 
Ord a => Ord (Arrival a) 
Show a => Show (Arrival a) 

data ArrivalTimer m Source

Accumulates the statistics about that how long the arrived events are processed.

newArrivalTimer :: MonadDES m => Simulation m (ArrivalTimer m) Source

Create a new timer that measures how long the arrived events are processed.

arrivalTimerProcessor :: MonadDES m => ArrivalTimer m -> Processor m (Arrival a) (Arrival a) Source

Return a processor that actually measures how much time has passed from the time of arriving the events.

arrivalProcessingTime :: MonadDES m => ArrivalTimer m -> Event m (SamplingStats Double) Source

Return the statistics about that how long the arrived events were processed.

arrivalProcessingTimeChanged :: MonadDES m => ArrivalTimer m -> Signal m (SamplingStats Double) Source

Return a signal raised when the the processing time statistics changes.

arrivalProcessingTimeChanged_ :: MonadDES m => ArrivalTimer m -> Signal m () Source

Return a signal raised when the the processing time statistics changes.