We are trying to design an algorithm to control a bank of 10 elevators in a 100-floor office building. At any moment in time, each elevator is on some floor (or between floors), and contains some number of passengers with some set of buttons pushed.
The elevators need to make a decision each time a button is pressed and/or an elevator stops and opens its doors.
The simulator needs to keep track of all this and correctly simulate all events in their proper order.
This is a kind of discrete event simulator.