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
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 .
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
problem = ZDT2(n_var=30)
# Initialize the SPREAD solver
solver = SPREAD(
problem,
data_size=10000,
timesteps=1000,
num_epochs=1000,
train_tol=100,
mode="online",
seed=2026,
verbose=True
)
# Solve the problem
res_x, res_y = solver.solve(
num_points_sample=200,
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.
📚 Next steps
For more advanced examples (offline mode, mobo mode, tutorials), see the full documentation.
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}
}
Metadata
Release files for moospread 0.1.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| moospread-0.1.6.tar.gz | 97.7 kB | Without provenance | Details for moospread-0.1.6.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| moospread-0.1.6-py3-none-any.whl | Python 3 | none | any | Details for moospread-0.1.6-py3-none-any.whl |
Total release size: 213.6 kB
Release files / moospread-0.1.6.tar.gz
| Download URL | moospread-0.1.6.tar.gz |
|---|---|
| Size | 97.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9542f69759320fa9a37cb67d51dd9aef0e59ef139060dfc19191a469c0d8b4af
|
|
BLAKE2b-256 checksum How to use checksums |
da9aa50b4ff7aae74fbd9406394f46612a0ee5525409478a59bbd7b5576c6c52
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / moospread-0.1.6-py3-none-any.whl
| Download URL | moospread-0.1.6-py3-none-any.whl |
|---|---|
| Size | 115.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8bfc0c87f5efb8c697bad9511d5e91b584d97d104b2d3e671bdc06db6c8d7b16
|
|
BLAKE2b-256 checksum How to use checksums |
4d69979fd8cdf7f58ea77c378980ec7cbbc6301d784a6a61b5f17cad350095ca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Security for moospread 0.1.6
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.