This is an elevator simulator that aims to find the best scheduling algorithm for elevators.
The elevator simulator can deal with 3 different types of elevators:
-
Naive Elevator
: This elevator has 1 button outside, and the rider chooses his destination floor once he walks into the elevator. -
Up-Down Button Elevator
: This elevator has 2 buttons outside - an up and a down button. The rider chooses his destination floor once he walks into the elevator. -
Destination-First Elevator
: In this elevator, the rider inputs his destination floor before getting into the elevator.
For every elevator type, the simulator can handle any number of elevators that work simultaneously.
To add an algorithm, simply add a new class to the algo
directory, in the relevant sub-dir according to the elevator type.
Make sure to implement the relevant interface from algo/algo_interface.py
- Generate random simulation scenarios
python demand_simulation_data/random_scenario/generate_random_sim.py
- Run the simulation (runs all algorithms, on a specific type of demand pattern, to change the pattern - edit run_all_simulations.py : run_multiple_simulations)
python run_all_simulations.py
- Compare algorithm results
simulation_results/compare_simulation_results.py
python run_single_simulations.py
- Load
monitoring/visualize/visualize.html
into a browser (tested on Chrome)
- At this stage we're assuming that the elevator has infinite passenger capacity
- Assuming the elevator can change direction immediately (0 time)
- Current implementation only supports a single elevator system