Git Product home page Git Product logo

scala-aivika's Introduction

Aivika is a relatively small simulation library that covers many paradigms. It allows integrating a system of ordinary differential equations from System Dynamics. Also it can be applied to the Discrete Event Simulation. It supports the event-oriented, process-oriented and activity-oriented paradigms. Aivika has also a basic support of the Agent-based Modeling.

It is possible due to using a very general approach when the basic modeling entity is just a function of simulation time. The continuations are naturally used for modeling the discontinuous processes. Using the objects allows the modeler to represent the agents and their states. The integrals can be defined recursively as in mathematics. It wouldn't be possible in low level programming languages. A high level functional programming language becomes a modeling language too.

There are three implementations of the Aivika library for the F#, Haskell and Scala programming languages. The represented Scala version has built-in powerful facilities that allow generating the simulation results in the form of HTML, graphics and CSV tables. It can plot the deviation chart, the time series, the XY chart, histograms etc. Also it can save the results in CSV files for the further processing by such tools as Microsoft Excel. At the same time, Aivika can gather the statistics and then represent them in text form. This step of generating and representing the results is very simplified. Many routine tasks are performed by Aivika itself. In the end the modeler receives an HTML site with the results, which can be studied with help of his/her favorite Internet browser.

This Scala version of Aivika is focused on the parameterized Monte Carlo simulation, although it is possible to run a single simulation too. The parameters may depend on the simulation run index. It is possible to design an experiment. The parameters can use pseudo-random number generators, or take values directly from the predefined tables. The magic is in that the Monte Carlo simulation is well adjusted to the module of generating the results, which greatly simplifies the process of analyzing the model.

I used Maven and IntelliJ IDEA with the installed Scala plug-in to develop this version of Aivika. So, I can launch any of the examples in one step using the context menu of IDEA. It is very useful. But this library should work with any other Scala development environment as well.

I hope it helps.

Best regards,
David Sorokin <[email protected]>

scala-aivika's People

Contributors

dsorokin avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.