Elevator Bank Design and Implementation

1 Project Description
The goal of this project is to design and develop C++ code and algorithms to control a bank of
elevators, which services many
oors and transports people \e�ciently ", that is, as per the given
speci�cations. A second goal is to e�ectively employ object oriented design, through appropriate
use of classes, data structures and Standard Template Libraries (STLs).
1.1 Problem Speci�cations
� The elevator bank has m elevators and services n
oors. As an example, you may choose
m = 3 and n = 10.
� Each elevator can stop at every
oor.
� The direction of an elevator has three states up, down and standing.
� Each elevator can carry up to a max of Nmax persons.
� The program loops through discrete time steps t = 1; 2; : : : Tstop, where Tstop is an input
parameter.
� At each time step, either 0, 1 or 2 persons arrive at a
oor. This information can be read
from an input data �le, as described in 1.3.
� An elevator takes k time step to move up or down by k
oors, if it doesn't stop. For example,
to move from
oor 4 to
oor 5 requires one time step. And to move from
oor 7 to
oor 3
requires 4 time steps.
� When an elevator stops at a
oor, for either passenger pick up or drop o�, it does so for one
time step.
� When a person arrives on a
oor, they are assigned the \nearest "elevator. Here nearest is
de�ned in the number of time steps. For example, let us say a person arrives on
oor 5, and
wants to go up. Elevator E1 on
oor 2, moving in the up direction, with no stops, is 3 time
steps away. Elevator E2 on
oor 6, moving in the down direction and headed for
oor 3 is 6
time steps away. Therefore, the person is assigned elevator E1.
� Each arriving person has an arrival
oor, destination
oor and the assigned elevator as its
data members.
� When a person is assigned an elevator, their arrival
oor and destination
oor go in the queue
or the list of the elevator stops.
1
� Each elevator contains a list of stops, which gets updated at each time step.
� An elevator moving up (down) continues to move up (down), until it exhausts all the stops
in its list.
1.2 Class Design and STLs
You must make appropriate use of classes and class objects, class data members, class methods,
constructors/destructors to implement your code. Here are some suggested classes and their data
members:
� Person class with ID, arrival
oor, destination
oor and assigned elevator. An example ID
for a person maybe P1A3D5, for person 1, arrival
oor 3 and destination
oor 5. This will
make it easier to generate and track test input and output.
� Elevator class with direction, number of people and list of stops.
Think of the STL containers you will be utilizing. For example, a list allows for easy insertion and
removal of elements, a vector can change size, and you can push and pop elements at the end of it,
a deque allows for fast insertion and deletion of elements at both ends.
1.3 Input Data
The input data consists of the arrivals on each
oor, at time steps t = 1; 2; : : : TStop. At each
time step, the program reads in each arriving person, for each
oor, and processes this data. For
example, for n = 10
oors, and at time step t = 1, the arrivals maybe P1A1D4 and P2A1D5 on

oor 1, P1A3D1 and P2A3D7 on
oor 3, and 0 on the remaining
oors.
1.4 Program Output
Generate appropriate output for a given input test data, which displays the information, that is,
people getting on and o� each
oor, for each time step, for say 10 consecutive time steps.
2
2 Teams and Interview
You may work alone or in teams of two. Interviews will be conducted for all teams, and each
member of the team should be able to discuss their project and answer questions.
3 Project Report
The project must include a report which describes the program design, including class de�nitions,
STL data structures and the algorithms. You may make use of �gures to illustrate your design.
4 Assignment Submission
The Assignments must be submitted on the Blackboard, and should include the following:
1. Project Report in .pdf format.
2. Some test cases, with input and output data �le.
3. All the C++ source code in .cpp format, and header �les if any, in .h format.
4.1 Hardcopy
Please also submit a hard copy of the project, for ABET accreditation.
3

you really expect someone to do this whole thing for you?

How about you pick some piece of it that causes trouble, and show some ideas you have so far. I'd bet that there are code samples online for just about any part of it that you can break out.

I can do this project for you please contact me 00923215081005

I will give you guide or teach you concept relating to this but I will not tell you whole project just guide...

My whatsapp
00923215081005

The project involves designing and implementing a C++ code and algorithms to control a bank of elevators. The design should efficiently transport people between floors based on the given specifications. Object-oriented design principles should be used, including the appropriate use of classes, data structures, and STLs (Standard Template Libraries).

The problem specifications include:
1. The elevator bank has m elevators and services n floors. For example, m = 3 and n = 10 can be chosen.
2. Each elevator can stop at every floor.
3. Each elevator has three states for its direction: up, down, and standing.
4. Each elevator has a maximum capacity of Nmax persons.
5. The program progresses through discrete time steps, starting from t = 1 up to Tstop, which is an input parameter.
6. At each time step, 0, 1, or 2 persons may arrive at a floor. This information can be read from an input data file.
7. It takes k time steps for an elevator to move up or down k floors, without stopping. For example, moving from floor 4 to floor 5 requires one time step, while moving from floor 7 to floor 3 requires 4 time steps.
8. When an elevator stops at a floor for passenger pick up or drop off, it takes one time step.
9. When a person arrives at a floor, they are assigned to the nearest elevator. The nearest is defined in terms of the number of time steps required to reach the person. The assigned elevator's movement and direction are taken into account.
10. Each person has an arrival floor, destination floor, and assigned elevator.
11. Each elevator maintains a list of stops, which gets updated at each time step.
12. An elevator moving up/down continues in that direction until it has completed all stops in its list.

The class design should make use of appropriate classes, class objects, class data members, class methods, constructors/destructors, and STLs. Some suggested classes and their data members are:
1. Person class with ID, arrival floor, destination floor, and assigned elevator.
2. Elevator class with direction, number of people, and list of stops.

The program should read input data that consists of arrivals on each floor at each time step. This data is processed at each time step to assign passengers to elevators. The program should generate appropriate output that displays information about people getting on and off at each floor for a given input test data.

The project must include a report that describes the program design, including class definitions, STL data structures, and algorithms. Test cases with input and output data files should be included as well. The submission should include the project report in PDF format, test cases, source code (.cpp files), and header files if any (.h files). A hard copy should also be submitted for ABET accreditation.