ML-Optimized Satellite Constellation Design
Use Bayesian optimization to find constellations that maximize coverage with fewer satellites
Last reviewed: March 2026Overview
Designing a satellite constellation is a combinatorial optimization problem of staggering complexity. The design space — altitude, inclination, number of planes, satellites per plane, phasing, orbit type — has thousands of interacting parameters, and evaluating each configuration requires a full orbital simulation that accounts for Earth's oblateness, atmospheric drag, solar radiation pressure, and realistic ground station geometry.
In this project, you'll build an automated constellation design exploration system: Ansys STK handles the high-fidelity orbital simulation and coverage analysis, while Python's Bayesian optimization library (BoTorch or scikit-optimize) intelligently searches the design space. Instead of exhaustive grid search, Bayesian optimization builds a probabilistic model of the objective function and selects the next design point to evaluate based on where improvement is most likely — typically finding near-optimal solutions with 50–100× fewer evaluations than grid search.
This workflow is used by constellation operators like SpaceX (Starlink), OneWeb, and Planet Labs when designing their systems, and by government agencies like DARPA and the Space Force for military constellation planning. It combines orbital mechanics, systems engineering, and modern ML optimization in a uniquely aerospace application.
What You'll Learn
- ✓ Drive Ansys STK programmatically via the STK Python API (STKX or Connect) to automate coverage analysis
- ✓ Define a constellation design space with appropriate parameterization for altitude, inclination, and Walker parameters
- ✓ Implement Bayesian optimization using BoTorch or scikit-optimize as the search strategy
- ✓ Define multi-objective coverage metrics: area coverage percentage, revisit time, and access duration
- ✓ Visualize and interpret Pareto fronts trading off constellation size against coverage performance
Step-by-Step Guide
Set Up STK Python API
Install Ansys STK (educational license available) and the agi.stk12 Python package. Create a Python script that launches STK, creates a scenario, inserts a satellite constellation, defines a coverage grid over a target region (e.g., continental US, polar regions), and extracts coverage metrics.
Start with a Walker Delta constellation as your template: defined by total satellites (T), orbital planes (P), and phasing parameter (F), all at a given altitude and inclination. Write a function evaluate_walker(T, P, F, alt, inc) -> (coverage_pct, mean_revisit_min) that runs STK and returns the metrics.
Define the Design Space
Parameterize the design space with bounds: altitude (400–1200 km for LEO), inclination (30°–97.5°), total satellites (4–60), planes (2–12), phasing (0–P-1). Add discrete parameters: orbit type (circular vs. elliptical) and coverage region (global, polar, mid-latitude).
Run a small grid search (100 random configurations) to understand the landscape. Plot coverage vs. altitude and revisit time vs. inclination. This exploratory analysis reveals which parameters matter most and guides the bounds for optimization.
Implement Bayesian Optimization
Set up BoTorch (built on PyTorch, from Meta) as the Bayesian optimization backend. Define a Gaussian Process surrogate model over the design space. Use Expected Improvement (EI) as the acquisition function — it balances exploration (trying uncertain regions) with exploitation (improving near known good points).
The optimization loop: (1) evaluate 20 random initial designs with STK, (2) fit the GP surrogate, (3) optimize EI to select the next design point, (4) evaluate it with STK, (5) update the GP, repeat. Run for 100–150 total evaluations.
Multi-Objective Optimization
Real constellation design involves trade-offs: more satellites improve coverage but increase cost. Use multi-objective Bayesian optimization with the Expected Hypervolume Improvement (EHVI) acquisition function to simultaneously optimize coverage percentage and minimize total satellite count.
After 100+ evaluations, extract the Pareto front: the set of constellations for which no other design is better in all objectives simultaneously. Plot this front — it reveals the minimum cost to achieve each coverage level.
Analyze Optimal Constellations
Select 3–5 Pareto-optimal constellations for detailed analysis. For each, run STK's full coverage analysis: generate a coverage animation, compute gap statistics (how long regions go uncovered), and analyze seasonal variation in coverage as the Earth tilts relative to the orbital planes.
Compare your optimized constellations against known reference designs: GPS (6 planes, 4 per plane, 20,200 km MEO), Iridium (6 planes, 11 per plane, 780 km LEO). How do your solutions compare? What design principles emerge from the optimization?
Sensitivity Analysis and Robustness
Perform sensitivity analysis on the optimal design: how does coverage degrade if 2–3 satellites fail? What if launch accuracy places satellites 10 km from their target altitude? Use STK to evaluate the degraded constellation configurations.
Use the GP surrogate (trained during optimization) for fast sensitivity exploration — sample thousands of perturbed designs from the surrogate to build a distribution of coverage outcomes. This Monte Carlo analysis on the surrogate would take weeks with direct STK simulation but runs in seconds on the fitted GP.
Career Connection
See how this project connects to real aerospace careers.
Space Operations →
Constellation design and optimization is a foundational skill for commercial and government satellite operators — Planet, SpaceX, and the Space Force all hire for this expertise
Aerospace Engineer →
Systems engineers designing constellation architectures must balance coverage, cost, launch cadence, and operational complexity — optimization tools are central to this work
Astronaut →
Astronauts working on long-duration missions beyond LEO depend on relay constellations for communications; understanding coverage trade-offs informs mission planning decisions
Flight Dispatcher →
Commercial flight dispatchers increasingly rely on satellite communication constellations (Starlink, Iridium) for oceanic tracking — understanding constellation design helps evaluate service reliability
Go Further
Extend toward advanced constellation design research:
- Mixed LEO/MEO — optimize a heterogeneous constellation combining LEO and MEO satellites with different roles (broadband vs. timing/navigation)
- On-orbit servicing — add a constraint on serviceability: the constellation must be accessible to a servicing spacecraft within fuel budget
- Launch cost model — integrate a parametric launch cost model ($/kg to orbit as a function of altitude and inclination) to make the cost objective financially realistic
- Debris avoidance — add a conjunction analysis step using STK's Conjunction Analysis Tool to penalize designs that create high-density orbital shells prone to Kessler syndrome