Skip to content

Ad882/reactive-covering

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Reactive Coverage of a Large Area with a Satellite Constellation 🛰️


🌍 Context and objectives:

  • 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.

📥 Input data:

The input data is stored in the data folder:

  1. Areas of Interest (AoIs):

    • Geographic characteristics (coordinates, visibility windows).
    • List of possible accesses for each satellite (date and duration of passage).
  2. 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.
  3. Observation requests:

    • A request is fulfilled if at least one access is covered during a satellite passage (minimum duration: 30 seconds).

🚀 Optimization problem:

  • 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.

🛠️ Project approach:

  1. Step 1: Familiarization:

    • Analyze the provided data.
    • Define metrics to evaluate solutions (e.g., total cost, request satisfaction).
  2. Step 2: Optimization with full passages:

    • Test a MILP approach using DOCPLEX.
    • Explore heuristic methods (greedy algorithms, metaheuristics).
  3. Step 3: Optimization with partial passages:

    • Select only specific time intervals within passages to reduce costs for the user.
  4. 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.



📋 Requirements:

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

📖 Learn More:

For more details, check the documentation.


ℹ️ Additional Notes:

  • The final project report is in French 🇫🇷.
  • This README serves as an overview of the work and deliverables in English.

About

Basic satellite passage optimizer

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published