Digital Twin ➔ Hub Recovery Simulation

Hub Operations Integrity

> Identified $122,342.50 in net operational savings during a simulated 4-hour hub disruption by building a multi-constraint decision engine that balances passenger protection costs against regulatory guardrails and network stability.

Net Operational Savings

$122,342

4-Hour Recovery Window

Bag Backlog Cleared

370 Bags

via Latent Cargo Capacity

Downstream Legs Protected

12 Flights

Cascading Cancellations Avoided

Decision Framework

MCT Cliff Model

Hold vs. Push Cost Engine

Simulation Outputs

Cost Avoidance by Flight

Net Savings per Flight: Strategic Hold vs. Regulatory Push

Recovery Throughput

Hub Operations Recovery: Total Throughput (4-Hour Window)

Decision Engine

The core logic compares the Cost of Passenger Protection against the Cost of Holding (delay + crew risk + gate conflict) to make a financially-optimal HOLD or PUSH decision per flight. A Regulatory Guardrail overrides when FAA Part 117 duty limits are threatened.

analyze_bottleneck_impact.py
# COST MODELING: NETWORK RISK (DELAY + CONNECTIONS + CREW)
def calculate_network_risk(mins, onboard_pax, crew_risk, fc):
    """
    Aggregates all network costs for a hold.
    Non-linear MCT Cliff: delay costs spike at 15 and 30 min marks.
    """
    base_delay_cost = mins * fc['cost_of_delay_per_min']
    
    # 1. The MCT Cliff (Connection Risk)
    multiplier = 1.0
    if 15 < mins <= 30: multiplier = 2.5
    elif mins > 30: multiplier = 5.0
    
    connection_penalty = (onboard_pax * fc['missed_connection_penalty_per_pax']) * (mins / 60)
    
    return base_delay_cost + (connection_penalty * multiplier) + crew_risk

# REGULATORY GUARDRAIL: FAA Part 117 Duty Limit Check
def calculate_crew_timeout_risk(hold_time, crew_data, fc):
    remaining_buffer = crew_data['duty_mins_remaining'] - hold_time
    
    if remaining_buffer <= 10:  # Red Zone
        total_impact = fc['cost_of_crew_timeout'] + \
            (crew_data['downstream_legs'] * fc['downstream_cancellation_buffer'])
        return total_impact
    elif remaining_buffer <= 20:  # Yellow Zone
        return 5000  # Potential sub-out cost
        
    return 0  # Green Zone: Crew is safe

# DECISION LOOP (per flight)
# if protect_cost > total_hold_cost:    → HOLD 15M (absorb delay, save pax)
# elif duty_mins_remaining < 15:        → FORCE PUSH (regulatory override)
# else:                                 → PUSH NOW (cheaper to re-accommodate)

Building the Decision Framework

01

Gate Sheet Ingestion & Passenger Classification

Parsed complex JSON gate manifests to distinguish Local No-Shows (bags already loaded, requiring pit search) from Security Stalls (passengers delayed at checkpoints). This classification drives the rework penalty calculation — a critical variable that proves a "Push Now" can often yield a longer net delay than a strategic 15-minute hold.

02

Non-Linear MCT Cliff & Cost Modeling

Developed a non-linear delay cost curve where penalties spike at the 15-minute and 30-minute marks to model hub misconnections. Integrated gate conflict costs ($180/min tarmac fuel burn for inbound aircraft), crew timeout risk, and downstream cancellation exposure into a single aggregate cost function per flight.

03

Capacity Recovery & Expedite Optimization

Utilized the latent cargo capacity created by passenger no-shows to clear a 370-bag backlog. Applied a "Fill-the-Bin" logic constrained by Maximum Zero Fuel Weight (MZFW), forward cargo volume, and dispatcher-enforced limits. Marginal fuel cost of clearing bags was ~$375 vs. ~$37,500 in avoided courier fees.

Strategic Recommendations

  • • High-Yield segments (LAX, SFO) require a protective holding strategy due to limited re-accommodation frequency and protection costs exceeding $1,000/pax.
  • • Implement automated Part 117 monitoring via duty_mins_remaining to establish Hard-Stop Departure Windows.

Technical Pivot

  • • Evolved from linear cost-of-delay calculator into a Dynamic Hub Ecosystem with multi-constraint network modeling.
  • • Incorporated Strict Positive Passenger Bag Match (PPBM) logic to account for mandatory baggage-offload delays and the 7-minute AFT search latency.

Technical Toolkit

Python 3.11+ JSON / ETL Matplotlib Pandas Cost Optimization Decision Modeling

Analyst Insight

"The rework penalty is the hidden cost of pushing on time. A 15-minute hold for 25 passengers is often faster than a Push-Now that triggers a 70-minute bag search for 10 local no-shows. The data shows that protecting the network is almost always cheaper than protecting the individual segment."

Github Repository

Key Metrics

Standbys Cleared 43
Bags Pulled (PPBM) 93
Bags Expedited 370
Flights Analyzed 10

Questions on this Simulation?