AEOS-Bench is a realistic benchmark and methodology for Earth-Observation constellation scheduling, providing high-fidelity orbital simulation, large-scale task sets, and reference implementations of representative baselines.
- [2025-10-30] 🔥 Our paper "Towards Realistic Earth-Observation Constellation Scheduling: Benchmark and Methodology" is released on arXiv. Code and evaluation scripts are open-sourced.
- Realistic Benchmark. We construct a realistic constellation scheduling benchmark with high-fidelity orbital dynamics, diverse satellite configurations, and large-scale observation tasks.
- Unified Methodology. We provide a unified framework that bridges classical optimization and learning-based approaches, including reference implementations of representative baselines.
- Strong Performance. Our proposed method achieves State-of-the-Art performance on the proposed benchmark across multiple evaluation splits.
We recommend using Conda / pipenv for environment management:
sudo apt install ffmpeg libpq-dev
bash setup.shsetup.sh will create a pipenv environment with Python 3.11.10 and install the required dependencies (PyTorch 2.6.0+cu124, gymnasium, stable-baselines3, etc.).
If you want to use the full dataset to reproduce our paper:
git clone git@hf.co:datasets/MessianX/AEOS-dataset ./data
find ./data -type f -name '*.tar' -print0 \
| xargs -0 -n1 -I{} sh -c 'tar -xf "$1" -C "$(dirname "$1")"' _ {}Or, if you only want to evaluate your own model, you can download the
val_seen / val_unseen / test trajectories from our HuggingFace repo and
unzip them:
# TODO: urls
# suppose you have downloaded the requested tarballs into ./data
find ./data -type f -name '*.tar' -print0 \
| xargs -0 -n1 -I{} sh -c 'tar -xf "$1" -C "$(dirname "$1")"' _ {}After extraction, the file tree should look like:
data/
├── trajectories.1/
│ ├── test/
│ ├── train/
│ │ ├── 00/ # contains pth and json files
│ │ ├── 01/
│ │ └── ...
│ ├── val_seen/
│ └── val_unseen/
├── trajectories.2/
├── trajectories.3/
├── annotations/
│ ├── test.json
│ ├── train.json
│ ├── val_seen.json
│ └── val_unseen.json
├── constellations/
│ ├── test/
│ ├── train/
│ ├── val_seen/
│ └── val_unseen/
├── orbits/
├── satellites/
└── tasksets/
Use the command below to train our model. It will continue until 200,000 iterations.
CUDA_VISIBLE_DEVICES=0 PYTHONPATH=:${PYTHONPATH} \
auto_torchrun -m constellation.new_transformers.train \
test constellation/new_transformers/config.pyUse the command below to evaluate a trained model:
CUDA_VISIBLE_DEVICES=0 WORLD_SIZE=1 RANK=0 \
python -m constellation.rl.eval_all \
work_dir_name \
constellation/rl/config_eval.py \
--load-model-from 'work_dirs/test/checkpoints/iter_100000/model.pth'If you find this work useful, please cite our paper using the metadata in CITATION.cff. GitHub will also show citation formats through the Cite this repository button.
This project is licensed under the Apache-2.0 License. See LICENSE for more information.
This project builds upon several outstanding open-source projects, including Basilisk. We sincerely thank the authors for their valuable contributions to the community.