Sampling-based Pareto front Refinement via Efficient Adaptive Diffusion
Project description
SPREAD: Sampling-based Pareto front Refinement via Efficient Adaptive Diffusion
SPREAD is a novel sampling-based approach for multi-objective optimization that leverages diffusion models to efficiently refine and generate well-spread Pareto front approximations. It combines the expressiveness of diffusion models with multi-objective optimization principles to achieve both high convergence to the Pareto front and excellent diversity across the objective space. SPREAD demonstrates competitive performance against state-of-the-art methods while providing a flexible framework for different optimization contexts.
🚀 Getting Started
Installation
conda create -n moospread python=3.11
conda activate moospread
pip install moospread
# To install CUDA‐enabled PyTorch, run (or visit: https://pytorch.org/get-started/locally/):
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
Or, to install the latest code from GitHub:
conda create -n moospread python=3.11
conda activate moospread
git clone https://github.com/safe-autonomous-systems/moo-spread.git
cd moo-spread
pip install -e .
# To install CUDA‐enabled PyTorch, run (or visit: https://pytorch.org/get-started/locally/):
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
Basic usage
This example shows how to solve a standard multi-objective optimization benchmark (ZDT2) using the SPREAD solver.
import numpy as np
import torch
# Import the SPREAD solver
from moospread import SPREAD
# Import a test problem
from moospread.tasks import ZDT2
# Define the problem
n_var = 30
problem = ZDT2(n_var=n_var)
# Initialize the SPREAD solver
solver = SPREAD(
problem,
data_size=10000,
timesteps=5000,
num_epochs=1000,
train_tol=100,
num_blocks=3,
validation_split=0.1,
mode="online",
seed=2026,
verbose=True
)
# Solve the problem
results = solver.solve(
num_points_sample=200,
strict_guidance=False,
rho_scale_gamma=0.9,
nu_t=10.0,
eta_init=0.9,
num_inner_steps=10,
lr_inner=0.9,
free_initial_h=True,
use_sigma_rep=False,
kernel_sigma_rep=0.01,
iterative_plot=True,
plot_period=10,
max_backtracks=25,
save_results=True,
samples_store_path="./samples_dir/",
images_store_path="./images_dir/"
)
This will train a diffusion-based multi-objective solver, approximate the Pareto front of the ZDT2 problem, and store generated samples and plots in the specified directories.
Citation
If you find moospread useful in your research, please consider citing:
@inproceedings{
hotegni2026spread,
title={{SPREAD}: Sampling-based Pareto front Refinement via Efficient Adaptive Diffusion},
author={Hotegni, Sedjro Salomon and Peitz, Sebastian},
booktitle={The Fourteenth International Conference on Learning Representations},
year={2026},
url={https://openreview.net/forum?id=4731mIqv89}
}
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file moospread-0.1.1.tar.gz.
File metadata
- Download URL: moospread-0.1.1.tar.gz
- Upload date:
- Size: 86.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b4a5eea12dc4dfbd9f76db49cd1dc672cd1a74542667201ad960c76a2d2055ec
|
|
| MD5 |
34f9daf86e37333b3eb6aacd6528cf97
|
|
| BLAKE2b-256 |
aa77e3e967afe5b4288691c85cc4a1337769a957cbcf196b1026c99a76b0432d
|
File details
Details for the file moospread-0.1.1-py3-none-any.whl.
File metadata
- Download URL: moospread-0.1.1-py3-none-any.whl
- Upload date:
- Size: 104.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
805085db3223dd6ddb4b95ff526b6e29e6daffc18c41b94dd0e3f721c384917b
|
|
| MD5 |
9945e01a837e104cf127a493577fe9aa
|
|
| BLAKE2b-256 |
928a2d1ca9c3a6fabcfc9381cd74f302a040badcda8794a6922dba921aef140b
|