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

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

Simulation.Aivika.Trans.Results

Contents

Description

Tested with: GHC 8.0.1

The module allows exporting the simulation results from the model.

Synopsis

Definitions Focused on Modeling

data Results m Source #

It contains the results of simulation.

Instances

Monoid (Results m) Source # 

Methods

mempty :: Results m #

mappend :: Results m -> Results m -> Results m #

mconcat :: [Results m] -> Results m #

type ResultTransform m = Results m -> Results m Source #

It transforms the results of simulation.

type ResultName = String Source #

A name used for indentifying the results when generating output.

class MonadDES m => ResultProvider p m | p -> m where Source #

Represents a provider of the simulation results. It is usually something, or an array of something, or a list of such values which can be simulated to get data.

Minimal complete definition

resultSource'

Methods

resultSource :: ResultName -> ResultDescription -> p -> ResultSource m Source #

Return the source of simulation results by the specified name, description and provider.

resultSource3 :: ResultName -> ResultDescription -> ResultDescription -> p -> ResultSource m Source #

Return the source of simulation results by the specified name, description, title and provider.

resultSource' :: ResultName -> [ResultName] -> ResultId -> [ResultId] -> p -> ResultSource m Source #

Return the source of simulation results by the specified name, its name path, identifier, the corresponding indentifier path and provider.

Instances

ResultProvider p m => ResultProvider [p] m Source # 
ResultProvider p m => ResultProvider (Vector p) m Source # 
MonadResource m => ResultProvider (Resource m) m Source # 
MonadDES m => ResultProvider (ArrivalTimer m) m Source # 
ResultProvider p m => ResultProvider (ResultVectorWithSubscript p) m Source # 
ResultProvider p m => ResultProvider (ResultListWithSubscript p) m Source # 
(Show i, Ix i, ResultProvider p m) => ResultProvider (Array i p) m Source # 
(MonadDES m, ResultItemable (ResultValue [e])) => ResultProvider (Event m (Vector e)) m Source # 
(Ix i, Show i, MonadDES m, ResultItemable (ResultValue [e])) => ResultProvider (Event m (Array i e)) m Source # 
(MonadDES m, ResultItemable (ResultValue a), ResultItemable (ResultValue (TimingStats a))) => ResultProvider (Event m (TimingCounter a)) m Source # 
(MonadDES m, ResultItemable (ResultValue a), ResultItemable (ResultValue (SamplingStats a))) => ResultProvider (Event m (SamplingCounter a)) m Source # 
(MonadDES m, ResultItemable (ResultValue a)) => ResultProvider (Event m a) m Source # 
(MonadDES m, ResultItemable (ResultValue [e])) => ResultProvider (Dynamics m (Vector e)) m Source # 
(Ix i, Show i, MonadDES m, ResultItemable (ResultValue [e])) => ResultProvider (Dynamics m (Array i e)) m Source # 
(MonadDES m, ResultItemable (ResultValue a), ResultItemable (ResultValue (TimingStats a))) => ResultProvider (Dynamics m (TimingCounter a)) m Source # 
(MonadDES m, ResultItemable (ResultValue a), ResultItemable (ResultValue (SamplingStats a))) => ResultProvider (Dynamics m (SamplingCounter a)) m Source # 
(MonadDES m, ResultItemable (ResultValue a)) => ResultProvider (Dynamics m a) m Source # 
(MonadDES m, ResultItemable (ResultValue [e])) => ResultProvider (Simulation m (Vector e)) m Source # 
(Ix i, Show i, MonadDES m, ResultItemable (ResultValue [e])) => ResultProvider (Simulation m (Array i e)) m Source # 
(MonadDES m, ResultItemable (ResultValue a), ResultItemable (ResultValue (TimingStats a))) => ResultProvider (Simulation m (TimingCounter a)) m Source # 
(MonadDES m, ResultItemable (ResultValue a), ResultItemable (ResultValue (SamplingStats a))) => ResultProvider (Simulation m (SamplingCounter a)) m Source # 
(MonadDES m, ResultItemable (ResultValue a)) => ResultProvider (Simulation m a) m Source # 
(MonadDES m, ResultItemable (ResultValue [e])) => ResultProvider (Parameter m (Vector e)) m Source # 
(Ix i, Show i, MonadDES m, ResultItemable (ResultValue [e])) => ResultProvider (Parameter m (Array i e)) m Source # 
(MonadDES m, ResultItemable (ResultValue a), ResultItemable (ResultValue (TimingStats a))) => ResultProvider (Parameter m (TimingCounter a)) m Source # 
(MonadDES m, ResultItemable (ResultValue a), ResultItemable (ResultValue (SamplingStats a))) => ResultProvider (Parameter m (SamplingCounter a)) m Source # 
(MonadDES m, ResultItemable (ResultValue a)) => ResultProvider (Parameter m a) m Source # 
(MonadDES m, ResultItemable (ResultValue [e])) => ResultProvider (Ref m (Vector e)) m Source # 
(Ix i, Show i, MonadDES m, ResultItemable (ResultValue [e])) => ResultProvider (Ref m (Array i e)) m Source # 
(MonadDES m, ResultItemable (ResultValue a), ResultItemable (ResultValue (TimingStats a))) => ResultProvider (Ref m (TimingCounter a)) m Source # 
(MonadDES m, ResultItemable (ResultValue a), ResultItemable (ResultValue (SamplingStats a))) => ResultProvider (Ref m (SamplingCounter a)) m Source # 
(MonadDES m, ResultItemable (ResultValue a)) => ResultProvider (Ref m a) m Source # 
(MonadDES m, ResultItemable (ResultValue [e])) => ResultProvider (Signalable m (Vector e)) m Source # 
(Ix i, Show i, MonadDES m, ResultItemable (ResultValue [e])) => ResultProvider (Signalable m (Array i e)) m Source # 
(MonadDES m, ResultItemable (ResultValue a), ResultItemable (ResultValue (TimingStats a))) => ResultProvider (Signalable m (TimingCounter a)) m Source # 
(MonadDES m, ResultItemable (ResultValue a), ResultItemable (ResultValue (SamplingStats a))) => ResultProvider (Signalable m (SamplingCounter a)) m Source # 
(MonadDES m, ResultItemable (ResultValue a)) => ResultProvider (Signalable m a) m Source # 
(MonadDES m, ResultItemable (ResultValue [e])) => ResultProvider (Ref m (Vector e)) m Source # 
(Ix i, Show i, MonadDES m, ResultItemable (ResultValue [e])) => ResultProvider (Ref m (Array i e)) m Source # 
(MonadDES m, ResultItemable (ResultValue a), ResultItemable (ResultValue (TimingStats a))) => ResultProvider (Ref m (TimingCounter a)) m Source # 
(MonadDES m, ResultItemable (ResultValue a), ResultItemable (ResultValue (SamplingStats a))) => ResultProvider (Ref m (SamplingCounter a)) m Source # 
(MonadDES m, ResultItemable (ResultValue a)) => ResultProvider (Ref m a) m Source # 
(MonadDES m, Show s, ResultItemable (ResultValue s)) => ResultProvider (Resource m s) m Source # 
(MonadDES m, MonadVar m, ResultItemable (ResultValue [e])) => ResultProvider (Var m (Vector e)) m Source # 
(Ix i, Show i, MonadDES m, MonadVar m, ResultItemable (ResultValue [e])) => ResultProvider (Var m (Array i e)) m Source # 
(MonadDES m, MonadVar m, ResultItemable (ResultValue a), ResultItemable (ResultValue (TimingStats a))) => ResultProvider (Var m (TimingCounter a)) m Source # 
(MonadDES m, MonadVar m, ResultItemable (ResultValue a), ResultItemable (ResultValue (SamplingStats a))) => ResultProvider (Var m (SamplingCounter a)) m Source # 
(MonadDES m, MonadVar m, ResultItemable (ResultValue a)) => ResultProvider (Var m a) m Source # 
(Show i, Ix i, ResultProvider p m) => ResultProvider (ResultArrayWithSubscript i p) m Source # 
MonadDES m => ResultProvider (Operation m a b) m Source # 
(MonadDES m, Show sm, Show so, ResultItemable (ResultValue sm), ResultItemable (ResultValue so)) => ResultProvider (Queue m sm so a) m Source # 
(MonadDES m, Show s, ResultItemable (ResultValue s)) => ResultProvider (Server m s a b) m Source # 
(MonadDES m, Show s, ResultItemable (ResultValue s)) => ResultProvider (Activity m s a b) m Source # 
(MonadDES m, Show si, Show sm, Show so, ResultItemable (ResultValue si), ResultItemable (ResultValue sm), ResultItemable (ResultValue so)) => ResultProvider (Queue m si sm so a) m Source # 

results :: [ResultSource m] -> Results m Source #

Prepare the simulation results.

expandResults :: MonadDES m => ResultTransform m Source #

Return an expanded version of the simulation results expanding the properties as possible, which takes place for expanding statistics to show the count, average, deviation, minimum, maximum etc. as separate values.

resultSummary :: MonadDES m => ResultTransform m Source #

Return a short version of the simulation results, i.e. their summary, expanding the main properties or excluding auxiliary properties if required.

resultByName :: ResultName -> ResultTransform m Source #

Take a result by its name.

resultByProperty :: ResultName -> ResultTransform m Source #

Take a result from the object with the specified property label, but it is more preferrable to refer to the property by its ResultId identifier with help of the resultById function.

resultById :: ResultId -> ResultTransform m Source #

Take a result from the object with the specified identifier. It can identify an item, object property, the object iself, vector or its elements.

resultByIndex :: Int -> ResultTransform m Source #

Take a result from the vector by the specified integer index.

resultBySubscript :: ResultName -> ResultTransform m Source #

Take a result from the vector by the specified string subscript.

class MonadDES m => ResultComputing t m where Source #

Represents a computation that can return the simulation data.

Minimal complete definition

computeResultData, computeResultSignal

Methods

computeResultData :: t m a -> ResultData a m Source #

Compute data with the results of simulation.

computeResultSignal :: t m a -> ResultSignal m Source #

Return the signal triggered when data change if such a signal exists.

Definitions Focused on Using the Library

data ResultValue e m Source #

A parameterised value that actually represents a generalised result item that have no parametric type.

Constructors

ResultValue 

Fields

Instances

ResultItemable (ResultValue Bool) Source # 
ResultItemable (ResultValue Double) Source # 
ResultItemable (ResultValue Int) Source # 
ResultItemable (ResultValue [Double]) Source # 

Methods

resultItemName :: ResultValue [Double] m -> ResultName Source #

resultItemNamePath :: ResultValue [Double] m -> [ResultName] Source #

resultItemId :: ResultValue [Double] m -> ResultId Source #

resultItemIdPath :: ResultValue [Double] m -> [ResultId] Source #

resultItemSignal :: MonadDES m => ResultValue [Double] m -> ResultSignal m Source #

resultItemExpansion :: MonadDES m => ResultValue [Double] m -> ResultSource m Source #

resultItemSummary :: MonadDES m => ResultValue [Double] m -> ResultSource m Source #

resultItemAsIntValue :: MonadDES m => ResultValue [Double] m -> Maybe (ResultValue Int m) Source #

resultItemAsIntListValue :: MonadDES m => ResultValue [Double] m -> Maybe (ResultValue [Int] m) Source #

resultItemAsIntStatsValue :: MonadDES m => ResultValue [Double] m -> Maybe (ResultValue (SamplingStats Int) m) Source #

resultItemAsIntTimingStatsValue :: MonadDES m => ResultValue [Double] m -> Maybe (ResultValue (TimingStats Int) m) Source #

resultItemAsDoubleValue :: MonadDES m => ResultValue [Double] m -> Maybe (ResultValue Double m) Source #

resultItemAsDoubleListValue :: MonadDES m => ResultValue [Double] m -> Maybe (ResultValue [Double] m) Source #

resultItemAsDoubleStatsValue :: MonadDES m => ResultValue [Double] m -> Maybe (ResultValue (SamplingStats Double) m) Source #

resultItemAsDoubleTimingStatsValue :: MonadDES m => ResultValue [Double] m -> Maybe (ResultValue (TimingStats Double) m) Source #

resultItemAsStringValue :: MonadDES m => ResultValue [Double] m -> Maybe (ResultValue String m) Source #

ResultItemable (ResultValue [Int]) Source # 
ResultItemable (ResultValue ()) Source # 
ResultItemable (ResultValue (SamplingStats Double)) Source # 

Methods

resultItemName :: ResultValue (SamplingStats Double) m -> ResultName Source #

resultItemNamePath :: ResultValue (SamplingStats Double) m -> [ResultName] Source #

resultItemId :: ResultValue (SamplingStats Double) m -> ResultId Source #

resultItemIdPath :: ResultValue (SamplingStats Double) m -> [ResultId] Source #

resultItemSignal :: MonadDES m => ResultValue (SamplingStats Double) m -> ResultSignal m Source #

resultItemExpansion :: MonadDES m => ResultValue (SamplingStats Double) m -> ResultSource m Source #

resultItemSummary :: MonadDES m => ResultValue (SamplingStats Double) m -> ResultSource m Source #

resultItemAsIntValue :: MonadDES m => ResultValue (SamplingStats Double) m -> Maybe (ResultValue Int m) Source #

resultItemAsIntListValue :: MonadDES m => ResultValue (SamplingStats Double) m -> Maybe (ResultValue [Int] m) Source #

resultItemAsIntStatsValue :: MonadDES m => ResultValue (SamplingStats Double) m -> Maybe (ResultValue (SamplingStats Int) m) Source #

resultItemAsIntTimingStatsValue :: MonadDES m => ResultValue (SamplingStats Double) m -> Maybe (ResultValue (TimingStats Int) m) Source #

resultItemAsDoubleValue :: MonadDES m => ResultValue (SamplingStats Double) m -> Maybe (ResultValue Double m) Source #

resultItemAsDoubleListValue :: MonadDES m => ResultValue (SamplingStats Double) m -> Maybe (ResultValue [Double] m) Source #

resultItemAsDoubleStatsValue :: MonadDES m => ResultValue (SamplingStats Double) m -> Maybe (ResultValue (SamplingStats Double) m) Source #

resultItemAsDoubleTimingStatsValue :: MonadDES m => ResultValue (SamplingStats Double) m -> Maybe (ResultValue (TimingStats Double) m) Source #

resultItemAsStringValue :: MonadDES m => ResultValue (SamplingStats Double) m -> Maybe (ResultValue String m) Source #

ResultItemable (ResultValue (SamplingStats Int)) Source # 

Methods

resultItemName :: ResultValue (SamplingStats Int) m -> ResultName Source #

resultItemNamePath :: ResultValue (SamplingStats Int) m -> [ResultName] Source #

resultItemId :: ResultValue (SamplingStats Int) m -> ResultId Source #

resultItemIdPath :: ResultValue (SamplingStats Int) m -> [ResultId] Source #

resultItemSignal :: MonadDES m => ResultValue (SamplingStats Int) m -> ResultSignal m Source #

resultItemExpansion :: MonadDES m => ResultValue (SamplingStats Int) m -> ResultSource m Source #

resultItemSummary :: MonadDES m => ResultValue (SamplingStats Int) m -> ResultSource m Source #

resultItemAsIntValue :: MonadDES m => ResultValue (SamplingStats Int) m -> Maybe (ResultValue Int m) Source #

resultItemAsIntListValue :: MonadDES m => ResultValue (SamplingStats Int) m -> Maybe (ResultValue [Int] m) Source #

resultItemAsIntStatsValue :: MonadDES m => ResultValue (SamplingStats Int) m -> Maybe (ResultValue (SamplingStats Int) m) Source #

resultItemAsIntTimingStatsValue :: MonadDES m => ResultValue (SamplingStats Int) m -> Maybe (ResultValue (TimingStats Int) m) Source #

resultItemAsDoubleValue :: MonadDES m => ResultValue (SamplingStats Int) m -> Maybe (ResultValue Double m) Source #

resultItemAsDoubleListValue :: MonadDES m => ResultValue (SamplingStats Int) m -> Maybe (ResultValue [Double] m) Source #

resultItemAsDoubleStatsValue :: MonadDES m => ResultValue (SamplingStats Int) m -> Maybe (ResultValue (SamplingStats Double) m) Source #

resultItemAsDoubleTimingStatsValue :: MonadDES m => ResultValue (SamplingStats Int) m -> Maybe (ResultValue (TimingStats Double) m) Source #

resultItemAsStringValue :: MonadDES m => ResultValue (SamplingStats Int) m -> Maybe (ResultValue String m) Source #

ResultItemable (ResultValue (TimingStats Double)) Source # 

Methods

resultItemName :: ResultValue (TimingStats Double) m -> ResultName Source #

resultItemNamePath :: ResultValue (TimingStats Double) m -> [ResultName] Source #

resultItemId :: ResultValue (TimingStats Double) m -> ResultId Source #

resultItemIdPath :: ResultValue (TimingStats Double) m -> [ResultId] Source #

resultItemSignal :: MonadDES m => ResultValue (TimingStats Double) m -> ResultSignal m Source #

resultItemExpansion :: MonadDES m => ResultValue (TimingStats Double) m -> ResultSource m Source #

resultItemSummary :: MonadDES m => ResultValue (TimingStats Double) m -> ResultSource m Source #

resultItemAsIntValue :: MonadDES m => ResultValue (TimingStats Double) m -> Maybe (ResultValue Int m) Source #

resultItemAsIntListValue :: MonadDES m => ResultValue (TimingStats Double) m -> Maybe (ResultValue [Int] m) Source #

resultItemAsIntStatsValue :: MonadDES m => ResultValue (TimingStats Double) m -> Maybe (ResultValue (SamplingStats Int) m) Source #

resultItemAsIntTimingStatsValue :: MonadDES m => ResultValue (TimingStats Double) m -> Maybe (ResultValue (TimingStats Int) m) Source #

resultItemAsDoubleValue :: MonadDES m => ResultValue (TimingStats Double) m -> Maybe (ResultValue Double m) Source #

resultItemAsDoubleListValue :: MonadDES m => ResultValue (TimingStats Double) m -> Maybe (ResultValue [Double] m) Source #

resultItemAsDoubleStatsValue :: MonadDES m => ResultValue (TimingStats Double) m -> Maybe (ResultValue (SamplingStats Double) m) Source #

resultItemAsDoubleTimingStatsValue :: MonadDES m => ResultValue (TimingStats Double) m -> Maybe (ResultValue (TimingStats Double) m) Source #

resultItemAsStringValue :: MonadDES m => ResultValue (TimingStats Double) m -> Maybe (ResultValue String m) Source #

ResultItemable (ResultValue (TimingStats Int)) Source # 

Methods

resultItemName :: ResultValue (TimingStats Int) m -> ResultName Source #

resultItemNamePath :: ResultValue (TimingStats Int) m -> [ResultName] Source #

resultItemId :: ResultValue (TimingStats Int) m -> ResultId Source #

resultItemIdPath :: ResultValue (TimingStats Int) m -> [ResultId] Source #

resultItemSignal :: MonadDES m => ResultValue (TimingStats Int) m -> ResultSignal m Source #

resultItemExpansion :: MonadDES m => ResultValue (TimingStats Int) m -> ResultSource m Source #

resultItemSummary :: MonadDES m => ResultValue (TimingStats Int) m -> ResultSource m Source #

resultItemAsIntValue :: MonadDES m => ResultValue (TimingStats Int) m -> Maybe (ResultValue Int m) Source #

resultItemAsIntListValue :: MonadDES m => ResultValue (TimingStats Int) m -> Maybe (ResultValue [Int] m) Source #

resultItemAsIntStatsValue :: MonadDES m => ResultValue (TimingStats Int) m -> Maybe (ResultValue (SamplingStats Int) m) Source #

resultItemAsIntTimingStatsValue :: MonadDES m => ResultValue (TimingStats Int) m -> Maybe (ResultValue (TimingStats Int) m) Source #

resultItemAsDoubleValue :: MonadDES m => ResultValue (TimingStats Int) m -> Maybe (ResultValue Double m) Source #

resultItemAsDoubleListValue :: MonadDES m => ResultValue (TimingStats Int) m -> Maybe (ResultValue [Double] m) Source #

resultItemAsDoubleStatsValue :: MonadDES m => ResultValue (TimingStats Int) m -> Maybe (ResultValue (SamplingStats Double) m) Source #

resultItemAsDoubleTimingStatsValue :: MonadDES m => ResultValue (TimingStats Int) m -> Maybe (ResultValue (TimingStats Double) m) Source #

resultItemAsStringValue :: MonadDES m => ResultValue (TimingStats Int) m -> Maybe (ResultValue String m) Source #

ResultItemable (ResultValue String) Source # 
ResultItemable (ResultValue StaticPriorities) Source # 

Methods

resultItemName :: ResultValue StaticPriorities m -> ResultName Source #

resultItemNamePath :: ResultValue StaticPriorities m -> [ResultName] Source #

resultItemId :: ResultValue StaticPriorities m -> ResultId Source #

resultItemIdPath :: ResultValue StaticPriorities m -> [ResultId] Source #

resultItemSignal :: MonadDES m => ResultValue StaticPriorities m -> ResultSignal m Source #

resultItemExpansion :: MonadDES m => ResultValue StaticPriorities m -> ResultSource m Source #

resultItemSummary :: MonadDES m => ResultValue StaticPriorities m -> ResultSource m Source #

resultItemAsIntValue :: MonadDES m => ResultValue StaticPriorities m -> Maybe (ResultValue Int m) Source #

resultItemAsIntListValue :: MonadDES m => ResultValue StaticPriorities m -> Maybe (ResultValue [Int] m) Source #

resultItemAsIntStatsValue :: MonadDES m => ResultValue StaticPriorities m -> Maybe (ResultValue (SamplingStats Int) m) Source #

resultItemAsIntTimingStatsValue :: MonadDES m => ResultValue StaticPriorities m -> Maybe (ResultValue (TimingStats Int) m) Source #

resultItemAsDoubleValue :: MonadDES m => ResultValue StaticPriorities m -> Maybe (ResultValue Double m) Source #

resultItemAsDoubleListValue :: MonadDES m => ResultValue StaticPriorities m -> Maybe (ResultValue [Double] m) Source #

resultItemAsDoubleStatsValue :: MonadDES m => ResultValue StaticPriorities m -> Maybe (ResultValue (SamplingStats Double) m) Source #

resultItemAsDoubleTimingStatsValue :: MonadDES m => ResultValue StaticPriorities m -> Maybe (ResultValue (TimingStats Double) m) Source #

resultItemAsStringValue :: MonadDES m => ResultValue StaticPriorities m -> Maybe (ResultValue String m) Source #

ResultItemable (ResultValue SIRO) Source # 
ResultItemable (ResultValue LCFS) Source # 
ResultItemable (ResultValue FCFS) Source # 

resultsToIntValues :: MonadDES m => Results m -> [ResultValue Int m] Source #

Represent the results as integer numbers.

resultsToIntListValues :: MonadDES m => Results m -> [ResultValue [Int] m] Source #

Represent the results as lists of integer numbers.

resultsToIntStatsValues :: MonadDES m => Results m -> [ResultValue (SamplingStats Int) m] Source #

Represent the results as statistics based on integer numbers.

resultsToIntStatsEitherValues :: MonadDES m => Results m -> [ResultValue (Either Int (SamplingStats Int)) m] Source #

Represent the results as statistics based on integer numbers and optimised for fast aggregation.

resultsToIntTimingStatsValues :: MonadDES m => Results m -> [ResultValue (TimingStats Int) m] Source #

Represent the results as timing statistics based on integer numbers.

resultsToDoubleValues :: MonadDES m => Results m -> [ResultValue Double m] Source #

Represent the results as double floating point numbers.

resultsToDoubleListValues :: MonadDES m => Results m -> [ResultValue [Double] m] Source #

Represent the results as lists of double floating point numbers.

resultsToDoubleStatsValues :: MonadDES m => Results m -> [ResultValue (SamplingStats Double) m] Source #

Represent the results as statistics based on double floating point numbers.

resultsToDoubleStatsEitherValues :: MonadDES m => Results m -> [ResultValue (Either Double (SamplingStats Double)) m] Source #

Represent the results as statistics based on double floating point numbers and optimised for fast aggregation.

resultsToDoubleTimingStatsValues :: MonadDES m => Results m -> [ResultValue (TimingStats Double) m] Source #

Represent the results as timing statistics based on double floating point numbers.

resultsToStringValues :: MonadDES m => Results m -> [ResultValue String m] Source #

Represent the results as string values.

data ResultPredefinedSignals m Source #

It representes the predefined signals provided by every simulation model.

Constructors

ResultPredefinedSignals 

Fields

newResultPredefinedSignals :: MonadDES m => Simulation m (ResultPredefinedSignals m) Source #

Create the predefined signals provided by every simulation model.

resultSignal :: MonadDES m => Results m -> ResultSignal m Source #

Return a signal emitted by the specified results.

pureResultSignal :: MonadDES m => ResultPredefinedSignals m -> ResultSignal m -> Signal m () Source #

Return a pure signal as a result of combination of the predefined signals with the specified result signal usually provided by the sources.

The signal returned is triggered when the source signal is triggered. The pure signal is also triggered in the integration time points if the source signal is unknown or it was combined with any unknown signal.

Definitions Focused on Extending the Library

type ResultSourceMap m = Map ResultName (ResultSource m) Source #

It associates the result sources with their names.

data ResultSource m Source #

Encapsulates the result source.

Constructors

ResultItemSource (ResultItem m)

The source consisting of a single item.

ResultObjectSource (ResultObject m)

An object-like source.

ResultVectorSource (ResultVector m)

A vector-like structure.

ResultSeparatorSource ResultSeparator

This is a separator text.

data ResultItem m Source #

The simulation results represented by a single item.

Constructors

ResultItemable a => ResultItem (a m) 

class ResultItemable a where Source #

Represents a type class for actual representing the items.

Methods

resultItemName :: a m -> ResultName Source #

The item name.

resultItemNamePath :: a m -> [ResultName] Source #

The item name path.

resultItemId :: a m -> ResultId Source #

The item identifier.

resultItemIdPath :: a m -> [ResultId] Source #

The item identifier path.

resultItemSignal :: MonadDES m => a m -> ResultSignal m Source #

Whether the item emits a signal.

resultItemExpansion :: MonadDES m => a m -> ResultSource m Source #

Return an expanded version of the item, for example, when the statistics item is exanded to an object having the corresponded properties for count, average, deviation, minimum, maximum and so on.

resultItemSummary :: MonadDES m => a m -> ResultSource m Source #

Return usually a short version of the item, i.e. its summary, but values of some data types such as statistics can be implicitly expanded to an object with the corresponded properties.

resultItemAsIntValue :: MonadDES m => a m -> Maybe (ResultValue Int m) Source #

Try to return integer numbers in time points.

resultItemAsIntListValue :: MonadDES m => a m -> Maybe (ResultValue [Int] m) Source #

Try to return lists of integer numbers in time points.

resultItemAsIntStatsValue :: MonadDES m => a m -> Maybe (ResultValue (SamplingStats Int) m) Source #

Try to return statistics based on integer numbers.

resultItemAsIntTimingStatsValue :: MonadDES m => a m -> Maybe (ResultValue (TimingStats Int) m) Source #

Try to return timing statistics based on integer numbers.

resultItemAsDoubleValue :: MonadDES m => a m -> Maybe (ResultValue Double m) Source #

Try to return double numbers in time points.

resultItemAsDoubleListValue :: MonadDES m => a m -> Maybe (ResultValue [Double] m) Source #

Try to return lists of double numbers in time points.

resultItemAsDoubleStatsValue :: MonadDES m => a m -> Maybe (ResultValue (SamplingStats Double) m) Source #

Try to return statistics based on double numbers.

resultItemAsDoubleTimingStatsValue :: MonadDES m => a m -> Maybe (ResultValue (TimingStats Double) m) Source #

Try to return timing statistics based on integer numbers.

resultItemAsStringValue :: MonadDES m => a m -> Maybe (ResultValue String m) Source #

Try to return string representations in time points.

Instances

ResultItemable (ResultValue Bool) Source # 
ResultItemable (ResultValue Double) Source # 
ResultItemable (ResultValue Int) Source # 
ResultItemable (ResultValue [Double]) Source # 

Methods

resultItemName :: ResultValue [Double] m -> ResultName Source #

resultItemNamePath :: ResultValue [Double] m -> [ResultName] Source #

resultItemId :: ResultValue [Double] m -> ResultId Source #

resultItemIdPath :: ResultValue [Double] m -> [ResultId] Source #

resultItemSignal :: MonadDES m => ResultValue [Double] m -> ResultSignal m Source #

resultItemExpansion :: MonadDES m => ResultValue [Double] m -> ResultSource m Source #

resultItemSummary :: MonadDES m => ResultValue [Double] m -> ResultSource m Source #

resultItemAsIntValue :: MonadDES m => ResultValue [Double] m -> Maybe (ResultValue Int m) Source #

resultItemAsIntListValue :: MonadDES m => ResultValue [Double] m -> Maybe (ResultValue [Int] m) Source #

resultItemAsIntStatsValue :: MonadDES m => ResultValue [Double] m -> Maybe (ResultValue (SamplingStats Int) m) Source #

resultItemAsIntTimingStatsValue :: MonadDES m => ResultValue [Double] m -> Maybe (ResultValue (TimingStats Int) m) Source #

resultItemAsDoubleValue :: MonadDES m => ResultValue [Double] m -> Maybe (ResultValue Double m) Source #

resultItemAsDoubleListValue :: MonadDES m => ResultValue [Double] m -> Maybe (ResultValue [Double] m) Source #

resultItemAsDoubleStatsValue :: MonadDES m => ResultValue [Double] m -> Maybe (ResultValue (SamplingStats Double) m) Source #

resultItemAsDoubleTimingStatsValue :: MonadDES m => ResultValue [Double] m -> Maybe (ResultValue (TimingStats Double) m) Source #

resultItemAsStringValue :: MonadDES m => ResultValue [Double] m -> Maybe (ResultValue String m) Source #

ResultItemable (ResultValue [Int]) Source # 
ResultItemable (ResultValue ()) Source # 
ResultItemable (ResultValue (SamplingStats Double)) Source # 

Methods

resultItemName :: ResultValue (SamplingStats Double) m -> ResultName Source #

resultItemNamePath :: ResultValue (SamplingStats Double) m -> [ResultName] Source #

resultItemId :: ResultValue (SamplingStats Double) m -> ResultId Source #

resultItemIdPath :: ResultValue (SamplingStats Double) m -> [ResultId] Source #

resultItemSignal :: MonadDES m => ResultValue (SamplingStats Double) m -> ResultSignal m Source #

resultItemExpansion :: MonadDES m => ResultValue (SamplingStats Double) m -> ResultSource m Source #

resultItemSummary :: MonadDES m => ResultValue (SamplingStats Double) m -> ResultSource m Source #

resultItemAsIntValue :: MonadDES m => ResultValue (SamplingStats Double) m -> Maybe (ResultValue Int m) Source #

resultItemAsIntListValue :: MonadDES m => ResultValue (SamplingStats Double) m -> Maybe (ResultValue [Int] m) Source #

resultItemAsIntStatsValue :: MonadDES m => ResultValue (SamplingStats Double) m -> Maybe (ResultValue (SamplingStats Int) m) Source #

resultItemAsIntTimingStatsValue :: MonadDES m => ResultValue (SamplingStats Double) m -> Maybe (ResultValue (TimingStats Int) m) Source #

resultItemAsDoubleValue :: MonadDES m => ResultValue (SamplingStats Double) m -> Maybe (ResultValue Double m) Source #

resultItemAsDoubleListValue :: MonadDES m => ResultValue (SamplingStats Double) m -> Maybe (ResultValue [Double] m) Source #

resultItemAsDoubleStatsValue :: MonadDES m => ResultValue (SamplingStats Double) m -> Maybe (ResultValue (SamplingStats Double) m) Source #

resultItemAsDoubleTimingStatsValue :: MonadDES m => ResultValue (SamplingStats Double) m -> Maybe (ResultValue (TimingStats Double) m) Source #

resultItemAsStringValue :: MonadDES m => ResultValue (SamplingStats Double) m -> Maybe (ResultValue String m) Source #

ResultItemable (ResultValue (SamplingStats Int)) Source # 

Methods

resultItemName :: ResultValue (SamplingStats Int) m -> ResultName Source #

resultItemNamePath :: ResultValue (SamplingStats Int) m -> [ResultName] Source #

resultItemId :: ResultValue (SamplingStats Int) m -> ResultId Source #

resultItemIdPath :: ResultValue (SamplingStats Int) m -> [ResultId] Source #

resultItemSignal :: MonadDES m => ResultValue (SamplingStats Int) m -> ResultSignal m Source #

resultItemExpansion :: MonadDES m => ResultValue (SamplingStats Int) m -> ResultSource m Source #

resultItemSummary :: MonadDES m => ResultValue (SamplingStats Int) m -> ResultSource m Source #

resultItemAsIntValue :: MonadDES m => ResultValue (SamplingStats Int) m -> Maybe (ResultValue Int m) Source #

resultItemAsIntListValue :: MonadDES m => ResultValue (SamplingStats Int) m -> Maybe (ResultValue [Int] m) Source #

resultItemAsIntStatsValue :: MonadDES m => ResultValue (SamplingStats Int) m -> Maybe (ResultValue (SamplingStats Int) m) Source #

resultItemAsIntTimingStatsValue :: MonadDES m => ResultValue (SamplingStats Int) m -> Maybe (ResultValue (TimingStats Int) m) Source #

resultItemAsDoubleValue :: MonadDES m => ResultValue (SamplingStats Int) m -> Maybe (ResultValue Double m) Source #

resultItemAsDoubleListValue :: MonadDES m => ResultValue (SamplingStats Int) m -> Maybe (ResultValue [Double] m) Source #

resultItemAsDoubleStatsValue :: MonadDES m => ResultValue (SamplingStats Int) m -> Maybe (ResultValue (SamplingStats Double) m) Source #

resultItemAsDoubleTimingStatsValue :: MonadDES m => ResultValue (SamplingStats Int) m -> Maybe (ResultValue (TimingStats Double) m) Source #

resultItemAsStringValue :: MonadDES m => ResultValue (SamplingStats Int) m -> Maybe (ResultValue String m) Source #

ResultItemable (ResultValue (TimingStats Double)) Source # 

Methods

resultItemName :: ResultValue (TimingStats Double) m -> ResultName Source #

resultItemNamePath :: ResultValue (TimingStats Double) m -> [ResultName] Source #

resultItemId :: ResultValue (TimingStats Double) m -> ResultId Source #

resultItemIdPath :: ResultValue (TimingStats Double) m -> [ResultId] Source #

resultItemSignal :: MonadDES m => ResultValue (TimingStats Double) m -> ResultSignal m Source #

resultItemExpansion :: MonadDES m => ResultValue (TimingStats Double) m -> ResultSource m Source #

resultItemSummary :: MonadDES m => ResultValue (TimingStats Double) m -> ResultSource m Source #

resultItemAsIntValue :: MonadDES m => ResultValue (TimingStats Double) m -> Maybe (ResultValue Int m) Source #

resultItemAsIntListValue :: MonadDES m => ResultValue (TimingStats Double) m -> Maybe (ResultValue [Int] m) Source #

resultItemAsIntStatsValue :: MonadDES m => ResultValue (TimingStats Double) m -> Maybe (ResultValue (SamplingStats Int) m) Source #

resultItemAsIntTimingStatsValue :: MonadDES m => ResultValue (TimingStats Double) m -> Maybe (ResultValue (TimingStats Int) m) Source #

resultItemAsDoubleValue :: MonadDES m => ResultValue (TimingStats Double) m -> Maybe (ResultValue Double m) Source #

resultItemAsDoubleListValue :: MonadDES m => ResultValue (TimingStats Double) m -> Maybe (ResultValue [Double] m) Source #

resultItemAsDoubleStatsValue :: MonadDES m => ResultValue (TimingStats Double) m -> Maybe (ResultValue (SamplingStats Double) m) Source #

resultItemAsDoubleTimingStatsValue :: MonadDES m => ResultValue (TimingStats Double) m -> Maybe (ResultValue (TimingStats Double) m) Source #

resultItemAsStringValue :: MonadDES m => ResultValue (TimingStats Double) m -> Maybe (ResultValue String m) Source #

ResultItemable (ResultValue (TimingStats Int)) Source # 

Methods

resultItemName :: ResultValue (TimingStats Int) m -> ResultName Source #

resultItemNamePath :: ResultValue (TimingStats Int) m -> [ResultName] Source #

resultItemId :: ResultValue (TimingStats Int) m -> ResultId Source #

resultItemIdPath :: ResultValue (TimingStats Int) m -> [ResultId] Source #

resultItemSignal :: MonadDES m => ResultValue (TimingStats Int) m -> ResultSignal m Source #

resultItemExpansion :: MonadDES m => ResultValue (TimingStats Int) m -> ResultSource m Source #

resultItemSummary :: MonadDES m => ResultValue (TimingStats Int) m -> ResultSource m Source #

resultItemAsIntValue :: MonadDES m => ResultValue (TimingStats Int) m -> Maybe (ResultValue Int m) Source #

resultItemAsIntListValue :: MonadDES m => ResultValue (TimingStats Int) m -> Maybe (ResultValue [Int] m) Source #

resultItemAsIntStatsValue :: MonadDES m => ResultValue (TimingStats Int) m -> Maybe (ResultValue (SamplingStats Int) m) Source #

resultItemAsIntTimingStatsValue :: MonadDES m => ResultValue (TimingStats Int) m -> Maybe (ResultValue (TimingStats Int) m) Source #

resultItemAsDoubleValue :: MonadDES m => ResultValue (TimingStats Int) m -> Maybe (ResultValue Double m) Source #

resultItemAsDoubleListValue :: MonadDES m => ResultValue (TimingStats Int) m -> Maybe (ResultValue [Double] m) Source #

resultItemAsDoubleStatsValue :: MonadDES m => ResultValue (TimingStats Int) m -> Maybe (ResultValue (SamplingStats Double) m) Source #

resultItemAsDoubleTimingStatsValue :: MonadDES m => ResultValue (TimingStats Int) m -> Maybe (ResultValue (TimingStats Double) m) Source #

resultItemAsStringValue :: MonadDES m => ResultValue (TimingStats Int) m -> Maybe (ResultValue String m) Source #

ResultItemable (ResultValue String) Source # 
ResultItemable (ResultValue StaticPriorities) Source # 

Methods

resultItemName :: ResultValue StaticPriorities m -> ResultName Source #

resultItemNamePath :: ResultValue StaticPriorities m -> [ResultName] Source #

resultItemId :: ResultValue StaticPriorities m -> ResultId Source #

resultItemIdPath :: ResultValue StaticPriorities m -> [ResultId] Source #

resultItemSignal :: MonadDES m => ResultValue StaticPriorities m -> ResultSignal m Source #

resultItemExpansion :: MonadDES m => ResultValue StaticPriorities m -> ResultSource m Source #

resultItemSummary :: MonadDES m => ResultValue StaticPriorities m -> ResultSource m Source #

resultItemAsIntValue :: MonadDES m => ResultValue StaticPriorities m -> Maybe (ResultValue Int m) Source #

resultItemAsIntListValue :: MonadDES m => ResultValue StaticPriorities m -> Maybe (ResultValue [Int] m) Source #

resultItemAsIntStatsValue :: MonadDES m => ResultValue StaticPriorities m -> Maybe (ResultValue (SamplingStats Int) m) Source #

resultItemAsIntTimingStatsValue :: MonadDES m => ResultValue StaticPriorities m -> Maybe (ResultValue (TimingStats Int) m) Source #

resultItemAsDoubleValue :: MonadDES m => ResultValue StaticPriorities m -> Maybe (ResultValue Double m) Source #

resultItemAsDoubleListValue :: MonadDES m => ResultValue StaticPriorities m -> Maybe (ResultValue [Double] m) Source #

resultItemAsDoubleStatsValue :: MonadDES m => ResultValue StaticPriorities m -> Maybe (ResultValue (SamplingStats Double) m) Source #

resultItemAsDoubleTimingStatsValue :: MonadDES m => ResultValue StaticPriorities m -> Maybe (ResultValue (TimingStats Double) m) Source #

resultItemAsStringValue :: MonadDES m => ResultValue StaticPriorities m -> Maybe (ResultValue String m) Source #

ResultItemable (ResultValue SIRO) Source # 
ResultItemable (ResultValue LCFS) Source # 
ResultItemable (ResultValue FCFS) Source # 

resultItemAsIntStatsEitherValue :: (MonadDES m, ResultItemable a) => a m -> Maybe (ResultValue (Either Int (SamplingStats Int)) m) Source #

Try to return a version optimised for fast aggregation of the statistics based on integer numbers.

resultItemAsDoubleStatsEitherValue :: (MonadDES m, ResultItemable a) => a m -> Maybe (ResultValue (Either Double (SamplingStats Double)) m) Source #

Try to return a version optimised for fast aggregation of the statistics based on double floating point numbers.

resultItemToIntValue :: (MonadDES m, ResultItemable a) => a m -> ResultValue Int m Source #

Return integer numbers in time points.

resultItemToIntListValue :: (MonadDES m, ResultItemable a) => a m -> ResultValue [Int] m Source #

Return lists of integer numbers in time points.

resultItemToIntStatsValue :: (MonadDES m, ResultItemable a) => a m -> ResultValue (SamplingStats Int) m Source #

Return statistics based on integer numbers.

resultItemToIntStatsEitherValue :: (MonadDES m, ResultItemable a) => a m -> ResultValue (Either Int (SamplingStats Int)) m Source #

Return a version optimised for fast aggregation of the statistics based on integer numbers.

resultItemToIntTimingStatsValue :: (MonadDES m, ResultItemable a) => a m -> ResultValue (TimingStats Int) m Source #

Return timing statistics based on integer numbers.

resultItemToDoubleValue :: (MonadDES m, ResultItemable a) => a m -> ResultValue Double m Source #

Return double numbers in time points.

resultItemToDoubleListValue :: (MonadDES m, ResultItemable a) => a m -> ResultValue [Double] m Source #

Return lists of double numbers in time points.

resultItemToDoubleStatsValue :: (MonadDES m, ResultItemable a) => a m -> ResultValue (SamplingStats Double) m Source #

Return statistics based on double numbers.

resultItemToDoubleStatsEitherValue :: (MonadDES m, ResultItemable a) => a m -> ResultValue (Either Double (SamplingStats Double)) m Source #

Return a version optimised for fast aggregation of the statistics based on double floating point numbers.

resultItemToDoubleTimingStatsValue :: (MonadDES m, ResultItemable a) => a m -> ResultValue (TimingStats Double) m Source #

Return timing statistics based on integer numbers.

resultItemToStringValue :: (MonadDES m, ResultItemable a) => a m -> ResultValue String m Source #

Return string representations in time points.

data ResultObject m Source #

The simulation results represented by an object having properties.

Constructors

ResultObject 

Fields

data ResultProperty m Source #

The object property containing the simulation results.

Constructors

ResultProperty 

Fields

data ResultVector m Source #

The simulation results represented by a vector.

Constructors

ResultVector 

Fields

memoResultVectorSignal :: MonadDES m => ResultVector m -> ResultVector m Source #

Calculate the result vector signal and memoize it in a new vector.

memoResultVectorSummary :: MonadDES m => ResultVector m -> ResultVector m Source #

Calculate the result vector summary and memoize it in a new vector.

data ResultSeparator Source #

It separates the simulation results when printing.

Constructors

ResultSeparator 

Fields

data ResultContainer e m Source #

A container of the simulation results such as queue, server or array.

Constructors

ResultContainer 

Fields

resultContainerPropertySource Source #

Arguments

:: ResultItemable (ResultValue b) 
=> ResultContainer a m

the container

-> ResultName

the property label

-> ResultId

the property identifier

-> (a -> ResultData b m)

get the specified data from the container

-> (a -> ResultSignal m)

get the data signal from the container

-> ResultSource m 

Create a new property source by the specified container.

resultContainerConstProperty Source #

Arguments

:: (MonadDES m, ResultItemable (ResultValue b)) 
=> ResultContainer a m

the container

-> ResultName

the property label

-> ResultId

the property identifier

-> (a -> b)

get the specified data from the container

-> ResultProperty m 

Create a constant property by the specified container.

resultContainerIntegProperty Source #

Arguments

:: (MonadDES m, ResultItemable (ResultValue b)) 
=> ResultContainer a m

the container

-> ResultName

the property label

-> ResultId

the property identifier

-> (a -> Event m b)

get the specified data from the container

-> ResultProperty m 

Create by the specified container a property that changes in the integration time points, or it is supposed to be such one.

resultContainerProperty Source #

Arguments

:: (MonadDES m, ResultItemable (ResultValue b)) 
=> ResultContainer a m

the container

-> ResultName

the property label

-> ResultId

the property identifier

-> (a -> Event m b)

get the specified data from the container

-> (a -> Signal m ())

get a signal triggered when changing data.

-> ResultProperty m 

Create a property by the specified container.

resultContainerMapProperty Source #

Arguments

:: (MonadDES m, ResultItemable (ResultValue b)) 
=> ResultContainer (ResultData a m) m

the container

-> ResultName

the property label

-> ResultId

the property identifier

-> (a -> b)

recompute the specified data

-> ResultProperty m 

Create by the specified container a mapped property which is recomputed each time again and again.

resultValueToContainer :: ResultValue a m -> ResultContainer (ResultData a m) m Source #

Convert the result value to a container with the specified object identifier.

resultContainerToValue :: ResultContainer (ResultData a m) m -> ResultValue a m Source #

Convert the result container to a value.

type ResultData e m = Event m e Source #

Represents the very simulation results.

data ResultSignal m Source #

Whether an object containing the results emits a signal notifying about change of data.

Constructors

EmptyResultSignal

There is no signal at all.

UnknownResultSignal

The signal is unknown, but the entity probably changes.

ResultSignal (Signal m ())

When the signal is precisely specified.

ResultSignalMix (Signal m ())

When the specified signal was combined with unknown signal.

maybeResultSignal :: Maybe (Signal m ()) -> ResultSignal m Source #

Construct a new result signal by the specified optional pure signal.

textResultSource :: String -> ResultSource m Source #

Return an arbitrary text as a separator source.

timeResultSource :: MonadDES m => ResultSource m Source #

Return the source of the modeling time.

resultSourceToIntValues :: MonadDES m => ResultSource m -> [ResultValue Int m] Source #

Represent the result source as integer numbers.

resultSourceToIntListValues :: MonadDES m => ResultSource m -> [ResultValue [Int] m] Source #

Represent the result source as lists of integer numbers.

resultSourceToIntStatsValues :: MonadDES m => ResultSource m -> [ResultValue (SamplingStats Int) m] Source #

Represent the result source as statistics based on integer numbers.

resultSourceToIntStatsEitherValues :: MonadDES m => ResultSource m -> [ResultValue (Either Int (SamplingStats Int)) m] Source #

Represent the result source as statistics based on integer numbers and optimised for fast aggregation.

resultSourceToIntTimingStatsValues :: MonadDES m => ResultSource m -> [ResultValue (TimingStats Int) m] Source #

Represent the result source as timing statistics based on integer numbers.

resultSourceToDoubleValues :: MonadDES m => ResultSource m -> [ResultValue Double m] Source #

Represent the result source as double floating point numbers.

resultSourceToDoubleListValues :: MonadDES m => ResultSource m -> [ResultValue [Double] m] Source #

Represent the result source as lists of double floating point numbers.

resultSourceToDoubleStatsValues :: MonadDES m => ResultSource m -> [ResultValue (SamplingStats Double) m] Source #

Represent the result source as statistics based on double floating point numbers.

resultSourceToDoubleStatsEitherValues :: MonadDES m => ResultSource m -> [ResultValue (Either Double (SamplingStats Double)) m] Source #

Represent the result source as statistics based on double floating point numbers and optimised for fast aggregation.

resultSourceToDoubleTimingStatsValues :: MonadDES m => ResultSource m -> [ResultValue (TimingStats Double) m] Source #

Represent the result source as timing statistics based on double floating point numbers.

resultSourceToStringValues :: MonadDES m => ResultSource m -> [ResultValue String m] Source #

Represent the result source as string values.

resultSourceMap :: Results m -> ResultSourceMap m Source #

The sources of simulation results as a map of associated names.

resultSourceList :: Results m -> [ResultSource m] Source #

The sources of simulation results as an ordered list.

composeResults :: (ResultSource m -> [ResultSource m]) -> ResultTransform m Source #

Compose the results using the specified transformation function.

computeResultValue Source #

Arguments

:: ResultComputing t m 
=> ResultName

the result name

-> [ResultName]

the result name path

-> ResultId

the result identifier

-> [ResultId]

the result identifier path

-> t m a

the result computation

-> ResultValue a m 

Return a new result value by the specified name, identifier and computation.