aivika: A multi-paradigm simulation library
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;
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 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] http://hackage.haskell.org/package/aivika-experiment
[2] http://hackage.haskell.org/package/aivika-experiment-chart
[3] https://github.com/dsorokin/aivika/blob/master/doc/aivika.pdf
P.S. Aivika is actually a genuine female Mari name which is pronounced with stress on the last syllable as in French, but the Russians usually pronounce it wrong :)
Modules
[Index]
- Simulation
- Simulation.Aivika
- Simulation.Aivika.Agent
- Simulation.Aivika.Arrival
- Simulation.Aivika.Circuit
- Simulation.Aivika.Cont
- Simulation.Aivika.DoubleLinkedList
- Simulation.Aivika.Dynamics
- Simulation.Aivika.Event
- Simulation.Aivika.Generator
- Simulation.Aivika.Parameter
- Simulation.Aivika.PriorityQueue
- Simulation.Aivika.Process
- Simulation.Aivika.Processor
- Simulation.Aivika.Queue
- 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.Stream
- Simulation.Aivika.SystemDynamics
- Simulation.Aivika.Table
- Simulation.Aivika.Task
- Simulation.Aivika.Transform
- Simulation.Aivika.Unboxed
- Simulation.Aivika.Var
- Simulation.Aivika.Vector
- Simulation.Aivika
Downloads
- aivika-1.2.1.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
Versions [RSS] | 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.5, 4.6, 5.0.1, 5.1, 5.2, 5.3, 5.3.1, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 5.9.1, 6.0.0, 6.1, 6.1.1 |
---|---|
Dependencies | array (>=0.3.0.0), base (>=4.5.0.0 && <6), containers (>=0.4.0.0), mtl (>=2.1.1), random (>=1.0.0.3) [details] |
License | BSD-3-Clause |
Copyright | (c) 2009-2014. David Sorokin <david.sorokin@gmail.com> |
Author | David Sorokin |
Maintainer | David Sorokin <david.sorokin@gmail.com> |
Category | Simulation |
Home page | http://github.com/dsorokin/aivika |
Source repo | head: git clone https://github.com/dsorokin/aivika |
Uploaded | by DavidSorokin at 2014-05-23T16:54:53Z |
Distributions | NixOS:6.1.1 |
Reverse Dependencies | 9 direct, 2 indirect [details] |
Downloads | 40946 total (51 in the last 30 days) |
Rating | 2.0 (votes: 1) [estimated by Bayesian average] |
Your Rating | |
Status | Docs available [build log] Successful builds reported [all 1 reports] |