Inspiration
Real-world mission planning involves solving complex optimization problems with competing constraints and objectives. We were inspired by the challenge of creating a unified framework that elegantly handles two fundamentally different domains—aircraft routing and spacecraft scheduling—using a single optimization engine. This mirrors real operational scenarios where multiple assets must be planned simultaneously under resource constraints.
What it does
Our framework automatically optimizes missions for both aircraft and spacecraft:
Aircraft Module:
- Plans optimal flight routes between waypoints
- Respects no-fly zones using geofencing (Shapely polygons)
- Manages battery constraints (300 Wh capacity, 120W power draw)
- Achieves OPTIMAL 199-second routes with 100% reliability (Monte Carlo validated)
Spacecraft Module:
- Schedules observations and downlinks based on satellite visibility windows
- Handles complex mission constraints: battery, duty cycles, contact windows
- Optimizes activity selection to maximize value
- Achieves OPTIMAL schedules: 65 of 96 activities, zero constraint violations
How we built it
Problem Formulation: Analyzed both problem domains and identified common patterns (activities, time windows, resource constraints)
Unified Solver: Implemented
UnifiedCPSATEngineusing Google OR-Tools CP-SAT constraint programming solverDomain Adapters: Created separate adapters (Adapter Pattern) to map domain-specific problems into unified activity-based model
Constraint Modeling: Implemented proper CP-SAT constraints using
OnlyEnforceIf()for conditional logic, avoiding non-linear expressionsPerformance Optimization:
- Removed N² transition graphs (112,560 → 2,048 constraints, 98% reduction)
- Optimized time discretization (60s → 300s buckets)
- Achieved 100x speedup
Validation Framework: Built Monte Carlo analysis, route comparisons, and constraint violation checks
Visualization: Created professional Matplotlib visualizations for routes, battery profiles, and timelines
Challenges we ran into
Challenge 1: Non-linear Constraint Bug
- Problem: Solver returned UNKNOWN due to invalid constraint:
e * in_bucket(variable multiplication) - Solution: Replaced with proper conditional constraints using
OnlyEnforceIf() - Impact: Both solvers now achieve OPTIMAL
Challenge 2: Memory/Timeout Issues
- Problem: Spacecraft solver timing out with 112,560 transition constraints
- Solution: Removed unnecessary N² transition graphs, kept only OBS→DL transitions (2,048 constraints)
- Impact: Solve time reduced from timeout to 0.3 seconds
Challenge 3: Complex Problem Formulation
- Problem: Difficulty mapping domain-specific concepts to optimization model
- Solution: Used adapter pattern for clean separation between domain and solver logic
- Impact: Code became maintainable and extensible
Challenge 4: Reliability Validation
- Problem: How to prove solution reliability in stochastic environment?
- Solution: Implemented comprehensive Monte Carlo analysis (100 simulation runs)
- Impact: Achieved 100% success rate with quantified battery margins
Accomplishments that we're proud of
✅ Dual OPTIMAL Solutions: Both aircraft and spacecraft solvers consistently achieve OPTIMAL status
✅ 100x Performance Improvement: Through intelligent constraint reduction and optimization
✅ 100% Reliability: Aircraft mission validated with Monte Carlo achieving 100% success rate
✅ Zero Constraint Violations: Spacecraft mission satisfies all battery and duty cycle constraints
✅ Professional Architecture: Clean code with proper design patterns (Adapter, separation of concerns)
✅ Comprehensive Validation: Monte Carlo analysis, route comparisons, battery experiments
✅ Production-Ready Quality: Professional visualizations, complete documentation, clean Git history
What we learned
Constraint Programming Mastery: Deep understanding of how to properly model constraints in CP-SAT without non-linear expressions
Performance is About Modeling: 98% performance improvement came from better problem formulation, not solver tuning
Architecture Matters: Using adapter pattern and domain separation made code significantly more maintainable
Validation is Critical: Comprehensive testing (Monte Carlo, statistical analysis) provides confidence in solutions
Real-world Optimization: Balancing multiple competing objectives requires careful constraint hierarchy and objective design
Time Discretization Trade-offs: Choosing appropriate time buckets (5-minute intervals) is crucial for both accuracy and performance
What's next for Unified Mission Planner: Aircraft & Spacecraft Optimization
Short-term Enhancements:
- Add wind model for aircraft routing
- Implement dynamic re-planning capabilities
- Support for multi-aircraft/spacecraft coordination
Long-term Vision:
- Extend to additional domains (ground vehicles, UAVs)
- Real-time mission replanning under uncertainty
- Integration with actual flight/orbital mechanics simulators
- Cloud deployment for large-scale operations
- Multi-objective optimization (cost, time, energy, risk)
Research Directions:
- Machine learning for constraint prediction
- Distributed solving for large problem instances
- Robust optimization under uncertainty
- Integration with IoT systems for live data
Built With
- git
- google-or-tools-9.0+-(cp-sat-solver)
- matplotlib-(visualization)
- numpy-(numerical-computing)
- python-3.7+
- shapely-(geospatial/geofencing)
Log in or sign up for Devpost to join the conversation.