- A constellation of 32 low Earth orbit satellites is used to monitor Areas of Interest (AOIs) on a large scale (countries, regions).
- Applications include: forest fire monitoring, flood observation, illicit activity detection, conflicts, and more.
The user aims to:
- 🗺️ Collect data in response to unexpected events within their area of interest.
- 🎯 Reserve satellite passages in advance to avoid conflicts with other users.
- ⏱️ For each sliding window of reactivity duration (2, 4, or 12 hours), select at least one satellite passage covering one of the AOI's accesses.
The input data is stored in the data folder:
-
Areas of Interest (AOIs):
- Geographic characteristics (coordinates, visibility windows).
- List of possible accesses for each satellite (date and duration of passage).
-
Reactivity Objectives:
- Ensure deadlines (12h, 4h, 2h) are respected to cover at least one access within a given window.
- Three
.json
files in data, each corresponding to one of the reactivity constraints.
-
Observation Requests:
- A request is fulfilled if at least one access is covered during a satellite passage (minimum duration: 30 seconds).
-
Decisions to Make:
- Select which satellite passages to reserve.
- Define the start and end intervals for each reservation.
-
Constraints:
- Only one reservation per passage.
-
Criteria to Optimize:
- Minimize costs for the user (fixed fees + cost per unit of reserved time).
- Maximize satisfaction of observation requests.
-
Step 1: Familiarization:
- Analyze the provided data.
- Define metrics to evaluate solutions (e.g., total cost, request satisfaction).
-
Step 2: Optimization with Full Passages:
- Test a MILP approach using DOCPLEX.
- Explore heuristic methods (greedy algorithms, metaheuristics).
-
Step 3: Optimization with Partial Passages:
- Select only specific time intervals within passages to reduce costs for the user.
-
Step 4: Multi-Criteria Problem:
- Perform Pareto analysis (cost vs satisfaction).
- Generate optimal solutions based on multiple criteria.
This project provides the opportunity to explore the entire optimization pipeline, from data formalization to solution visualization.
To run the provided Python code, you need:
- Python 3.8+
- Required libraries (install using
pip install -r requirements.txt
):matplotlib
numpy
docplex
⚠️ DOcplex (IBM Decision Optimization CPLEX Modeling for Python) requires a license, as it is based on the use of IBM CPLEX Optimizer, a commercial product.cartopy
For more details, check the documentation.
- The final project report is in French 🇫🇷.
- This README serves as an overview of the work and deliverables in English.