The aivika package
This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.
- 'ghc-options: -O2' is rarely needed. Check that it is giving a real benefit and not just imposing longer compile times on your users.
- Exposed modules use unallocated top-level names: Simulation
Aivika is a multi-method simulation library focused on discrete event simulation (DES) with partial support of system dynamics and agent-based modeling.
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 streams of data (transacts) and their processors;
allows simulating circuits with recursive links and delays;
supports the activity-oriented paradigm of DES;
supports basic constructs for the agent-based modeling such as agents, states, timeout and timer handlers;
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 [1, 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 [3, 4], where one of them uses Cairo and it is more preferable.
The PDF documentation and installation instructions are available on the Aivika Wiki website .
Moreover, the method was generalized  and applied to nested simulation  and parallel distributed simulation .
The libraries were tested on Linux, Windows and OS X.
A more full information about Aivika is available on the project 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, 4.0, 4.0.1, 4.0.3, 4.1, 4.1.1, 4.2, 4.3, 4.3.1, 4.3.2, 4.3.3, 4.3.4, 4.3.5, 4.3.5, 4.5, 4.6, 5.0.1|
|Dependencies||array (>=0.3.0.0), base (>=18.104.22.168 && <6), containers (>=0.4.0.0), mtl (>=2.1.1), random (>=22.214.171.124), vector (>=0.10.0.1) [details]|
|Copyright||(c) 2009-2016. David Sorokin <firstname.lastname@example.org>|
|Maintainer||David Sorokin <email@example.com>|
|Source repository||head: git clone https://github.com/dsorokin/aivika|
|Uploaded||Sat May 28 07:56:50 UTC 2016 by DavidSorokin|
For package maintainers and hackage trustees