Air-Scheduler is a Java-based scheduling tool designed to allocate available aircraft (referred to as equipment) to predefined flight routes in a manner that maximizes efficiency and ensures optimal resource utilization. The program reads input data from CSV files for equipment, routes, and distances between airports, processes the data, and generates a detailed schedule exported to a CSV file.
-
Dynamic Aircraft Assignment
- Assigns available aircraft to scheduled flight routes based on availability, proximity, and departure time.
- Includes support for ferry flights to reposition aircraft to the origin of a flight when no equipment is locally available.
-
Conflict-Free Scheduling
- Ensures no aircraft is double-booked by managing its availability using a time-based system.
-
CSV Export for Analysis
- Outputs a detailed schedule in a structured CSV format, showing each aircraft's timeline for 24 hours.
-
Input Data Flexibility
- Reads data for aircraft, routes, and distances from easily editable CSV files:
equipment.csv
: List of aircraft and their base location.routes.csv
: Scheduled flights with origin, destination, departure time, and flight duration.timeDistance.csv
: Flight times between airports for ferry operations.
- Reads data for aircraft, routes, and distances from easily editable CSV files:
-
Error Handling
- Handles missing or incomplete data gracefully with appropriate log outputs for debugging.
-
Data Loading
- Equipment, routes, and distances are read from respective CSV files into memory as structured
ArrayList
objects.
- Equipment, routes, and distances are read from respective CSV files into memory as structured
-
Route Sorting
- Flight routes are sorted by departure times to ensure the scheduling logic processes them in chronological order.
-
Aircraft Assignment
- For each route:
- An available aircraft already at the origin airport is selected if it meets the departure time constraints.
- If no suitable aircraft is available at the origin, the algorithm searches for a ferryable aircraft from another airport. The ferry duration and departure time constraints are calculated using
timeDistance.csv
.
- For each route:
-
Schedule Management
- Each aircraft’s availability is updated dynamically after each flight, including ferry flights.
- The schedule is stored in a time-slot format for export to CSV.
-
Export
- The completed schedule is written to
AirScheduler.csv
, showing each aircraft's assigned tasks for every hour.
- The completed schedule is written to
-
Greedy Approach for Scheduling
- The algorithm attempts to assign the first available and closest equipment to flights, ensuring simplicity and speed.
-
Conflict-Free Resource Allocation
- Time-based checks ensure no aircraft is overbooked, providing a robust scheduling mechanism.
-
Efficiency
- The chronological route sorting reduces unnecessary complexity during scheduling, as each flight is processed in order.
-
Global Optimization
- The algorithm focuses on local optimization (greedy strategy) and does not consider the overall impact of a single decision on future scheduling.
-
No Backtracking
- Once an aircraft is assigned or a ferry is planned, the decision is final. There is no reevaluation to optimize for future routes.
-
Time Granularity
- The scheduling considers flight and ferry times to the minute, but there may be edge cases where simultaneous activities could theoretically occur.
Air-Scheduler was developed to solve real-world challenges in aircraft management, particularly in situations with:
- Limited Resources: Optimizing the allocation of a fixed fleet to a large number of flight routes.
- Dynamic Requirements: Managing changing flight schedules while minimizing downtime.
- Operational Complexity: Automating manual scheduling processes to save time and reduce errors.
This tool can be used by airlines, air cargo services, or logistics companies that require precise and efficient scheduling of their fleets.
- Format:
TailSign,Type,BaseAirport
- Example:
EQ123,Airbus A320,DEL EQ124,Boeing 737,BOM
- Format:
FlightNumber,Origin,Destination,DepartureTime,Duration
- Example:
AI101,DEL,BOM,0800,0200 AI102,BOM,DEL,1200,0200
- Format:
Origin,Destination,Duration
- Example:
DEL,BOM,0200 BOM,DEL,0200
- Format:
Equipment,0000,0100,0200,...,2300 EQ123,Ferry to BOM,AI101: DEL -> BOM (Landing: 1000),,, EQ124,,AI102: BOM -> DEL (Landing: 1400),,,
- Compile and run the Java program using:
javac Main.java java Main
- Ensure the input files (
equipment.csv
,routes.csv
,timeDistance.csv
) are in the same directory as the program. - The program outputs logs to the console and creates the
AirScheduler.csv
file in the current directory.
-
Improved Optimization
- Implementing a backtracking or dynamic programming approach to ensure global optimization across the entire schedule.
-
GUI Integration
- Building a user-friendly graphical interface for managing inputs and visualizing the output schedule.
-
Real-Time Updates
- Adding capabilities to dynamically update the schedule when new routes or equipment data becomes available.
-
Error Handling
- Expanding validations for missing or malformed CSV data.
-
Multi-Day Scheduling
- Extending the algorithm to manage schedules over multiple days.
Air-Scheduler demonstrates how efficient resource management can be achieved using structured programming techniques. It provides a robust foundation for more complex scheduling systems while delivering functional and reliable results for small-to-medium operations.