Copyright | Copyright (c) 2009-2014, David Sorokin <david.sorokin@gmail.com> |
---|---|
License | BSD3 |
Maintainer | David Sorokin <david.sorokin@gmail.com> |
Stability | experimental |
Safe Haskell | None |
Language | Haskell2010 |
Tested with: GHC 7.8.3
The module allows exporting the simulation results from the model.
- data Results
- type ResultTransform = Results -> Results
- type ResultName = String
- class ResultProvider p where
- resultSource :: ResultName -> ResultDescription -> p -> ResultSource
- resultSource' :: ResultName -> ResultId -> p -> ResultSource
- results :: [ResultSource] -> Results
- expandResults :: ResultTransform
- resultSummary :: ResultTransform
- resultByName :: ResultName -> ResultTransform
- resultByProperty :: ResultName -> ResultTransform
- resultById :: ResultId -> ResultTransform
- resultByIndex :: Int -> ResultTransform
- resultBySubscript :: ResultName -> ResultTransform
- class ResultComputing m where
- computeResultData :: m a -> ResultData a
- computeResultSignal :: m a -> ResultSignal
- data ResultComputation a = ResultComputation {}
- data ResultListWithSubscript p = ResultListWithSubscript [p] [String]
- data ResultArrayWithSubscript i p = ResultArrayWithSubscript (Array i p) (Array i String)
- data ResultVectorWithSubscript p = ResultVectorWithSubscript (Vector p) (Vector String)
- data ResultExtract e = ResultExtract {}
- extractIntResults :: Results -> [ResultExtract Int]
- extractIntListResults :: Results -> [ResultExtract [Int]]
- extractIntStatsResults :: Results -> [ResultExtract (SamplingStats Int)]
- extractIntStatsEitherResults :: Results -> [ResultExtract (Either Int (SamplingStats Int))]
- extractIntTimingStatsResults :: Results -> [ResultExtract (TimingStats Int)]
- extractDoubleResults :: Results -> [ResultExtract Double]
- extractDoubleListResults :: Results -> [ResultExtract [Double]]
- extractDoubleStatsResults :: Results -> [ResultExtract (SamplingStats Double)]
- extractDoubleStatsEitherResults :: Results -> [ResultExtract (Either Double (SamplingStats Double))]
- extractDoubleTimingStatsResults :: Results -> [ResultExtract (TimingStats Double)]
- extractStringResults :: Results -> [ResultExtract String]
- data ResultPredefinedSignals = ResultPredefinedSignals {}
- newResultPredefinedSignals :: Simulation ResultPredefinedSignals
- resultSignal :: Results -> ResultSignal
- pureResultSignal :: ResultPredefinedSignals -> ResultSignal -> Signal ()
- type ResultSourceMap = Map ResultName ResultSource
- data ResultSource
- data ResultItem = forall a . ResultItemable a => ResultItem a
- class ResultItemable a where
- resultItemName :: a -> ResultName
- resultItemId :: a -> ResultId
- resultItemSignal :: a -> ResultSignal
- resultItemExpansion :: a -> ResultSource
- resultItemSummary :: a -> ResultSource
- resultItemToIntValue :: a -> ResultValue Int
- resultItemToIntListValue :: a -> ResultValue [Int]
- resultItemToIntStatsValue :: a -> ResultValue (SamplingStats Int)
- resultItemToIntTimingStatsValue :: a -> ResultValue (TimingStats Int)
- resultItemToDoubleValue :: a -> ResultValue Double
- resultItemToDoubleListValue :: a -> ResultValue [Double]
- resultItemToDoubleStatsValue :: a -> ResultValue (SamplingStats Double)
- resultItemToDoubleTimingStatsValue :: a -> ResultValue (TimingStats Double)
- resultItemToStringValue :: a -> ResultValue String
- resultItemToIntStatsEitherValue :: ResultItemable a => a -> ResultValue (Either Int (SamplingStats Int))
- resultItemToDoubleStatsEitherValue :: ResultItemable a => a -> ResultValue (Either Double (SamplingStats Double))
- data ResultObject = ResultObject {}
- data ResultProperty = ResultProperty {}
- data ResultVector = ResultVector {}
- memoResultVectorSignal :: ResultVector -> ResultVector
- memoResultVectorSummary :: ResultVector -> ResultVector
- data ResultSeparator = ResultSeparator {}
- data ResultValue e = ResultValue {}
- voidResultValue :: ResultValue a -> ResultValue b
- data ResultContainer e = ResultContainer {}
- resultContainerPropertySource :: ResultItemable (ResultValue b) => ResultContainer a -> ResultName -> ResultId -> (a -> ResultData b) -> (a -> ResultSignal) -> ResultSource
- resultContainerConstProperty :: ResultItemable (ResultValue b) => ResultContainer a -> ResultName -> ResultId -> (a -> b) -> ResultProperty
- resultContainerIntegProperty :: ResultItemable (ResultValue b) => ResultContainer a -> ResultName -> ResultId -> (a -> Event b) -> ResultProperty
- resultContainerProperty :: ResultItemable (ResultValue b) => ResultContainer a -> ResultName -> ResultId -> (a -> Event b) -> (a -> Signal ()) -> ResultProperty
- resultContainerMapProperty :: ResultItemable (ResultValue b) => ResultContainer (ResultData a) -> ResultName -> ResultId -> (a -> b) -> ResultProperty
- resultValueToContainer :: ResultValue a -> ResultContainer (ResultData a)
- resultContainerToValue :: ResultContainer (ResultData a) -> ResultValue a
- type ResultData e = Maybe (Event e)
- data ResultSignal
- = EmptyResultSignal
- | UnknownResultSignal
- | ResultSignal (Signal ())
- | ResultSignalMix (Signal ())
- maybeResultSignal :: Maybe (Signal ()) -> ResultSignal
- textResultSource :: String -> ResultSource
- timeResultSource :: ResultSource
- resultSourceToIntValues :: ResultSource -> [ResultValue Int]
- resultSourceToIntListValues :: ResultSource -> [ResultValue [Int]]
- resultSourceToIntStatsValues :: ResultSource -> [ResultValue (SamplingStats Int)]
- resultSourceToIntStatsEitherValues :: ResultSource -> [ResultValue (Either Int (SamplingStats Int))]
- resultSourceToIntTimingStatsValues :: ResultSource -> [ResultValue (TimingStats Int)]
- resultSourceToDoubleValues :: ResultSource -> [ResultValue Double]
- resultSourceToDoubleListValues :: ResultSource -> [ResultValue [Double]]
- resultSourceToDoubleStatsValues :: ResultSource -> [ResultValue (SamplingStats Double)]
- resultSourceToDoubleStatsEitherValues :: ResultSource -> [ResultValue (Either Double (SamplingStats Double))]
- resultSourceToDoubleTimingStatsValues :: ResultSource -> [ResultValue (TimingStats Double)]
- resultSourceToStringValues :: ResultSource -> [ResultValue String]
- resultSourceMap :: Results -> ResultSourceMap
- resultSourceList :: Results -> [ResultSource]
- resultsToIntValues :: Results -> [ResultValue Int]
- resultsToIntListValues :: Results -> [ResultValue [Int]]
- resultsToIntStatsValues :: Results -> [ResultValue (SamplingStats Int)]
- resultsToIntStatsEitherValues :: Results -> [ResultValue (Either Int (SamplingStats Int))]
- resultsToIntTimingStatsValues :: Results -> [ResultValue (TimingStats Int)]
- resultsToDoubleValues :: Results -> [ResultValue Double]
- resultsToDoubleListValues :: Results -> [ResultValue [Double]]
- resultsToDoubleStatsValues :: Results -> [ResultValue (SamplingStats Double)]
- resultsToDoubleStatsEitherValues :: Results -> [ResultValue (Either Double (SamplingStats Double))]
- resultsToDoubleTimingStatsValues :: Results -> [ResultValue (TimingStats Double)]
- resultsToStringValues :: Results -> [ResultValue String]
- composeResults :: (ResultSource -> [ResultSource]) -> ResultTransform
- computeResultValue :: ResultComputing m => ResultName -> ResultId -> m a -> ResultValue a
Definitions Focused on Modeling
type ResultTransform = Results -> Results Source
It transforms the results of simulation.
type ResultName = String Source
A name used for indentifying the results when generating output.
class ResultProvider p 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.
resultSource :: ResultName -> ResultDescription -> p -> ResultSource Source
Return the source of simulation results by the specified name, description and provider.
resultSource' :: ResultName -> ResultId -> p -> ResultSource Source
Return the source of simulation results by the specified name, identifier and provider.
results :: [ResultSource] -> Results Source
Prepare the simulation results.
expandResults :: ResultTransform 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 :: ResultTransform 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 Source
Take a result by its name.
resultByProperty :: ResultName -> ResultTransform 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 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 Source
Take a result from the vector by the specified integer index.
resultBySubscript :: ResultName -> ResultTransform Source
Take a result from the vector by the specified string subscript.
class ResultComputing m where Source
Represents a computation that can return the simulation data.
computeResultData :: m a -> ResultData a Source
Compute data with the results of simulation.
computeResultSignal :: m a -> ResultSignal Source
Return the signal triggered when data change if such a signal exists.
data ResultComputation a Source
Represents a computation that can return the simulation data.
ResultComputation | |
|
data ResultListWithSubscript p Source
Represents a list with the specified subscript.
data ResultArrayWithSubscript i p Source
Represents an array with the specified subscript.
ResultArrayWithSubscript (Array i p) (Array i String) |
(Show i, Ix i, ResultProvider p) => ResultProvider (ResultArrayWithSubscript i p) |
data ResultVectorWithSubscript p Source
Represents a vector with the specified subscript.
Definitions Focused on Using the Library
data ResultExtract e Source
Defines a final result extract: its name, values and other data.
ResultExtract | |
|
extractIntResults :: Results -> [ResultExtract Int] Source
Extract the results as integer values, or raise a conversion error.
extractIntListResults :: Results -> [ResultExtract [Int]] Source
Extract the results as lists of integer values, or raise a conversion error.
extractIntStatsResults :: Results -> [ResultExtract (SamplingStats Int)] Source
Extract the results as statistics based on integer values, or raise a conversion error.
extractIntStatsEitherResults :: Results -> [ResultExtract (Either Int (SamplingStats Int))] Source
Extract the results as statistics based on integer values and optimised for fast aggregation, or raise a conversion error.
extractIntTimingStatsResults :: Results -> [ResultExtract (TimingStats Int)] Source
Extract the results as timing statistics based on integer values, or raise a conversion error.
extractDoubleResults :: Results -> [ResultExtract Double] Source
Extract the results as double floating point values, or raise a conversion error.
extractDoubleListResults :: Results -> [ResultExtract [Double]] Source
Extract the results as lists of double floating point values, or raise a conversion error.
extractDoubleStatsResults :: Results -> [ResultExtract (SamplingStats Double)] Source
Extract the results as statistics based on double floating point values, or raise a conversion error.
extractDoubleStatsEitherResults :: Results -> [ResultExtract (Either Double (SamplingStats Double))] Source
Extract the results as statistics based on double floating point values and optimised for fast aggregation, or raise a conversion error.
extractDoubleTimingStatsResults :: Results -> [ResultExtract (TimingStats Double)] Source
Extract the results as timing statistics based on double floating point values, or raise a conversion error.
extractStringResults :: Results -> [ResultExtract String] Source
Extract the results as string values, or raise a conversion error.
data ResultPredefinedSignals Source
It representes the predefined signals provided by every simulation model.
ResultPredefinedSignals | |
|
newResultPredefinedSignals :: Simulation ResultPredefinedSignals Source
Create the predefined signals provided by every simulation model.
resultSignal :: Results -> ResultSignal Source
Return a signal emitted by the specified results.
pureResultSignal :: ResultPredefinedSignals -> ResultSignal -> Signal () 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 = Map ResultName ResultSource Source
It associates the result sources with their names.
data ResultSource Source
Encapsulates the result source.
ResultItemSource ResultItem | The source consisting of a single item. |
ResultObjectSource ResultObject | An object-like source. |
ResultVectorSource ResultVector | A vector-like structure. |
ResultSeparatorSource ResultSeparator | This is a separator text. |
data ResultItem Source
The simulation results represented by a single item.
forall a . ResultItemable a => ResultItem a |
class ResultItemable a where Source
Represents a type class for actual representing the items.
resultItemName :: a -> ResultName Source
The item name.
resultItemId :: a -> ResultId Source
The item identifier.
resultItemSignal :: a -> ResultSignal Source
Whether the item emits a signal.
resultItemExpansion :: a -> ResultSource 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 :: a -> ResultSource 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.
resultItemToIntValue :: a -> ResultValue Int Source
Return integer numbers in time points.
resultItemToIntListValue :: a -> ResultValue [Int] Source
Return lists of integer numbers in time points.
resultItemToIntStatsValue :: a -> ResultValue (SamplingStats Int) Source
Return statistics based on integer numbers.
resultItemToIntTimingStatsValue :: a -> ResultValue (TimingStats Int) Source
Return timing statistics based on integer numbers.
resultItemToDoubleValue :: a -> ResultValue Double Source
Return double numbers in time points.
resultItemToDoubleListValue :: a -> ResultValue [Double] Source
Return lists of double numbers in time points.
resultItemToDoubleStatsValue :: a -> ResultValue (SamplingStats Double) Source
Return statistics based on double numbers.
resultItemToDoubleTimingStatsValue :: a -> ResultValue (TimingStats Double) Source
Return timing statistics based on integer numbers.
resultItemToStringValue :: a -> ResultValue String Source
Return string representations in time points.
resultItemToIntStatsEitherValue :: ResultItemable a => a -> ResultValue (Either Int (SamplingStats Int)) Source
Return a version optimised for fast aggregation of the statistics based on integer numbers.
resultItemToDoubleStatsEitherValue :: ResultItemable a => a -> ResultValue (Either Double (SamplingStats Double)) Source
Return a version optimised for fast aggregation of the statistics based on double floating point numbers.
data ResultObject Source
The simulation results represented by an object having properties.
ResultObject | |
|
data ResultProperty Source
The object property containing the simulation results.
ResultProperty | |
|
data ResultVector Source
The simulation results represented by a vector.
ResultVector | |
|
memoResultVectorSignal :: ResultVector -> ResultVector Source
Calculate the result vector signal and memoize it in a new vector.
memoResultVectorSummary :: ResultVector -> ResultVector Source
Calculate the result vector summary and memoize it in a new vector.
data ResultSeparator Source
It separates the simulation results when printing.
ResultSeparator | |
|
data ResultValue e Source
A parameterised value that actually represents a generalised result item that have no parametric type.
ResultValue | |
|
voidResultValue :: ResultValue a -> ResultValue b Source
Return a new value with the discarded simulation results.
data ResultContainer e Source
A container of the simulation results such as queue, server or array.
ResultContainer | |
|
resultContainerPropertySource Source
:: ResultItemable (ResultValue b) | |
=> ResultContainer a | the container |
-> ResultName | the property label |
-> ResultId | the property identifier |
-> (a -> ResultData b) | get the specified data from the container |
-> (a -> ResultSignal) | get the data signal from the container |
-> ResultSource |
Create a new property source by the specified container.
resultContainerConstProperty Source
:: ResultItemable (ResultValue b) | |
=> ResultContainer a | the container |
-> ResultName | the property label |
-> ResultId | the property identifier |
-> (a -> b) | get the specified data from the container |
-> ResultProperty |
Create a constant property by the specified container.
resultContainerIntegProperty Source
:: ResultItemable (ResultValue b) | |
=> ResultContainer a | the container |
-> ResultName | the property label |
-> ResultId | the property identifier |
-> (a -> Event b) | get the specified data from the container |
-> ResultProperty |
Create by the specified container a property that changes in the integration time points, or it is supposed to be such one.
resultContainerProperty Source
:: ResultItemable (ResultValue b) | |
=> ResultContainer a | the container |
-> ResultName | the property label |
-> ResultId | the property identifier |
-> (a -> Event b) | get the specified data from the container |
-> (a -> Signal ()) | get a signal triggered when changing data. |
-> ResultProperty |
Create a property by the specified container.
resultContainerMapProperty Source
:: ResultItemable (ResultValue b) | |
=> ResultContainer (ResultData a) | the container |
-> ResultName | the property label |
-> ResultId | the property identifier |
-> (a -> b) | recompute the specified data |
-> ResultProperty |
Create by the specified container a mapped property which is recomputed each time again and again.
resultValueToContainer :: ResultValue a -> ResultContainer (ResultData a) Source
Convert the result value to a container with the specified object identifier.
resultContainerToValue :: ResultContainer (ResultData a) -> ResultValue a Source
Convert the result container to a value.
type ResultData e = Maybe (Event e) Source
Represents the very simulation results.
data ResultSignal Source
Whether an object containing the results emits a signal notifying about change of data.
EmptyResultSignal | There is no signal at all. |
UnknownResultSignal | The signal is unknown, but the entity probably changes. |
ResultSignal (Signal ()) | When the signal is precisely specified. |
ResultSignalMix (Signal ()) | When the specified signal was combined with unknown signal. |
maybeResultSignal :: Maybe (Signal ()) -> ResultSignal Source
Construct a new result signal by the specified optional pure signal.
textResultSource :: String -> ResultSource Source
Return an arbitrary text as a separator source.
timeResultSource :: ResultSource Source
Return the source of the modeling time.
resultSourceToIntValues :: ResultSource -> [ResultValue Int] Source
Represent the result source as integer numbers.
resultSourceToIntListValues :: ResultSource -> [ResultValue [Int]] Source
Represent the result source as lists of integer numbers.
resultSourceToIntStatsValues :: ResultSource -> [ResultValue (SamplingStats Int)] Source
Represent the result source as statistics based on integer numbers.
resultSourceToIntStatsEitherValues :: ResultSource -> [ResultValue (Either Int (SamplingStats Int))] Source
Represent the result source as statistics based on integer numbers and optimised for fast aggregation.
resultSourceToIntTimingStatsValues :: ResultSource -> [ResultValue (TimingStats Int)] Source
Represent the result source as timing statistics based on integer numbers.
resultSourceToDoubleValues :: ResultSource -> [ResultValue Double] Source
Represent the result source as double floating point numbers.
resultSourceToDoubleListValues :: ResultSource -> [ResultValue [Double]] Source
Represent the result source as lists of double floating point numbers.
resultSourceToDoubleStatsValues :: ResultSource -> [ResultValue (SamplingStats Double)] Source
Represent the result source as statistics based on double floating point numbers.
resultSourceToDoubleStatsEitherValues :: ResultSource -> [ResultValue (Either Double (SamplingStats Double))] Source
Represent the result source as statistics based on double floating point numbers and optimised for fast aggregation.
resultSourceToDoubleTimingStatsValues :: ResultSource -> [ResultValue (TimingStats Double)] Source
Represent the result source as timing statistics based on double floating point numbers.
resultSourceToStringValues :: ResultSource -> [ResultValue String] Source
Represent the result source as string values.
resultSourceMap :: Results -> ResultSourceMap Source
The sources of simulation results as a map of associated names.
resultSourceList :: Results -> [ResultSource] Source
The sources of simulation results as an ordered list.
resultsToIntValues :: Results -> [ResultValue Int] Source
Represent the results as integer numbers.
resultsToIntListValues :: Results -> [ResultValue [Int]] Source
Represent the results as lists of integer numbers.
resultsToIntStatsValues :: Results -> [ResultValue (SamplingStats Int)] Source
Represent the results as statistics based on integer numbers.
resultsToIntStatsEitherValues :: Results -> [ResultValue (Either Int (SamplingStats Int))] Source
Represent the results as statistics based on integer numbers and optimised for fast aggregation.
resultsToIntTimingStatsValues :: Results -> [ResultValue (TimingStats Int)] Source
Represent the results as timing statistics based on integer numbers.
resultsToDoubleValues :: Results -> [ResultValue Double] Source
Represent the results as double floating point numbers.
resultsToDoubleListValues :: Results -> [ResultValue [Double]] Source
Represent the results as lists of double floating point numbers.
resultsToDoubleStatsValues :: Results -> [ResultValue (SamplingStats Double)] Source
Represent the results as statistics based on double floating point numbers.
resultsToDoubleStatsEitherValues :: Results -> [ResultValue (Either Double (SamplingStats Double))] Source
Represent the results as statistics based on double floating point numbers and optimised for fast aggregation.
resultsToDoubleTimingStatsValues :: Results -> [ResultValue (TimingStats Double)] Source
Represent the results as timing statistics based on double floating point numbers.
resultsToStringValues :: Results -> [ResultValue String] Source
Represent the results as string values.
composeResults :: (ResultSource -> [ResultSource]) -> ResultTransform Source
Compose the results using the specified transformation function.
:: ResultComputing m | |
=> ResultName | the result name |
-> ResultId | the result identifier |
-> m a | the result computation |
-> ResultValue a |
Return a new result value by the specified name, identifier and computation.