# aivika: A multi-paradigm simulation library

Aivika is a multi-paradigm simulation library which has the following features:

allows defining recursive stochastic differential equations of System Dynamics (unordered as in maths via the recursive do-notation);

has a basic support of the event-driven paradigm of the Discrete Event Simulation (DES);

has a basic support of the process-oriented paradigm of DES with an ability to resume, suspend and cancel the discontinuous processes;

allows working with limited 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);

supports the activity-oriented paradigm of DES;

supports the basic constructs for the agent-based modeling;

allows creating combined discrete-continuous models;

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 (three of them 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 (a little outdated). This document is included in the distributive of Aivika but you can usually find a more recent version by the link provided.

[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

Versions [faq] | 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 |
---|---|

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-2013. 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 |

Uploaded | by DavidSorokin at Sat Jul 27 10:38:28 UTC 2013 |

Distributions | NixOS:5.9 |

Downloads | 16507 total (824 in the last 30 days) |

Rating | 2.0 (votes: 1) [estimated by rule of succession] |

Your Rating | |

Status | Docs uploaded by user Build status unknown [no reports yet] |

## Modules

[Index]

*Simulation**Aivika*- Simulation.Aivika.Agent
- Simulation.Aivika.Cont
- Simulation.Aivika.DoubleLinkedList
- Simulation.Aivika.Dynamics
- Simulation.Aivika.Event
- Simulation.Aivika.Parameter
- Simulation.Aivika.PriorityQueue
- Simulation.Aivika.Process
- Simulation.Aivika.Queue
- Simulation.Aivika.QueueStrategy
- Simulation.Aivika.Random
- Simulation.Aivika.Ref
- Simulation.Aivika.Resource
- Simulation.Aivika.Signal
- Simulation.Aivika.Simulation
- Simulation.Aivika.Specs
- Simulation.Aivika.Statistics
- Simulation.Aivika.SystemDynamics
- Simulation.Aivika.Unboxed
- Simulation.Aivika.Var
- Simulation.Aivika.Vector

## Downloads

- aivika-0.7.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)