<big><h1 align="center">simjs-updated</h1></big>

<p align="center">
  <a href="https://www.npmjs.com/package/simjs">
    <img src="https://img.shields.io/npm/v/simjs.svg" alt="NPM Version">
  </a>

  <a href="https://opensource.org/licenses/MIT">
    <img src="https://img.shields.io/npm/l/simjs.svg" alt="License">
  </a>

  <a href="https://github.com/btelles/simjs-updated/issues">
    <img src="https://img.shields.io/github/issues/btelles/simjs-updated.svg" alt="Github Issues">
  </a>


  <a href="https://travis-ci.org/btelles/simjs-updated">
    <img src="https://img.shields.io/travis/btelles/simjs-updated.svg" alt="Travis Status">
  </a>



  <a href="https://coveralls.io/github/btelles/simjs-updated">
    <img src="https://coveralls.io/repos/github/btelles/simjs-updated/badge.svg?branch=2.0.2" alt="Coveralls">
  </a>



  <a href="http://commitizen.github.io/cz-cli/">
    <img src="https://img.shields.io/badge/commitizen-friendly-brightgreen.svg" alt="Commitizen Friendly">
  </a>

</p>

<p align="center"><big>
SimJS updated with ES2015 and updated toolchain
</big></p>



*SIM.JS Updated is a general-purpose Discrete Event Simulation library written entirely in JavaScript.*

The original implementation was written in 2011, and can be found at http://www.simjs.com

Note, the documentation on that site is slightly out of date. We're using standard ES2015
classes and idioms now, which should improve code readability. The documentation in the git
repository has been updated though, and you should use that as your reference.

SIM.JS is a library for modeling discrete time event systems:

  * The library provides constructs to create Entities which are the active
  actors in the system and encapsulate the state and logic of the system
  operations.

  * The entities contend for *resources*, which can be Facilities (services
  that are requested by entities; facilities have a maximum limit on number
  of concurrent users) and Buffers (resources that can store finite amount
  of tokens; entities store or retrieve tokens from the buffers).

  * The entities communicate by waiting on Events or by sending Messages.

  * Statistics recording and analysis capability is provided by Data Series
  (collection of discrete, time-independent observations), Time Series
  (collection of discrete, time-dependent observations) and Population
  (the behavior of population growth and decline).

  * SIM.JS also provides a random number generation library to generate seeded
  random variates from various distributions, including uniform, exponential,
  normal, gamma, pareto and others.

*SIM.JS is written in _idiomatic_  EcmaScript 2015 JavaScript*. The library is
written in event-based design paradigm: the changes in system states are notified
via callback functions. The design takes advantage of the powerful feature sets
of JavaScript: prototype based inheritance, first-class functions, closures,
anonymous functions, runtime object modifications and so on. Of course, a
knowledge of these principles is not required (a lot of this is behind the scenes),
but we do certainly hope that using SIM.JS will be a pleasurable experience for
the amateur as well as the experienced JavaScript programmer.
