Skip to main content

Sampling-based Pareto front Refinement via Efficient Adaptive Diffusion

Project description

moospread logo

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

moospread-0.1.1.tar.gz (86.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

moospread-0.1.1-py3-none-any.whl (104.0 kB view details)

Uploaded Python 3

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

Hashes for moospread-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b4a5eea12dc4dfbd9f76db49cd1dc672cd1a74542667201ad960c76a2d2055ec
MD5 34f9daf86e37333b3eb6aacd6528cf97
BLAKE2b-256 aa77e3e967afe5b4288691c85cc4a1337769a957cbcf196b1026c99a76b0432d

See more details on using hashes here.

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

Hashes for moospread-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 805085db3223dd6ddb4b95ff526b6e29e6daffc18c41b94dd0e3f721c384917b
MD5 9945e01a837e104cf127a493577fe9aa
BLAKE2b-256 928a2d1ca9c3a6fabcfc9381cd74f302a040badcda8794a6922dba921aef140b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page