Русский     English

Aivika and Theta

Below are defined two simulation systems: Aivika and Theta. They both implement the same mathematical idea.

Aivika

Aivika is a set of programming libraries for discrete event simulation. It allows you to define declaratively in code the models, for which you would have to use complicated visual simulation software tools otherwise. The speed of simulation in Aivika is reasonably fast.

Open PDF Documentation

You can run a simulation experiment on your computer by using the Monte-Carlo method, where Aivika will create a report with simulation results in a form of charts, tables, histograms, summary statistics and so on. This is demonstrated in the following example: aivika-experiment-chart-test

Example

Also you can run parallel and distributed simulations on the cluster of computers by applying the optimistic Time Warp method with ability to recover the distributed simulation after temporary connection errors. In case of unrecoverable failure the cluster will stop itself automatically. You can use the following closed queue network model aivika-distributed-example-cqn as an example of the distributed simulation.

Finally, Aivika supports a DSL, which is very similar to the popular GPSS modeling language. The next link demonstrates it: aivika-gpss-test

Theta

Theta is an experimental port of Aivika. Theta is written in the Rust programming language. It does not use garbage collector at all and it has a very small run-time system. Theta can be embedded in a very wide range of software systems written in other programming languages such as C, C++, Python, Java or C#.

Theta supports the same discrete event simulation paradigms which are supported by Aivika. Currently, only the sequential simulation mode is fully implemented in Theta. Please contact if you have questions.