sim
Discrete event simulation library, inspired by GPSS and SimPy.
Usage
import { Process, Sim, uniformInt, varExpo } from "https://deno.land/x/sim@v0.1.5/mod.ts";
const sim = new Sim();
function* agent(id: number): Process {
console.log(`time ${sim.time}: agent ${id}, starting`);
yield uniformInt(4, 8); // do something that takes between 4 and 8 units of time
console.log(`time ${sim.time}: agent ${id}, finished first action`);
yield uniformInt(2, 6);
console.log(`time ${sim.time}: agent ${id}, finished`);
}
sim.generate(varExpo(1 / 5), agent); // generate one agent every 5 units of time
sim.run(30); // start the simulation, and run it for 30 units of time
Check the examples folder for other models.
Current capabilities
- Scheduling of events with simulated time
- Resources, with impatience
- Throttling
- Event interruption
- Basic analysis (multiple runs, ANOVA, etc.)
- Basic charts (using Vega-Lite)
TO-DO
- More examples
- Ability for processes to get more information about the simulated environment (resource stats, etc.)