Files
2025-06-10 00:54:39 +05:30

130 lines
3.7 KiB
Python

# Assignment-C6 (Expert System - Airline Scheduling and Cargo Schedules)
"""
THIS CODE HAS BEEN TESTED AND IS FULLY OPERATIONAL.
Problem Statement: Implement any one of the following Expert System
VI. Airline scheduling and cargo schedules
Code from ArtificialIntelligence (SPPU - Third Year - Computer Engineering - Content) repository on KSKA Git: https://git.kska.io/sppu-te-comp-content/ArtificialIntelligence
"""
"""
Install required package: experta
pip install experta
"""
# BEGINNING OF CODE
from experta import *
class Flight(Fact):
"""Flight details"""
flight_id: str
aircraft_type: str
available: bool
pilot_available: bool
destination: str
class Cargo(Fact):
"""Cargo details"""
cargo_id: str
weight: float
category: str # e.g., perishable, fragile, standard
priority: str # high, medium, low
destination: str
# Define the Expert System
class AirlineExpertSystem(KnowledgeEngine):
@Rule(Cargo(weight=P(lambda x: x > 10000)))
def reject_heavy_cargo(self):
print("Cargo rejected: Weight exceeds limit (10,000kg).")
@Rule(
Flight(available=True, pilot_available=True, destination=MATCH.dest),
Cargo(destination=MATCH.dest, priority='high')
)
def schedule_high_priority(self, dest):
print(f"High priority cargo scheduled to {dest} on available flight.")
@Rule(
Flight(available=True, pilot_available=True, destination=MATCH.dest),
Cargo(destination=MATCH.dest, category='perishable')
)
def schedule_perishable(self, dest):
print(f"Perishable cargo assigned to next available flight to {dest}.")
@Rule(
Flight(available=True, pilot_available=True, destination=MATCH.dest),
Cargo(destination=MATCH.dest)
)
def schedule_standard(self, dest):
print(f"Standard cargo scheduled to {dest}.")
@Rule(Flight(available=False))
def no_flight(self):
print("No flight available currently.")
@Rule(Flight(pilot_available=False))
def no_pilot(self):
print("No pilot available for the flight.")
# Function to get user input and run the system
def run_system():
engine = AirlineExpertSystem()
engine.reset()
print("\nEnter Flight Details")
flight_id = input("Flight ID: ")
aircraft_type = input("Aircraft Type: ")
available = input("Is Flight Available? (yes/no): ").lower() == 'yes'
pilot_available = input("Is Pilot Available? (yes/no): ").lower() == 'yes'
destination = input("Destination: ")
flight_fact = Flight(
flight_id=flight_id,
aircraft_type=aircraft_type,
available=available,
pilot_available=pilot_available,
destination=destination
)
print(f"Declaring Flight Fact: {flight_fact}")
engine.declare(flight_fact)
print("\nEnter Cargo Details")
cargo_id = input("Cargo ID: ")
# Input validation for weight
while True:
try:
weight = float(input("Weight (in kg): "))
if weight <= 0:
raise ValueError("Weight must be a positive number.")
break
except ValueError as e:
print(e)
category = input("Category (perishable/fragile/standard): ").lower()
priority = input("Priority (high/medium/low): ").lower()
cargo_destination = input("Destination: ")
cargo_fact = Cargo(
cargo_id=cargo_id,
weight=weight,
category=category,
priority=priority,
destination=cargo_destination
)
print(f"Declaring Cargo Fact: {cargo_fact}")
engine.declare(cargo_fact)
print("\nRunning Expert System...\n")
try:
engine.run()
except Exception as e:
print(f"An error occurred: {e}")
if __name__ == "__main__":
run_system()
# END OF CODE