aivika: A multi-paradigm simulation library
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.
Warnings:
- '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-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;
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 :)
Properties
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.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 |
---|---|
Change log | None available |
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-18T16:33:59Z |
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.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
Package maintainers
For package maintainers and hackage trustees