Skip to main content

Multi-Objective Bayesian Optimization with Gaussian Processes and adaptive noise

Project description

🎯 Multi-Objective Bayesian Optimization (MOBO)

A modular Python library for multi-objective Bayesian optimization using Gaussian Processes (GP) and BoTorch, with optional support for adaptive noise modeling.

Built with PyTorch, GPyTorch, and BoTorch


📦 Features

  • ✔️ Multi-objective optimization with EHVI / ALT-EI
  • ✔️ Independent GP models per objective
  • ✔️ Adaptive noise learning using a neural NoiseNet
  • ✔️ Pareto front extraction and visualization
  • ✔️ Hypervolume logging per step
  • ✔️ Easy-to-extend architecture for experiments

📁 Project Structure

mo_bayes_opt/ ├── models/ # GPModel, NoiseNet, GPTrainer ├── acquisition/ # Acquisition function optimization ├── core/ # BO loop & objective functions ├── utils/ # Logging, visualization ├── experiments/ # Example experiments ├── data/ # Hypervolume log storage


🚀 Quick Start

1. Install Dependencies

pip install -r requirements.txt

2. Run Example Optimization

def joint_objective(x):
    x1 = x[:, 0]
    x2 = x[:, 1]
    interaction = torch.sin(5 * torch.pi * x1 * x2)
    f1 = ((x[:, :3] * torch.sin(3 * torch.pi * x[:, :3])).sum(dim=-1) + 0.5 * interaction)
    f2 = (((1 - x[:, 3:]) * torch.cos(3 * torch.pi * x[:, 3:])).sum(dim=-1) - 0.3 * interaction)
    return torch.stack([f1, f2], dim=-1)

bo = MultiObjectiveBO(
    objective_fn=joint_objective,
    input_dim=3,
    bounds=torch.tensor([[0.0] * 3, [1.0] * 3]),
    ref_point=torch.tensor([0.0, 0.0]),
    strategy="EHVI",
    use_adaptive_noise=False
)
hypervolumes = bo.run(num_repeats=1, num_queries=100)

3. Output

Console: Logs trial progress and hypervolume

File: data/hypervolume_log.csv containing hypervolume progression

📈 Visualization

Use plot_pareto(train_y, trial, step) to visualize the Pareto front at a given step.

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

mo_bayes_opt-0.1.0.tar.gz (7.8 kB view details)

Uploaded Source

Built Distribution

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

mo_bayes_opt-0.1.0-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

Details for the file mo_bayes_opt-0.1.0.tar.gz.

File metadata

  • Download URL: mo_bayes_opt-0.1.0.tar.gz
  • Upload date:
  • Size: 7.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for mo_bayes_opt-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e6c8002e847eb2b90381fc1182dda53c81dbf4f86fab77c56c756499b5bdcf4b
MD5 5d04c7754a59e5dd4822b2593b0e19e7
BLAKE2b-256 db3a2bfdb8f59e5056fd129efd8295747d5da248432b92151055a43b25ab494d

See more details on using hashes here.

File details

Details for the file mo_bayes_opt-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: mo_bayes_opt-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 8.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for mo_bayes_opt-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 072a66ed9679b2e357a19c49f8c47dcbcdfcd07fd83c01d736453d57d38ed2b6
MD5 d2d4b3e25c7a941bb55327ec1cd81307
BLAKE2b-256 526d50ec7b25ca58f4347ae68abd8f168d847652bd65c3239aa9e1c20d424529

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