SIM.JS supports entities, resources (Facility, Buffers and Stores), communication (via Timers, Events and Messages) and statistics
(with Data Series, Time Series and Population statistics).
The SIM.JS distribution contains tutorials, in-depth documentation, and a large
number of examples.
There are several examples bundled with the library download. Trafficlight simulation is a standard simulation problem, which may be simulated as within this example:
function trafficLightSimulation(GREEN_TIME, MEAN_ARRIVAL, SEED, SIMTIME) {
var sim = new Sim();
var random = new Random(SEED);
var trafficLights = [new Sim.Event("North-South Light"),
new Sim.Event("East-West Light")];
var stats = new Sim.Population("Waiting at Intersection");
var LightController = {
currentLight: 0, // the light that is turned on currently
start: function () {
sim.log(trafficLights[this.currentLight].name + " OFF"
+ ", " + trafficLights[1 - this.currentLight].name + " ON");
sim.log("------------------------------------------");
// turn off the current light
trafficLights[this.currentLight].clear();
// turn on the other light.
// Note the true parameter: the event must "sustain"
trafficLights[1 - this.currentLight].fire(true);
// update the currentLight variable
this.currentLight = 1 - this.currentLight;
// Repeat every GREEN_TIME interval
this.setTimer(GREEN_TIME).done(this.start);
}
};