Question: Introduction In this project we probe an application that behaves like a simulation. Simulations may be used for professional analysis and scientific research. Simulations provide

Introduction
In this project we probe an application that behaves like a simulation. Simulations may be used for professional analysis and scientific research. Simulations provide ground for stress-testing and ability to gain knowledge about a specific system configuration. The results may help to evaluate technical limits of equipment, improve training of personnel who manages and operates the machinery, and even suggest hiring additional staff.
Simulation can also serve as an effective learning tool. Often people need to become familiar with a set of technology, or keep practicing certain professional skills. Simulation becomes a valid option for such exercise, it is safe, and establishes a friendly, game-like environment.
During this semester-long project we design and implement a software system to conduct simulation for a bank of elevators that services the visitors to a building.
Building Elevator Movement Simulator (BEMS)
The Summary of Business Requirements is:
Consider software that monitors a bank of elevators in an office building with Fn floors. The elevator bank services all the floors. There are Sn elevator shafts in the elevator bank, with one elevator per shaft. Both Fn and Sn are configurable parameters that can be updated by the user.
The bottom floor is the underground parking garage. The first floor is the lobby. Therefore, visitors may enter and exit the building on either the bottom floor or the lobby.
An empty elevator can either be stationary, go up, or go down. A non-empty elevator must move in one direction, stopping at the floors requested by the passengers before it can reverse the direction.
The elevator doors open automatically when the elevator stops at the floor with a call button lit. The doors close before the elevator starts moving.
There can be one or two call buttons on each floor for up and down directions. Pushed button indicates the waiting state by the lit signal. The light turns off when the elevator matching the called direction arrives.
An elevator car has a capacity of a maximum allowable number of riders (elevator passengers.)
The elevator properties also include a nominal speed of motion and current direction (stationary, up, or down.)
Application Objectives
Our task is to write object-oriented software with a set of highly reusable components to control the elevators, call buttons, elevator buttons, elevator movement, visitor traffic, and all other aspects and functions needed to simulate the elevator operation. The objectives are:
specify configuration parameters
organize and understand your data
simulate realistic elevator movements via traffic control subsystem
implement an algorithm to calculate the position of an elevator car according to its speed and elapsed time
draw the elevator motion on a time chart according to the current position and time
support simulation scenarios, provide functions to save, load and run simulation scenarios
collect and display visitor and elevator operation statistics
Simulation Display
The user interface has multiple screens (windows) to present the views of the simulated data model. The dialogs to update various system properties are available via main application menu.
Although it's possible to draw a cartoon-like animation of elevator cars with some stick-figure passengers, our main display needs an ability to reveal patterns of the elevator motion over a period of time. In other words, we need a screen showing history of multiple elevators moving in different directions.
The proposed elevator motion graph has the vertical axis for elevator position and the horizontal axis for the elapsed time. Each elevator car plots a continuous line on the graph demonstrating the elevator's motion:
elevator movement graph
Each elevator produces a position-versus-time line on the graph. For convenience, the lines may appear in different colors. The line goes up and down according to the elevator direction. When the elevator is stationary, the line changes to horizontal, indicating the constant position. The graph is animated by vertical scrolling of the timeline when one or more elevators are in motion. If none of the elevators move, the animation stops. The animation is important, because it exhibits the speed of the elevator. The lines appear steeper for faster elevator cars and more gradual for slower ones.
Every elevator shaft in the building is assigned a name, e.g. A, B, C,... and so on. The line on the graph displays a label indicating the elevator id and the number of riders in it. For example, label "B=3" specifies that 3 people are riding in elevator B. When the car is empty, the label should display only the elevator's id.
The graph also shows thin grey horizontal lines corresponding to the building floors. Each floor has its own label: "P"=underground parking, "L"=ground lobby, "F2"=second floor, "F3"=third, and so on. When a cal

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!