Added all the codes.
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user