GeoPAS: Geometric Probing for Algorithm Selection in Continuous Black-Box Optimisation
GeoPAS is a learning-based framework for automated algorithm selection in continuous black-box optimisation. It predicts, for each problem instance, which solver in a candidate portfolio is most likely to perform best under a fixed probing budget. This repository contains the data generation, training, evaluation, and analysis code used in the accompanying paper GeoPAS: Geometric Probing for Algorithm Selection in Continuous Black-Box Optimisation.
GeoPAS/
├── functions/
│ ├── model.py
│ └── model_interface.py
├── data_generation/
│ ├── performances/
│ │ ├── ERT_cal.ipynb
│ │ └── relert.csv
│ └── plots/
│ ├── auxiliary_functions.py
│ ├── plot_generation_soo_extensive.py
│ ├── plot_check.ipynb
│ └── AS_BBOB_SOO.code-workspace
├── analyses/
│ ├── analysis.ipynb
│ ├── analysis_utils.py
│ ├── concatenate_over_parameters.ipynb
│ ├── performance_analysis.ipynb
│ └── robustness_over_parameters.ipynb
├── train_parallel.py
├── train.sh
conda env create -f environment.yaml
conda activate as_bbo
1. Build the relERT table
data_generation/performances/ERT_cal.ipynb produces the table, which is also given as data_generation/performances/relert.csv.
2. Generate multi-slice .npz data
PROJECT_ROOT="$PROJECT_ROOT" \
python data_generation/plots/plot_generation_soo_extensive.py
will write data under:
$PROJECT_ROOT/data/bbob_by_deepela/maxscale_0.7_logscale_true/
depending on the setting.
To run the current sweep:
bash train.sh
To point training explicitly to the generated data:
PROJECT_ROOT="$PROJECT_ROOT" \
DATA_ROOT="$PROJECT_ROOT/data/bbob_by_deepela/maxscale_0.7_logscale_false" \
bash train.sh
Outputs are written under:
$PROJECT_ROOT/results/bbob_by_deepela/results/bbob/
including a summary table and a dataframe of model outputs.
If results over multiple parameter settings are obtained, use analyses/concatenate_over_parameters.ipynb to aggregate them into protocol-wise tables AS_mean_median_p90__{LPO,LIO,RANDOM}__ALL_RUNS.csv, and then into AS_mean_median_p90__MERGED__ALL_RUNS.csv.
- analyses/robustness_over_parameters.ipynb summarises performance over parameter slices.
- analyses/performance_analysis.ipynb compares relERT transforms and portfolio structure.
- analyses/analysis.ipynb rebuilds the failure-mode analysis from saved outputs.
Direct training entry point
To bypass train.sh:
python train_parallel.py \
--protocol all \
--csv data_generation/performances/relert.csv \
--data-root /path/to/data_root \
--out-dir /path/to/results