This was a multiphase group project from the Software Science (CS 346) course at the University of Montana. In addition to the final result shown here this project consisted heavily of iterative design and documentation prior to any code being written. While I no longer have a copy of the original requirements defined for this project, the idea of the project was to develop a piece of software that had the ability to take two independent roles. First, the software needed to be able to simulate a building consisting of a specific number of floors that would be serviced by a specific number of elevators responsible for transporting people within the building between floors. Additionally, the software needed to be designed in such a way that it could also act as a centralized control and monitoring console for an actual building consisting of physical elevators without the need to rewrite the application. This additional requirement was easily met by taking advantage of polymorphism and making components within the system extremely modular. Aside from a few odd requirements - such as elevators being required to leave their doors open while idle - the simulated reality was very near what one might expect from previous experience with elevators.
This application allows the user to begin by selecting the number of floors and the number of elevators they are interested in simulating using sliders in the configuration panel. Once a simulation is started the current state of the simulation is displayed graphically in real time including a number of statistics that can be used to measure the current demand. The operator then has the ability to simulate a elevator user entering a specific elevator and making a request for a specific floor or can make requests using up and down buttons positioned on each floor to call an elevator to pick them up that will be going in the desired direction. The operator of the simulation can also perform actions on elevators such as opening or closing the doors of the elevator or deactivating the elevator as would be necessary in a scenario when an elevator required maintenance. Features also were added so that many automatically generated requests could be made simultaneously in order to test the efficiency of the elevator dispatch algorithm and to be able to determine if the number of elevators is sufficient to cover a building of the defined size without unacceptable delays. Check out the media gallery on this page for a sample of how the application works.