Aivika is a multi-paradigm simulation library with a strong emphasis
on Discrete Event Simulation (DES) and System Dynamics (SD).
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 based on specified queue strategies
(FCFS/FIFO, LCFS/LIFO, SIRO, static priorities and so on);
allows customizing the infinite and finite queues based on strategies too;
supports the resource preemption;
allows defining a queue network based on infinite streams of data
and their processors, where we can define a complex enough
behaviour just in a few lines of code;
allows simulating circuits with recursive links and delays;
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 well integrated and this is reflected directly
in the type system;
the arrays of simulation variables are inherently supported;
supports the Monte-Carlo simulation;
the simulation model can depend on external parameters;
uses extensively signals for notification;
allows gathering statistics in time points;
hides technical details in high-level simulation computations
(monads, streams and arrows).
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 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;
has an extensible architecture.
The charting package has two interchangeable back-ends:
Aivika Experiment Cairo [3] and Aivika Experiment Diagrams [4].
All libraries were tested on Linux, Windows and OS X.
The PDF documentation is available on the Aivika Wiki [5] website.
[1] http://hackage.haskell.org/package/aivika-experiment
[2] http://hackage.haskell.org/package/aivika-experiment-chart
[3] http://hackage.haskell.org/package/aivika-experiment-cairo
[4] http://hackage.haskell.org/package/aivika-experiment-diagrams
[5] https://github.com/dsorokin/aivika/wiki
P.S. Aivika is actually a genuine female Mari name which is pronounced
with stress on the last syllable.