Contact Chase

Project Details

  • School: University of Montana, Missoula
  • Course: Software Science (CS 346)
  • Term: Spring 2008
  • Type: Computer Simulation
  • Teammates: Jason Kimmey

Project Tags

The following tags have been assigned:


Media Gallery

An Initialized simulation of 12 active elevators responsible for serving all of the building's 25 floors.Elevators 1 and 5 have been deactivated by the manager, as would be necessary during elevator maintenance, and therefore will not be able to accept or respond to requests until they are reactivated. Elevators 2, 3, and 4 have responded to requests on the second, third, and forth floor respectively. Elevator 6 is selected, has received an internal request (from inside the elevator) to move to the tenth floor, and is in the process of handling that request.Elevator 6 has arrived at its destination and has opened its doors which will remain open until it needs to handle another request, as defined by the system's stated requirements.A "going up" request has been received at wall mounted buttons in the external  elevator waiting area on the fifteenth floor. Elevator 6, which is closest, has no pending work, and can handle the request in the least time takes responsibility for handling the request and begins to move.
Simultaneously a "going up" and "going down" request have been submitted to wall mounted buttons in the elevator lobby of the ninth floor. As it is impractical to expect a single elevator to handle both of these requests after arriving at the floor, two separate elevators (3 and 4) are automatically dispatched to handle these requests.In this example, elevator 4 is selected and is simulating handling multiple simultaneous requests made from within a specific elevator. In this case users within elevator 4 pressed buttons to be delivered to the eleventh, thirteenth, seventeenth, and twentieth floors. It will then handle these requests in the most efficient manner while concurrently handling any future requests that arrive and can easily be handled while maintaining its current path.An example of the random requests generator tool which will generate a given number of requests spread between internal requests within specific elevators as well as external requests for pickups either going up or going down from individual floors. This tools was particularly useful when testing the efficiency of our request handling algorithm under extremely heavy loads.Elevators responding to the randomly generated requests.
The first prompt of the bulk request tool. In this step the user is asked to define a list of elevators which are to receive the bulk requests.The second prompt of the bulk request tool. In this step the user is asked to define a list of the floors that the elevator will need to serve. In this case a question mark is being used to define a random floor.Elevators 8 and 9 responding to the requests generated by the bulk requests tool.The bulk requests have now been fulfilled. Elevator 8 arrived at the eighth floor as expected and elevator 9 arrived at the seventeenth floor which was the random floor generated during the bulk request process.
Another instance of using the random requests tool. In this case 30 simultaneous requests will be generated that the 12 elevators must serve as quickly as possible.The elevators as they work to handle all pending requests.After all 30 randomly generated requests had been handled successfully.An entirely new simulation of a smaller building with only ten floors and 7 elevators. These elevators were placed on the first through seventh floors and are waiting to handle any new requests.

Elevator Simulator


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.