# 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;

supports the resource preemption;

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, streams and arrows).

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 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: Aivika Experiment Cairo [3] and Aivika Experiment Diagrams [4].

All libraries were tested on Linux, Windows and OS X.

The PDF documentation and installation instructions are available on the Aivika Wiki [5] website.

[1] http://hackage.haskell.org/package/aivika-experiment

[2] http://hackage.haskell.org/package/aivika-experiment-chart

[3] http://hackage.haskell.org/package/aivika-experiment-cairo

[4] http://hackage.haskell.org/package/aivika-experiment-diagrams

[5] https://github.com/dsorokin/aivika/wiki

P.S. Aivika is actually a genuine female Mari name which is pronounced with stress on the last syllable.

## 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, 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 |
---|---|

Change log | CHANGELOG.md |

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), vector (>=0.10.0.1) [details] |

License | BSD3 |

Copyright | (c) 2009-2015. David Sorokin <david.sorokin@gmail.com> |

Author | David Sorokin |

Maintainer | David Sorokin <david.sorokin@gmail.com> |

Category | Simulation |

Home page | http://www.aivikasoft.com/en/products/aivika.html |

Source repository | head: git clone https://github.com/dsorokin/aivika |

Uploaded | Fri Jan 29 16:55:47 UTC 2016 by DavidSorokin |

Distributions | NixOS:4.3.2 |

Downloads | 4956 total (150 in last 30 days) |

Votes | |

Status | Docs pending Build status unknown [no reports yet] |

## Modules

*Simulation*- Simulation.Aivika
- Simulation.Aivika.Activity
- Simulation.Aivika.Activity.Random

- Simulation.Aivika.Agent
- Simulation.Aivika.Arrival
- Simulation.Aivika.Circuit
- Simulation.Aivika.Cont
- Simulation.Aivika.DoubleLinkedList
- Simulation.Aivika.Dynamics
- Simulation.Aivika.Dynamics.Extra
- Simulation.Aivika.Dynamics.Memo
- Simulation.Aivika.Dynamics.Memo.Unboxed

- Simulation.Aivika.Dynamics.Random

- Simulation.Aivika.Event
- Simulation.Aivika.Gate
- Simulation.Aivika.Generator
- Simulation.Aivika.Net
- Simulation.Aivika.Net.Random

- Simulation.Aivika.Operation
- Simulation.Aivika.Operation.Random

- Simulation.Aivika.Parameter
- Simulation.Aivika.Parameter.Random

- Simulation.Aivika.PriorityQueue
- Simulation.Aivika.PriorityQueue.Pure

- Simulation.Aivika.Process
- Simulation.Aivika.Process.Random

- Simulation.Aivika.Processor
- Simulation.Aivika.Processor.Random
- Simulation.Aivika.Processor.RoundRobbin

- Simulation.Aivika.Queue
- Simulation.Aivika.Queue.Base
- Simulation.Aivika.Queue.Infinite
- Simulation.Aivika.Queue.Infinite.Base

- Simulation.Aivika.QueueStrategy
- Simulation.Aivika.Ref
- Simulation.Aivika.Ref.Base

- Simulation.Aivika.Resource
- Simulation.Aivika.Resource.Base
- Simulation.Aivika.Resource.Preemption
- Simulation.Aivika.Resource.Preemption.Base

- Simulation.Aivika.Results
- Simulation.Aivika.Results.IO
- Simulation.Aivika.Results.Locale
- Simulation.Aivika.Results.Transform

- Simulation.Aivika.Server
- Simulation.Aivika.Server.Random

- Simulation.Aivika.Signal
- Simulation.Aivika.Simulation
- Simulation.Aivika.Specs
- Simulation.Aivika.Statistics
- Simulation.Aivika.Statistics.Accumulator

- Simulation.Aivika.Stream
- Simulation.Aivika.Stream.Random

- Simulation.Aivika.SystemDynamics
- Simulation.Aivika.Table
- Simulation.Aivika.Task
- Simulation.Aivika.Transform
- Simulation.Aivika.Transform.Extra
- Simulation.Aivika.Transform.Memo
- Simulation.Aivika.Transform.Memo.Unboxed

- Simulation.Aivika.Unboxed
- Simulation.Aivika.Var
- Simulation.Aivika.Var.Unboxed

- Simulation.Aivika.Vector
- Simulation.Aivika.Vector.Unboxed

- Simulation.Aivika.Activity

- Simulation.Aivika

## Downloads

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

#### Maintainers' corner

For package maintainers and hackage trustees