Русский     English

Aivika and Theta

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


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


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 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. Both the sequential simulation mode and distributed optimistic Time Warp method are implemented in Theta, where the latter uses the MPI protocol to speed up the communication between logical processes. Please contact if you have questions.