AIGreenPath / main.py
Zayeemk's picture
Upload 26 files
18935fc verified
#!/usr/bin/env python3
"""
AI-Powered Shipment Route Optimization & Delay Prediction System
Main application entry point for demonstration and testing
"""
import sys
import os
import pandas as pd
from datetime import datetime
# Add src directory to path
sys.path.append(os.path.join(os.path.dirname(__file__), 'src'))
from data_pipeline.data_collector import DataCollector
from data_pipeline.data_processor import DataProcessor
from ml_models.delay_predictor import DelayPredictor, ModelEvaluator
from route_optimizer.route_optimizer import RouteOptimizer, RouteAnalyzer
from utils.monitoring import ShipmentMonitor, PerformanceAnalyzer
def demonstrate_system():
"""Demonstrate the complete AI-powered shipment optimization system"""
print("=" * 60)
print("AI-POWERED SHIPMENT ROUTE OPTIMIZATION & DELAY PREDICTION")
print("=" * 60)
print()
# Initialize components
print("πŸ”§ Initializing system components...")
data_collector = DataCollector()
data_processor = DataProcessor()
delay_predictor = DelayPredictor()
route_optimizer = RouteOptimizer()
monitor = ShipmentMonitor()
analyzer = PerformanceAnalyzer()
# Step 1: Data Collection and Processing
print("\nπŸ“Š STEP 1: Data Collection and Processing")
print("-" * 40)
# Generate sample data for demonstration
print("Generating sample shipment data...")
sample_data = data_processor.generate_sample_data(1000)
print(f"βœ… Generated {len(sample_data)} sample shipments")
# Clean and process data
print("Cleaning and processing data...")
processed_data = data_processor.clean_shipment_data(sample_data)
feature_data = data_processor.create_features(processed_data)
print(f"βœ… Processed data with {len(feature_data.columns)} features")
# Step 2: Machine Learning Model Training
print("\nπŸ€– STEP 2: Machine Learning Model Training")
print("-" * 40)
# Prepare data for ML
X, y = data_processor.prepare_ml_data(feature_data)
print(f"Training data shape: {X.shape}")
print(f"Target distribution: {y.value_counts().to_dict()}")
# Train delay prediction model
print("\nTraining XGBoost delay prediction model...")
metrics = delay_predictor.train_model(X, y)
print(f"βœ… Model trained with {metrics['accuracy']:.1%} accuracy")
# Step 3: Route Optimization
print("\nπŸ—ΊοΈ STEP 3: Route Optimization")
print("-" * 40)
# Build sample route network
print("Building route optimization network...")
# Add major US cities as nodes
cities = {
'NYC': (40.7128, -74.0060),
'LA': (34.0522, -118.2437),
'CHI': (41.8781, -87.6298),
'HOU': (29.7604, -95.3698),
'PHX': (33.4484, -112.0740)
}
for city_id, (lat, lng) in cities.items():
route_optimizer.add_location(city_id, lat, lng, 'city')
# Add routes between cities
city_pairs = [
('NYC', 'CHI'), ('CHI', 'LA'), ('NYC', 'HOU'),
('HOU', 'LA'), ('CHI', 'PHX'), ('PHX', 'LA')
]
for city1, city2 in city_pairs:
route_optimizer.add_route(city1, city2)
print(f"βœ… Built network with {len(cities)} cities and {len(city_pairs)} routes")
# Find optimal routes
print("\nFinding optimal routes NYC -> LA...")
routes = route_optimizer.find_alternative_routes('NYC', 'LA', num_alternatives=3)
for i, route in enumerate(routes[:3]):
if 'error' not in route:
print(f"Route {i+1}: {' -> '.join(route['path'])} "
f"({route['total_cost']:.1f} minutes)")
# Step 4: Delay Prediction Demo
print("\n🎯 STEP 4: Delay Risk Prediction")
print("-" * 40)
# Predict delays for sample shipments
sample_shipments = feature_data.head(10)
X_sample, _ = data_processor.prepare_ml_data(sample_shipments)
if len(X_sample) > 0:
risk_predictions = delay_predictor.predict_delay_risk(X_sample)
print("Sample delay risk predictions:")
for i in range(min(5, len(risk_predictions))):
tracking = sample_shipments.iloc[i]['tracking_number']
risk = risk_predictions.iloc[i]['risk_category']
prob = risk_predictions.iloc[i]['delay_probability']
print(f" {tracking}: {risk} ({prob:.1%} probability)")
# Step 5: Real-time Monitoring
print("\nπŸ“‘ STEP 5: Real-time Monitoring")
print("-" * 40)
# Simulate monitoring
print("Running shipment monitoring system...")
monitoring_results = monitor.monitor_shipments()
print(f"βœ… Monitoring complete:")
print(f" - Active shipments: {monitoring_results['summary'].get('total_active_shipments', 0)}")
print(f" - Total alerts: {monitoring_results['summary'].get('total_alerts', 0)}")
print(f" - High risk shipments: {monitoring_results['summary'].get('high_risk_shipments', 0)}")
# Step 6: Performance Analysis
print("\nπŸ“ˆ STEP 6: Performance Analysis")
print("-" * 40)
performance = analyzer.analyze_delivery_performance(30)
bottlenecks = analyzer.identify_bottlenecks()
if 'error' not in performance:
print(f"βœ… 30-day performance analysis:")
print(f" - Total shipments: {performance.get('total_shipments', 0)}")
print(f" - On-time rate: {performance.get('on_time_rate_percent', 0):.1f}%")
print(f" - Average delay: {performance.get('average_delay_minutes', 0):.1f} minutes")
print(f"\nπŸ” Top delay causes identified:")
for cause in bottlenecks['top_delay_causes'][:3]:
print(f" - {cause['cause']}: {cause['frequency']} incidents, "
f"{cause['avg_delay_minutes']} min avg delay")
# Step 7: Business Impact Summary
print("\nπŸ’Ό STEP 7: Business Impact Summary")
print("-" * 40)
print("🎯 Key Achievements:")
print(f" βœ… Predictive model accuracy: {metrics['accuracy']:.1%}")
print(f" βœ… Route optimization: {len(routes)} alternative routes found")
print(f" βœ… Real-time monitoring: Active alert system")
print(f" βœ… Performance analytics: Bottleneck identification")
print("\nπŸ“Š Expected Business Benefits:")
print(" β€’ 15% reduction in delivery delays")
print(" β€’ Improved customer satisfaction through proactive notifications")
print(" β€’ Real-time visibility into shipment status")
print(" β€’ Data-driven decision making for logistics operations")
print("\nπŸš€ System Ready!")
print("Dashboard available at: http://localhost:8050")
print("Run 'python src/dashboard/app.py' to start the web interface")
return {
'model_accuracy': metrics['accuracy'],
'routes_found': len(routes),
'monitoring_active': True,
'system_status': 'operational'
}
def run_dashboard():
"""Launch the web dashboard"""
print("πŸš€ Starting AI-Powered Shipment Optimization Dashboard...")
try:
from dashboard.app import app
print("Dashboard starting at http://localhost:8050")
app.run_server(debug=False, host='0.0.0.0', port=8050)
except ImportError as e:
print(f"Error importing dashboard: {e}")
print("Please install required dependencies: pip install -r requirements.txt")
except Exception as e:
print(f"Error starting dashboard: {e}")
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser(description='AI-Powered Shipment Route Optimization System')
parser.add_argument('--demo', action='store_true', help='Run system demonstration')
parser.add_argument('--dashboard', action='store_true', help='Start web dashboard')
parser.add_argument('--all', action='store_true', help='Run demo then start dashboard')
args = parser.parse_args()
if args.demo or args.all:
results = demonstrate_system()
print(f"\nDemo completed. Results: {results}")
if args.dashboard or args.all:
if args.all:
print("\n" + "="*60)
input("Press Enter to start the dashboard...")
run_dashboard()
if not any([args.demo, args.dashboard, args.all]):
print("AI-Powered Shipment Route Optimization System")
print("Usage:")
print(" python main.py --demo # Run demonstration")
print(" python main.py --dashboard # Start web dashboard")
print(" python main.py --all # Run demo then dashboard")