README.md

IronAivika

The early name of the product was Aivika for .NET.

IronAivika is a simulation library that supports discrete event simulation, system dynamics and partially agent-based modeling.

Idea

The main idea is that many simulation activities can actually be represented as abstract computations. Functional programming has a developed apparatus for creating such computations, combining them, reasoning about them and so on. Here they are mainly monads, continuations, streams and arrows. It is important that F# provides an easy-to-use syntactic sugar for working with such computations, which is a clue to practical usability of the method.

Features

IronAivika has the following features:

  • allows defining recursive stochastic differential equations of System Dynamics (unordered as in maths);

  • 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 unbounded and bounded queues based on strategies too;

  • supports the resource preemption;

  • allows defining a queue network based on GPSS-like block computations;

  • 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 (with the corresponding support on level of the syntax).

Moreover, there are additional modules that allow:

  • 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.

The library is tested on Windows, macOS and Linux.

License

IronAivika is available under a dual-license model: GNU GPL License v3 (GPLv3) and Commercial.

A Commercial IronAivika license keeps your code proprietary where only you can control and monetize on your end product’s development, user experience and distribution.

IronAivika is also licensed under GPLv3. If you use IronAivika under open-source license, you need to make sure that you comply with all the licenses of the components you use.

Please contact the author of this library for detail of licensing: David Sorokin mailto:david.sorokin@gmail.com (Yoshkar-Ola, Russia). The author’s alternative email address is mailto:davsor@mail.ru.

Documentation

The PDF documentation is included in this repository (see directory doc):

This document describes the simulation API and contains examples with graphical illustrations.

Описание
IronAivika - Simulation Library for .NET
Конвейеры
0 успешных
0 с ошибкой
Разработчики