name: aivika
version: 1.1
synopsis: A multi-paradigm simulation library
description:
Aivika is a multi-paradigm simulation library with a strong emphasis
on the Discrete Event Simulation (DES) in the first order and
System Dynamics (SD) in the second one.
.
The library has the following features:
.
* allows defining recursive stochastic differential equations of
System Dynamics (unordered as in maths via the recursive do-notation);
.
* supports the event-driven paradigm of DES as a basic core for
implementing other paradigms;
.
* supports extensively the process-oriented paradigm of DES
with an ability to resume, suspend and cancel
the discontinuous processes;
.
* allows working with the resources (you can define your own behaviour
or use the predefined queue strategies);
.
* allows customizing the queues (you can define your own behaviour
or use the predefined queue strategies);
.
* allows defining an infinite stream of data based on the
process-oriented computation, where we can define a complex enough
behaviour just in a few lines of code;
.
* allows defining processors (actually, the Haskell arrows) that
operate on the infinite streams of data, because of which some models
can remind of their high-level graphical representation on the
diagram used by visual simulation software tools;
.
* supports the activity-oriented paradigm of DES;
.
* supports the basic constructs for the agent-based modeling;
.
* allows creating combined discrete-continuous models as all parts
of the library are very well integrated and this is reflected
directly in the type system;
.
* the arrays of simulation variables are inherently supported
(this is mostly a feature of Haskell itself);
.
* supports the Monte-Carlo simulation;
.
* the simulation model can depend on external parameters;
.
* uses extensively the signals to notify the model about changing
the reference and variable values;
.
* allows gathering statistics in time points;
.
* hides the technical details in high-level simulation monads
and even one arrow (some of these monads support the recursive
do-notation).
.
Aivika itself is a light-weight engine with minimal dependencies.
However, it has additional packages Aivika Experiment [1] and
Aivika Experiment Chart [2] that offer the following features:
.
* automating the simulation experiments;
.
* saving the results in CSV files;
.
* plotting the deviation chart by rule 3-sigma, histogram,
time series, XY chart;
.
* collecting the summary of statistical data;
.
* parallel execution of the Monte-Carlo simulation;
.
* have an extensible architecture.
.
All three libraries were tested on Linux, Windows and OS X.
.
Please read the PDF document An Introduction to
Aivika Simulation Library [3] for more details, although it is
outdated and contains a very basic description only. The most powerful
features of Aivika are not yet described in this PDF document.
.
\[1]
.
\[2]
.
\[3]
.
category: Simulation
license: BSD3
license-file: LICENSE
copyright: (c) 2009-2014. David Sorokin
author: David Sorokin
maintainer: David Sorokin
homepage: http://github.com/dsorokin/aivika
cabal-version: >= 1.2.0
build-type: Simple
tested-with: GHC == 7.6.3
extra-source-files: examples/BassDiffusion.hs
examples/ChemicalReaction.hs
examples/FishBank.hs
examples/MachRep1.hs
examples/MachRep1EventDriven.hs
examples/MachRep1TimeDriven.hs
examples/MachRep2.hs
examples/MachRep3.hs
examples/Furnace.hs
examples/SimpleWorkflow.hs
examples/TimeOut.hs
examples/TimeOutInt.hs
examples/TimeOutWait.hs
examples/WorkflowLoop.hs
examples/README
data-files: doc/aivika.pdf
library
exposed-modules: Simulation.Aivika
Simulation.Aivika.Agent
Simulation.Aivika.Arrival
Simulation.Aivika.Cont
Simulation.Aivika.DoubleLinkedList
Simulation.Aivika.Dynamics
Simulation.Aivika.Dynamics.Fold
Simulation.Aivika.Dynamics.Interpolate
Simulation.Aivika.Dynamics.Memo
Simulation.Aivika.Dynamics.Memo.Unboxed
Simulation.Aivika.Dynamics.Random
Simulation.Aivika.Event
Simulation.Aivika.Generator
Simulation.Aivika.Parameter
Simulation.Aivika.Parameter.Random
Simulation.Aivika.PriorityQueue
Simulation.Aivika.Process
Simulation.Aivika.Processor
Simulation.Aivika.Processor.RoundRobbin
Simulation.Aivika.Queue
Simulation.Aivika.Queue.Infinite
Simulation.Aivika.QueueStrategy
Simulation.Aivika.Ref
Simulation.Aivika.Resource
Simulation.Aivika.Server
Simulation.Aivika.Signal
Simulation.Aivika.Simulation
Simulation.Aivika.Specs
Simulation.Aivika.Statistics
Simulation.Aivika.Statistics.Accumulator
Simulation.Aivika.Stream
Simulation.Aivika.Stream.Random
Simulation.Aivika.SystemDynamics
Simulation.Aivika.Table
Simulation.Aivika.Task
Simulation.Aivika.Unboxed
Simulation.Aivika.Var
Simulation.Aivika.Var.Unboxed
Simulation.Aivika.Vector
Simulation.Aivika.Vector.Unboxed
other-modules: Simulation.Aivika.Internal.Cont
Simulation.Aivika.Internal.Dynamics
Simulation.Aivika.Internal.Event
Simulation.Aivika.Internal.Parameter
Simulation.Aivika.Internal.Process
Simulation.Aivika.Internal.Signal
Simulation.Aivika.Internal.Simulation
Simulation.Aivika.Internal.Specs
build-depends: base >= 4.5.0.0 && < 6,
mtl >= 2.1.1,
array >= 0.3.0.0,
containers >= 0.4.0.0,
random >= 1.0.0.3
extensions: FlexibleContexts,
BangPatterns,
RecursiveDo,
MultiParamTypeClasses,
FunctionalDependencies
ghc-options: -O2