aivika 6.1.1 → 6.2
raw patch · 7 files changed
+43/−14 lines, 7 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Simulation.Aivika.Results.Locale: SamplingStatsNormalisedId :: ResultId
+ Simulation.Aivika.Results.Locale.Types: SamplingStatsNormalisedId :: ResultId
+ Simulation.Aivika.Statistics: [samplingStatsNormalised] :: SamplingStats a -> !Bool
- Simulation.Aivika.Composite: class CompositeLift m
+ Simulation.Aivika.Composite: class CompositeLift (m :: Type -> Type)
- Simulation.Aivika.Dynamics: class DynamicsLift m
+ Simulation.Aivika.Dynamics: class DynamicsLift (m :: Type -> Type)
- Simulation.Aivika.Event: class EventLift m
+ Simulation.Aivika.Event: class EventLift (m :: Type -> Type)
- Simulation.Aivika.Generator: Generator :: (Double -> Double -> IO Double) -> (Int -> Int -> IO Int) -> (Double -> Double -> Double -> IO Double) -> (Double -> Double -> IO Double) -> (Double -> Double -> IO Double) -> (Double -> IO Double) -> (Double -> Int -> IO Double) -> (Double -> IO Int) -> (Double -> Int -> IO Int) -> (Double -> Double -> IO Double) -> (Double -> Double -> IO Double) -> (Double -> Double -> IO Double) -> (forall a. DiscretePDF a -> IO a) -> IO Int -> Generator
+ Simulation.Aivika.Generator: Generator :: (Double -> Double -> IO Double) -> (Int -> Int -> IO Int) -> (Double -> Double -> Double -> IO Double) -> (Double -> Double -> IO Double) -> (Double -> Double -> IO Double) -> (Double -> IO Double) -> (Double -> Int -> IO Double) -> (Double -> IO Int) -> (Double -> Int -> IO Int) -> (Double -> Double -> IO Double) -> (Double -> Double -> IO Double) -> (Double -> Double -> IO Double) -> (forall a. () => DiscretePDF a -> IO a) -> IO Int -> Generator
- Simulation.Aivika.Generator: [generateDiscrete] :: Generator -> forall a. DiscretePDF a -> IO a
+ Simulation.Aivika.Generator: [generateDiscrete] :: Generator -> forall a. () => DiscretePDF a -> IO a
- Simulation.Aivika.Internal.Dynamics: class DynamicsLift m
+ Simulation.Aivika.Internal.Dynamics: class DynamicsLift (m :: Type -> Type)
- Simulation.Aivika.Internal.Event: class EventLift m
+ Simulation.Aivika.Internal.Event: class EventLift (m :: Type -> Type)
- Simulation.Aivika.Internal.Parameter: class ParameterLift m
+ Simulation.Aivika.Internal.Parameter: class ParameterLift (m :: Type -> Type)
- Simulation.Aivika.Internal.Process: class ProcessLift m
+ Simulation.Aivika.Internal.Process: class ProcessLift (m :: Type -> Type)
- Simulation.Aivika.Internal.Simulation: class SimulationLift m
+ Simulation.Aivika.Internal.Simulation: class SimulationLift (m :: Type -> Type)
- Simulation.Aivika.Parameter: class ParameterLift m
+ Simulation.Aivika.Parameter: class ParameterLift (m :: Type -> Type)
- Simulation.Aivika.Process: class ProcessLift m
+ Simulation.Aivika.Process: class ProcessLift (m :: Type -> Type)
- Simulation.Aivika.QueueStrategy: data StrategyQueue s :: * -> *;
+ Simulation.Aivika.QueueStrategy: data StrategyQueue s :: Type -> Type;
- Simulation.Aivika.Results: class ResultComputing m
+ Simulation.Aivika.Results: class ResultComputing (m :: Type -> Type)
- Simulation.Aivika.Simulation: class SimulationLift m
+ Simulation.Aivika.Simulation: class SimulationLift (m :: Type -> Type)
- Simulation.Aivika.Statistics: SamplingStats :: !Int -> !a -> !a -> !Double -> !Double -> SamplingStats a
+ Simulation.Aivika.Statistics: SamplingStats :: !Int -> !a -> !a -> !Double -> !Double -> !Bool -> SamplingStats a
Files
- CHANGELOG.md +5/−0
- Simulation/Aivika/Results.hs +2/−1
- Simulation/Aivika/Results/Locale/English.hs +2/−0
- Simulation/Aivika/Results/Locale/Russian.hs +2/−0
- Simulation/Aivika/Results/Locale/Types.hs +2/−0
- Simulation/Aivika/Statistics.hs +29/−12
- aivika.cabal +1/−1
CHANGELOG.md view
@@ -1,4 +1,9 @@ +Version 6.2+-----++* Fixed the normalised version of TimingStats, after it is converted to SamplingStats. The deviation has a better approximation now.+ Version 6.1 -----
Simulation/Aivika/Results.hs view
@@ -1429,7 +1429,8 @@ resultContainerMapProperty c "std" SamplingStatsDeviationId samplingStatsDeviation, resultContainerMapProperty c "var" SamplingStatsVarianceId samplingStatsVariance, resultContainerMapProperty c "min" SamplingStatsMinId samplingStatsMin,- resultContainerMapProperty c "max" SamplingStatsMaxId samplingStatsMax ] }+ resultContainerMapProperty c "max" SamplingStatsMaxId samplingStatsMax,+ resultContainerMapProperty c "normalised" SamplingStatsNormalisedId samplingStatsNormalised ] } where c = resultValueToContainer x
Simulation/Aivika/Results/Locale/English.hs view
@@ -31,6 +31,7 @@ englishResultDescription SamplingStatsMean2Id = "mean square" englishResultDescription SamplingStatsVarianceId = "variance" englishResultDescription SamplingStatsDeviationId = "deviation"+englishResultDescription SamplingStatsNormalisedId = "is the statistics normalised?" englishResultDescription TimingStatsId = "timing statistics" englishResultDescription TimingStatsCountId = "count" englishResultDescription TimingStatsMinId = "minimum"@@ -137,6 +138,7 @@ englishResultTitle SamplingStatsMean2Id = "mean square" englishResultTitle SamplingStatsVarianceId = "variance" englishResultTitle SamplingStatsDeviationId = "deviation"+englishResultTitle SamplingStatsNormalisedId = "normalised?" englishResultTitle TimingStatsId = "time-persistent stats" englishResultTitle TimingStatsCountId = "count" englishResultTitle TimingStatsMinId = "minimum"
Simulation/Aivika/Results/Locale/Russian.hs view
@@ -31,6 +31,7 @@ russianResultDescription SamplingStatsMean2Id = "среднее квадратов" russianResultDescription SamplingStatsVarianceId = "дисперсия" russianResultDescription SamplingStatsDeviationId = "среднеквадратическое отклонение"+russianResultDescription SamplingStatsNormalisedId = "статистика нормализована?" russianResultDescription TimingStatsId = "временная статистика" russianResultDescription TimingStatsCountId = "количество" russianResultDescription TimingStatsMinId = "минимальное значение"@@ -137,6 +138,7 @@ russianResultTitle SamplingStatsMean2Id = "среднее квадратов" russianResultTitle SamplingStatsVarianceId = "дисперсия" russianResultTitle SamplingStatsDeviationId = "отклонение"+russianResultTitle SamplingStatsNormalisedId = "нормализована?" russianResultTitle TimingStatsId = "временная статистика" russianResultTitle TimingStatsCountId = "количество" russianResultTitle TimingStatsMinId = "минимум"
Simulation/Aivika/Results/Locale/Types.hs view
@@ -105,6 +105,8 @@ -- ^ Property 'samplingStatsVariance'. | SamplingStatsDeviationId -- ^ Property 'samplingStatsDeviation'.+ | SamplingStatsNormalisedId+ -- ^ Property 'samplingStatsNormalised'. | SamplingCounterId -- ^ A 'SamplingCounter' value. | SamplingCounterValueId
Simulation/Aivika/Statistics.hs view
@@ -78,8 +78,10 @@ -- ^ The maximum value among the samples. samplingStatsMean :: !Double, -- ^ The average value.- samplingStatsMean2 :: !Double + samplingStatsMean2 :: !Double, -- ^ The average square value.+ samplingStatsNormalised :: !Bool+ -- ^ Whether the statistics is normalised. } deriving (Eq, Ord, Typeable, Generic) @@ -114,7 +116,8 @@ samplingStatsMin = 1 / 0, samplingStatsMax = (-1) / 0, samplingStatsMean = 0 / 0,- samplingStatsMean2 = 0 / 0 }+ samplingStatsMean2 = 0 / 0,+ samplingStatsNormalised = False } addSamplingStats = addSamplingStatsGeneric @@ -127,7 +130,8 @@ samplingStatsMin = maxBound, samplingStatsMax = minBound, samplingStatsMean = 0 / 0,- samplingStatsMean2 = 0 / 0 }+ samplingStatsMean2 = 0 / 0,+ samplingStatsNormalised = False } addSamplingStats = addSamplingStatsGeneric @@ -140,12 +144,14 @@ samplingStatsMin = a, samplingStatsMax = a, samplingStatsMean = x,- samplingStatsMean2 = x * x }+ samplingStatsMean2 = x * x,+ samplingStatsNormalised = normalised } | otherwise = SamplingStats { samplingStatsCount = count, samplingStatsMin = minX, samplingStatsMax = maxX, samplingStatsMean = meanX,- samplingStatsMean2 = meanX2 }+ samplingStatsMean2 = meanX2,+ samplingStatsNormalised = normalised } where count = 1 + samplingStatsCount stats minX = a `seq` min a (samplingStatsMin stats) maxX = a `seq` max a (samplingStatsMax stats)@@ -155,17 +161,19 @@ x = convertToDouble a k1 = 1.0 / n k2 = (n - 1.0) / n+ normalised = samplingStatsNormalised stats combineSamplingStatsGeneric :: ConvertableToDouble a => SamplingStats a -> SamplingStats a -> SamplingStats a combineSamplingStatsGeneric stats1 stats2- | c1 == 0 = stats2- | c2 == 0 = stats1+ | c1 == 0 = stats2 { samplingStatsNormalised = normalised }+ | c2 == 0 = stats1 { samplingStatsNormalised = normalised } | otherwise = SamplingStats { samplingStatsCount = c, samplingStatsMin = minZ, samplingStatsMax = maxZ, samplingStatsMean = meanZ,- samplingStatsMean2 = meanZ2 }+ samplingStatsMean2 = meanZ2,+ samplingStatsNormalised = normalised } where c1 = samplingStatsCount stats1 c2 = samplingStatsCount stats2 c = c1 + c2@@ -186,6 +194,7 @@ meanZ2 = k1 * meanX2 + k2 * meanY2 k1 = n1 / n k2 = n2 / n+ normalised = samplingStatsNormalised stats1 || samplingStatsNormalised stats2 -- | If allows combining statistics more efficiently if we know that the first argument can be a scalar. combineSamplingStatsEither :: SamplingData a => Either a (SamplingStats a) -> SamplingStats a -> SamplingStats a@@ -195,8 +204,9 @@ -- | Return the variance. samplingStatsVariance :: SamplingStats a -> Double samplingStatsVariance stats- | count == 1 = 0- | otherwise = (meanX2 - meanX * meanX) * (n / (n - 1))+ | count == 1 = 0+ | samplingStatsNormalised stats = meanX2 - meanX * meanX+ | otherwise = (meanX2 - meanX * meanX) * (n / (n - 1)) where count = samplingStatsCount stats meanX = samplingStatsMean stats meanX2 = samplingStatsMean2 stats@@ -228,6 +238,7 @@ showString ", std = " . shows (samplingStatsDeviation stats) . showString ", min = " . shows (samplingStatsMin stats) . showString ", max = " . shows (samplingStatsMax stats) .+ (if samplingStatsNormalised stats then showString ", normalised = True" else id) . showString " }" instance Show a => Show (SamplingStats a) where@@ -250,7 +261,12 @@ showString "min = " . shows (samplingStatsMin stats) . showString "\n" . showString tab .- showString "max = " . shows (samplingStatsMax stats)+ showString "max = " . shows (samplingStatsMax stats) .+ (if samplingStatsNormalised stats+ then showString "\n" .+ showString tab .+ showString "normalised = True"+ else id) -- | This is the timing statistics where data are bound to the time. data TimingStats a =@@ -428,7 +444,8 @@ samplingStatsMin = timingStatsMin stats, samplingStatsMax = timingStatsMax stats, samplingStatsMean = timingStatsMean stats,- samplingStatsMean2 = timingStatsMean2 stats }+ samplingStatsMean2 = timingStatsMean2 stats,+ samplingStatsNormalised = True } -- | Show the summary of the statistics. showTimingStats :: (Show a, TimingData a) => TimingStats a -> ShowS
aivika.cabal view
@@ -1,5 +1,5 @@ name: aivika-version: 6.1.1+version: 6.2 synopsis: A multi-method simulation library description: Aivika is a discrete event simulation (DES) framework with support of activity-oriented,