This repository implements a Quantum Approximate Optimization Algorithm (QAOA) approach to solve the Oversubscribed Satellite Scheduling Problem (OSSP).
The implementation is based on the paper:
📄 Applying QAOA to the Oversubscribed Satellite Scheduling Problem
The OSSP consists of assigning communication tasks between satellites and ground stations under the following constraints:
- ⏱️ Respect time windows
⚠️ Avoid conflicts (same ground station at overlapping times)\- 📈 Maximize the number of executed tasks
When resources are insufficient, some tasks must be discarded.
The problem is:
- formulated as a QUBO (Quadratic Unconstrained Binary Optimization)
- mapped into a quantum circuit
- Initialize a superposition state\ì
- Apply:
- Cost Hamiltonian (
$H_C$ ) - Mixing Hamiltonian (
$H_B$ )
- Cost Hamiltonian (
- Optimize parameters (
$\gamma, \beta$ ) using a classical optimizer - Measure and extract candidate solutions
python3 Solver/main.py \
--fname Problem_3Sat3Gs_16qbits_0.json \
--minp 1 \
--maxp 3 \
--nsamples 100 \
--penalty 2 \
--optimizer COBYLApython3 Solver/main.py \
--fname Problem_3Sat3Gs_16qbits_0.json \
--minp 1 \
--maxp 3 \
--nsamples 100 \
--penalty 2 \
--optimizer COBYLA \
--log_to_filepython3 Solver/main.py \
--fname Problem_3Sat3Gs_16qbits_0.json \
--minp 1 \
--maxp 3 \
--nsamples 100 \
--penalty 2 \
--optimizer COBYLA \
--log_to_file \
--save_samplespython3 Solver/main.py --helpParameter Description
--fname Input problem file (JSON)
--minp Minimum QAOA depth
--maxp Maximum QAOA depth
--nsamples Number of samples
--penalty Constraint penalty coefficient
--optimizer Classical optimizer (e.g. COBYLA)
--log_to_file Save logs to file
--save_samples Save sampled solutions
Problem instances are provided as JSON files containing:
- Satellites
- Ground stations
- Time windows
- 🚀 Execution on real quantum hardware
- ⚙️ Improved parameter optimization strategies
- 📊 Benchmarking against classical solvers
- 📈 Scaling to larger problem instances
Contributions are welcome!