The aivika package
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;
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 and arrows).
Aivika itself is a light-weight engine with minimal dependencies. However, it has additional packages Aivika Experiment  and Aivika Experiment Chart  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.
The PDF documentation is available on the Aivika Wiki  website.
P.S. Aivika is actually a genuine female Mari name which is pronounced with stress on the last syllable.
|Versions||0.1, 0.2, 0.3, 0.4, 0.4.1, 0.4.2, 0.4.3, 0.5, 0.5.1, 0.5.4, 0.6, 0.6.1, 0.7, 1.0, 1.1, 1.2, 1.2.1, 1.3, 1.4, 2.0, 2.1, 3.0, 3.1|
|Dependencies||array (>=0.3.0.0), base (>=184.108.40.206 && <6), containers (>=0.4.0.0), mtl (>=2.1.1), random (>=220.127.116.11), vector (>=0.10.0.1)|
|Copyright||(c) 2009-2015. David Sorokin <email@example.com>|
|Maintainer||David Sorokin <firstname.lastname@example.org>|
|Source repository||head: git clone https://github.com/dsorokin/aivika|
|Uploaded||Fri Jan 23 16:13:23 UTC 2015 by DavidSorokin|
|Downloads||2736 total (239 in last 30 days)|
|Status||Docs available [build log]|
Last success reported on 2015-01-23 [all 1 reports]
|haste-inst||The package is built using haste-inst||Disabled|
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
For package maintainers and hackage trustees