Milestone Description
For this iteration, you are to use what you have learned from Assignments 2 and 3 and split your system up into three (or more) separate programs that can run on three separate computers and communicate with each other using UDP. Your task in Assignment 3 was to implement a simple version of a remote procedure call, so you are encouraged to recycle that code here.
The Scheduler will now be used to coordinate the movement of cars such that each car carries roughly the same number of passengers as all of the others and so that the waiting time for passengers at floors is minimized. Hint: if a passenger wants to go down and there is an elevator above the passenger, then that elevator should service the passenger rather than having a second elevator go up instead. The state machines for each car should execute independently of each other, but they will all have to share their position with the scheduler. The scheduler will choose which elevator will be used to service a given request.
Note: any task preceded (???) has some uncertainty around it. This refers to how it will be done or whether it will be done at all.
NOTE: This needs to be updated because some these tasks should be done in iteration 4, not iteration 3.
Iteration 2 Leftovers
Iteration 3 Breakdown
Major Goals
- Get simulation working for multiple elevators
- Elevator Selection Algorithm: Scheduler chooses which elevator serves a given request
- Message Transfer: Use Client/Server scheme as seen in Assignments 2 and 3 instead of what we have now.
- UDP messages to transfer data as seen in Assignment 2
- Three programs running separately as seen in Assignment 2
- Implement Doors on Elevators
Code Breakdown
Documentation
Milestone Description
For this iteration, you are to use what you have learned from Assignments 2 and 3 and split your system up into three (or more) separate programs that can run on three separate computers and communicate with each other using UDP. Your task in Assignment 3 was to implement a simple version of a remote procedure call, so you are encouraged to recycle that code here.
The Scheduler will now be used to coordinate the movement of cars such that each car carries roughly the same number of passengers as all of the others and so that the waiting time for passengers at floors is minimized. Hint: if a passenger wants to go down and there is an elevator above the passenger, then that elevator should service the passenger rather than having a second elevator go up instead. The state machines for each car should execute independently of each other, but they will all have to share their position with the scheduler. The scheduler will choose which elevator will be used to service a given request.
Note: any task preceded (???) has some uncertainty around it. This refers to how it will be done or whether it will be done at all.
NOTE: This needs to be updated because some these tasks should be done in iteration 4, not iteration 3.
Iteration 2 Leftovers
[ ] Give Elevator reference to buffer or Scheduler instead of ElevatorSubsystem?[ ] Renamed BoundedBuffer to UnboundedBuffer[] If not, modify the ArrivalSensor's check method so that it does modify the ApproachEventIteration 3 Breakdown
Major Goals
Code Breakdown
check that objects are the same after conversion(Not same object, but a copy of)[ ] Add JUnit tests where Structure has a varying number of ElevatorsDocumentation