[Haskell-cafe] ANN: aivika-1.1 (the simulation library for DES and SD)
David Sorokin
david.sorokin at gmail.com
Sun Feb 16 16:55:45 UTC 2014
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).
Unfortunately, the PDF document included in the package is outdated. Moreover, it doesn't cover even 10% of the features of my simulation library. But there are example models that illustrate the most important features. Also I use them for my tests.
Best regards,
David Sorokin
[1] http://hackage.haskell.org/package/aivika
[2] http://hackage.haskell.org/package/aivika-experiment
[3] http://hackage.haskell.org/package/aivika-experiment-chart
More information about the Haskell-Cafe
mailing list