- Aerospace
Airbus: Quantum Optimization for Satellite Constellation Scheduling
Airbus
Airbus Defence and Space formulated satellite imaging scheduling as a QUBO problem and benchmarked D-Wave quantum annealing and QAOA against classical constraint programming for constellation management.
- Key Outcome
- D-Wave hybrid solver was competitive with Google OR-Tools CP-SAT on 200-order instances and 30% faster on medium-sized problems. QAOA at p=2 reached near-optimal on 15-order instances. Airbus filed patents on quantum scheduling methods. Full constellation management still benefits from quantum only as a subproblem solver.
The Problem
Airbus Defence and Space operates Earth observation satellites including the Pleiades constellation and SPOT series. Each satellite passes over a given ground location for a window of minutes per day. Customers submit imaging requests: specific geographic coordinates, resolution requirements, delivery deadlines. The satellite operator must schedule which requests each satellite handles on each pass, subject to hard constraints:
- Power budget: imaging sensors draw significant power; batteries must recharge between long imaging sequences
- On-board memory: raw imagery fills storage quickly; download windows to ground stations are limited
- Attitude slew rate: satellites can only rotate so fast between consecutive image targets
- Priority tiers: defense customers have pre-emption rights over commercial orders
With 200-500 competing orders per day across a multi-satellite constellation, this is a constraint-satisfaction problem that sits in the NP-hard complexity class. Classical approaches use heuristics and constraint programming. Airbus investigated whether quantum annealing and QAOA could find better schedules faster.
QUBO Formulation
The scheduling problem was reformulated as a Quadratic Unconstrained Binary Optimization (QUBO). Binary variable x_{s,r,t} = 1 means satellite s takes image r during time window t.
The objective minimizes missed high-priority orders and resource conflicts. Constraints are encoded as penalty terms added to the objective with a large coefficient lambda.
import dimod
import numpy as np
def build_satellite_scheduling_qubo(
n_satellites: int,
n_requests: int,
n_windows: int,
priorities: list,
conflicts: list,
power_budget: float,
power_costs: np.ndarray,
penalty_lambda: float = 100.0
):
"""
Build QUBO for satellite imaging schedule.
Variables: x[s][r][t] = 1 if satellite s takes request r in window t
Objective: maximize priority-weighted coverage
Constraints (as penalties):
- Each request fulfilled at most once
- Power budget not exceeded per satellite per orbit
- Conflicting requests (attitude slew too large) not both scheduled
"""
bqm = dimod.BinaryQuadraticModel(vartype="BINARY")
# Variable names: (satellite_id, request_id, window_id)
def var(s, r, t):
return f"x_{s}_{r}_{t}"
# Objective: reward for scheduling high-priority requests
for s in range(n_satellites):
for r in range(n_requests):
for t in range(n_windows):
v = var(s, r, t)
# Negative because dimod minimizes
bqm.add_variable(v, -priorities[r])
# Constraint 1: each request scheduled at most once across all sat/windows
for r in range(n_requests):
request_vars = [var(s, r, t)
for s in range(n_satellites)
for t in range(n_windows)]
# Penalty for scheduling same request multiple times: lambda*(sum - 1)^2
# Expanded: lambda * (sum^2 - 2*sum + 1)
for v in request_vars:
bqm.add_variable(v, penalty_lambda * (-2 + 1))
for i, v1 in enumerate(request_vars):
for v2 in request_vars[i+1:]:
bqm.add_interaction(v1, v2, 2 * penalty_lambda)
# Constraint 2: power budget per satellite per pass
for s in range(n_satellites):
for t in range(n_windows):
window_vars = [(var(s, r, t), power_costs[s, r, t])
for r in range(n_requests)]
# Penalize exceeding power budget
for v, cost in window_vars:
bqm.add_variable(v, penalty_lambda * cost * (cost - 2 * power_budget))
for i, (v1, c1) in enumerate(window_vars):
for v2, c2 in window_vars[i+1:]:
bqm.add_interaction(v1, v2, 2 * penalty_lambda * c1 * c2)
# Constraint 3: attitude conflict pairs cannot both be scheduled on same satellite
for s in range(n_satellites):
for (r1, r2, t) in conflicts:
v1 = var(s, r1, t)
v2 = var(s, r2, t)
bqm.add_interaction(v1, v2, penalty_lambda)
return bqm
Solving with D-Wave Hybrid
For problem sizes with hundreds of imaging orders, pure quantum annealing runs into the qubit count limit of the D-Wave Advantage (5,000+ qubits, but connectivity is sparse). D-Wave’s hybrid solver decomposes large BQMs into subproblems and iterates.
from dwave.system import LeapHybridSampler
def solve_with_dwave_hybrid(bqm, time_limit=60):
"""
Submit QUBO to D-Wave Leap hybrid solver.
time_limit in seconds controls how long the hybrid loop runs.
"""
sampler = LeapHybridSampler()
sampleset = sampler.sample(bqm, time_limit=time_limit)
best = sampleset.first
return {
"energy": best.energy,
"solution": best.sample,
"timing": sampleset.info.get("qpu_access_time", None)
}
def decode_schedule(solution, n_satellites, n_requests, n_windows):
"""
Convert QUBO solution back to a human-readable schedule.
Returns list of (satellite, request, window) tuples.
"""
schedule = []
for s in range(n_satellites):
for r in range(n_requests):
for t in range(n_windows):
v = f"x_{s}_{r}_{t}"
if solution.get(v, 0) == 1:
schedule.append((s, r, t))
return schedule
QAOA for Small Instances
Airbus also tested QAOA on IBM hardware for smaller instances (up to 15 imaging orders). At this scale, the QUBO maps to a circuit with manageable qubit count.
from qiskit import QuantumCircuit
from qiskit.circuit import Parameter
from qiskit_aer import AerSimulator
from qiskit_algorithms import QAOA
from qiskit_algorithms.optimizers import COBYLA
from qiskit.primitives import Sampler
def run_qaoa_scheduling(qubo_matrix, n_vars, p=2):
"""
Run QAOA on the scheduling QUBO using Qiskit.
qubo_matrix: (n_vars x n_vars) upper-triangular matrix
p: QAOA circuit depth (number of layers)
"""
from qiskit_optimization import QuadraticProgram
from qiskit_optimization.converters import QuadraticProgramToQubo
from qiskit_optimization.algorithms import MinimumEigenOptimizer
qp = QuadraticProgram()
for i in range(n_vars):
qp.binary_var(name=f"x{i}")
# Add QUBO terms to quadratic program
linear = {f"x{i}": float(qubo_matrix[i, i]) for i in range(n_vars)}
quadratic = {}
for i in range(n_vars):
for j in range(i + 1, n_vars):
if qubo_matrix[i, j] != 0:
quadratic[(f"x{i}", f"x{j}")] = float(qubo_matrix[i, j])
qp.minimize(linear=linear, quadratic=quadratic)
sampler = Sampler()
qaoa = QAOA(sampler=sampler, optimizer=COBYLA(maxiter=300), reps=p)
optimizer = MinimumEigenOptimizer(qaoa)
result = optimizer.solve(qp)
return result.x, result.fval
Results
Airbus tested on instances drawn from real Pleiades constellation scheduling data, anonymized for the research. Key findings:
- D-Wave hybrid matched CP-SAT (Google OR-Tools) solution quality on 200-order instances and was 30% faster wall-clock time on 100-200 order problems
- On 500-order instances, CP-SAT maintained an edge in solution quality; D-Wave hybrid found feasible but suboptimal schedules
- QAOA at p=2 reached near-optimal on 15-order instances running on IBM quantum hardware with zero-noise extrapolation error mitigation
- Full constellation management (1,000+ orders) remains a classical problem; quantum is most useful as a subproblem solver for conflict-heavy orbit windows
Airbus filed patents on quantum-classical hybrid scheduling architectures for satellite operations. The commercial viability assessment targets the D-Wave hybrid approach for operational use in the 2025-2027 timeframe, contingent on API reliability and qubit quality.
The Broader Satellite Scheduling Challenge
This work is distinct from Airbus’s quantum fluid dynamics research (focused on aircraft aerodynamics). The scheduling problem is purely combinatorial and maps more naturally to current quantum annealing hardware than the continuous simulation problems in aerodynamics.
The constraint structure (hard resource limits combined with a soft priority objective) is common across aerospace planning problems: launch windows, crew scheduling, ground station handoffs. Quantum optimization methods developed for satellite scheduling are transferable to this broader class of aerospace operations problems.
Learn more: Qiskit Reference | D-Wave Reference