Skip to main content

moospread logo

PyPI version Documentation

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)

Source distribution for moospread 0.1.6
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)

Table of built distributions (wheels) for moospread 0.1.6
File Interpreter ABI Platform Actions
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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page