David Sorokin | 16 Feb 17:55 2014

ANN: aivika-1.1 (the simulation library for DES and SD)

Hi Cafe,

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.

A new version introduces an infinite stream of simulation data. This stream is based on the
process-oriented computation of DES (this computation in its turn works on top of the event queue and uses
the continuations). So, a random input of arrivals distributed exponentially can be described as such a
stream in just one line of code!

There is also a processor that just a function that takes an input stream and then returns a resulting stream
after the processing. The processor is a Haskell arrow, which means that we can use the proc-notation in
case of need, although there is a lot of predefined combinators such as that one which unites parallel
processors into one processor.

There are finite and infinite queues. The library collects the statistics for theses queues. We can either
work with the queue directly, or create a buffer processor for the queue (with loop-back or not).

There is also so called the server that provides its own processor. It suits for modeling working places. As
before, the library collects the statistics too.

In my personal opinion the library was powerful enough already earlier but now it can also allow the modeler
to define some models using the mentioned above streams and processors directly in a very high-level
Haskell code in such a way as he/she would draw the model on the diagram like those ones which are used by some
visual simulation software tools.

At the same time, all parts of the library are very well integrated. Actually, all them are
inter-connected, where more high-level monads are just based on more low-level ones. Now the top is the
mentioned above processor (the Haskell arrow).

(Continue reading)