packages feed

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 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,