Skip to content

CMPE250 - Algorithms and Data Structures - Fall 2022 - Project 3

Notifications You must be signed in to change notification settings

cmpe250fall22/project3

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CMPE250 - Algorithms and Data Structures - Fall 2022 - Project 3

People
Instuctor Özlem Durmaz İncel
Teaching Assistants Suzan Ece Ada
Barış Yamansavaçılar
Student Assistants Bahadır Gezer
Batuhan Çelik
Zeynep Buse Aydın
Ömer Faruk Ünal

Encore Airlines

Check the description to try out this project.

src/
├── main
│   └── java
│       ├── Project3.java
│       ├── entities
│       │   ├── Event.java
│       │   └── Flight.java
│       └── processors
│           ├── ACC.java
│           ├── ATC.java
│           └── DES.java
└── resources
├── codes.py
├── data
│   ├── acc_codes.json
│   ├── airport_codes.json
│   └── flight_codes.json
├── input.py
└── outputs,py

Implementation Notes

Pre-computation phase: Find the connected airport components and add an ATC to each component.

Discrete Event Simulation phase: Simulate the arrival and departure of flights. Compute this phase
until all flights have landed. ATC will have to do the procedures, and it should implement some type of
job scheduling, "round-robin" might be the best option.

Some flights might be emergencies. These will produce an "interrupt" and start computing right away.

Hashing: 

Post-computation phase: Compute the average wait time for each flight.

Output: Print the average wait time for each flight.

Flight States

Fig. 1

ACC - Area Control Center

ACC scheduling -> Round Robin
ACC states:
        -new
        -ready
        -running
        -waiting
        -terminated

created:            new     -> ready
dispatch:           ready   -> running
interrupt:          running -> ready
wait:               running -> waiting
exit:               running -> terminated
wait completion:    waiting -> ready

created -> new Flight input: adds the Flight into correct ACC ready queue
    ready: waiting for dispatch, in the correct ACC ready queue

dispatch -> start processing flight and block ACC
    running: check for clearances, flight plan, flight information, etc.

interrupt -> scheduling interrupt and unblock ACC

wait -> pass operation to *departing* ATC and wait for output, and unblock ACC

wait -> pass operation to *landing* ATC and wait for output, and unblock ACC

wait -> ask plane for flight details, wait for output, and unblock ACC

exit -> remove flight from the cycle. Unblock ACC.
    terminated: flight operations are complete.

wait completion -> reenter ready queue.

ATC - Air Traffic Control

ATC scheduling -> multilevel feedback queue
ATC states:
        -new
        -ready
        -running
        -waiting
        -terminated

created:           new     -> ready
dispatch:          ready   -> running
interrupt:         running -> ready
wait:              running -> waiting
exit:              running -> terminated
wait completion:   waiting -> ready

created -> new Flight input: adds the Flight into correct ACC ready queue
    ready: waiting for dispatch, in the correct ACC ready queue

dispatch -> start processing flight and block ATC
    running:
        for landings [get control / landing information, (landing wait), taxi/gate information, (taxi wait),
        disembark/baggage information processing, (disembark/baggage), all successful/wrap up and end communication],

        for departures [get control / boarding/ baggage, (boarding / baggage wait), takeoff information / flight
        plan, (affirmative wait), taxi information, (pushback / taxi wait), ready / waiting to be cleared for
        takeoff, (takeoff), all successful/wrap up and end communication/ pass back to AAC]

interrupt -> scheduling interrupt and unblock ATC
interrupt -> mayday, emergency, etc.

wait -> specified above, and unblock ATC]

exit -> remove flight from the cycle. Unblock ATC.
    terminated: flight operations are complete.

wait completion -> reenter ready queue.

Processing Times

index -> time

  • 0 -> ACC initial processing time (r)
  • 1 -> Passing flight information to ACC time (w)
  • 2 -> ACC transfer control to ATC processing time (r) (ACC -> departure ATC) (ACC wait until ATC termination)
  • 3 -> initial ATC processing time (r)
  • 4 -> boarding wait time (w)
  • 5 -> taxi information processing time (r)
  • 6 -> taxi wait time (w)
  • 7 -> takeoff clearance processing time (r)
  • 8 -> takeoff && getting away from the ATC control area wait time (w)
  • 9 -> transfer control to ACC processing time (r) (departure ATC -> ACC) (departure ATC terminate)
  • 10 -> ACC take control back and flight path processing time (r)
  • 11 -> flight wait time (w)
  • 12 -> ACC transfer control to ATC processing time (r) (ACC -> ATC) (ACC wait until ATC termination)
  • 13 -> ATC initial processing time && runway information (r)
  • 14 -> flight landing wait time (w)
  • 15 -> taxi information processing time (r)
  • 16 -> taxi wait time (w)
  • 17 -> gate information processing time (r)
  • 18 -> disembark wait time (w)
  • 19 -> terminal processing time (r) (landing ATC -> ACC) (landing ATC terminate)
  • 20 -> ACC take control back && file flight record processing time (r) (ACC terminate)

Input file format:

  1. First line: <number of airports> <number of flights> <number of ACCs>
  2. Next <number of airports> lines: <airport code> <ACC code> <list of connections>
  3. Next <number of flights> lines: <flight code> <admission time> <departure airport code> <arrival airport code> <list of operation times>

Additional

ACC codes are 4 capital letters, airport codes are 3 capital letters. Both are unique.
ATC codes start with 4 capital letters (which are the ACC code for that ATC), followed by a two digit number.
The two digit number is generated by the ACC using hashing. The ATC code is unique.

ATC and airports are mapped one-to-one. Each airport has one ATC, and each ATC is responsible for one airport.
ACC's are one-to-many mapped to ATC's. Each ACC is responsible for one or more ATC's. 

About

CMPE250 - Algorithms and Data Structures - Fall 2022 - Project 3

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TeX 41.7%
  • Java 33.9%
  • Python 24.4%