Skip to content

haraldschilly/panobbgo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

700 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Panobbgo: Parallel Noisy Black-Box Global Optimization

Tests

Panobbgo minimizes a function over a box in $R^n$ (n = dimension of the problem) while respecting a vector of constraint violations.

Panobbgo is a framework for black-box optimization that includes out-of-the-box runnable examples for testing and demonstration. Use the example scripts in sketchpad/ to see complete optimization runs, or import components directly to build custom optimization pipelines.

Documentation

  • 📚 Documentation - Complete user guide with setup instructions
  • Guide - Source documentation files (reStructuredText)

Installation

Using UV (Recommended)

UV is a fast Python package manager. Install it first:

curl -LsSf https://astral.sh/uv/install.sh | sh

Then clone and install panobbgo:

git clone https://github.com/haraldschilly/panobbgo.git
cd panobbgo
uv sync --extra dev

Using pip

git clone https://github.com/haraldschilly/panobbgo.git
cd panobbgo
pip install -e .

For development:

pip install -e ".[dev]"

Dependencies

Panobbgo requires Python 3.11 or later. Core dependencies include:

  • NumPy, SciPy, Pandas (Data processing)
  • Matplotlib (Visualization)
  • Statsmodels, Scikit-learn (Statistical models)
  • Dask (Parallel computing)

For a complete and up-to-date list of dependencies with version requirements, please refer to pyproject.toml.

Development dependencies include pytest, flake8, black, mypy, and others. See the [project.optional-dependencies] section in pyproject.toml.

Running Tests

# With UV
uv run pytest

# With pip/virtualenv
pytest

# Run with coverage
pytest --cov=panobbgo

All 27 tests should pass.

Type Checking

This project uses Pyright for static type checking:

# Run type checker
uv run pyright panobbgo

# Or with pip/virtualenv
pyright panobbgo

Usage

One-time Setup

  1. Local evaluation: By default, Panobbgo uses threaded local evaluation. No additional setup is required.
  2. Distributed evaluation (optional): For large-scale problems, you can use Dask. Setup your cluster according to the Dask distributed documentation.
  3. panobbgo.lib contains the problem definitions (Rosenbrock, HelicalValley, etc.)
  4. After running it the first time, it will create a config.ini file
  5. Configure your evaluation settings in config.yaml or config.ini if needed.

Running Optimization

  1. Default: Run your optimization script - it uses local threads by default.
  2. Dask cluster: Set evaluation.method: dask in your config and start your cluster manually: dask scheduler & dask worker localhost:8786 --nprocs 4 &

Example:

from panobbgo.lib.classic import Rosenbrock
from panobbgo.core import StrategyRoundRobin

# Define the problem
problem = Rosenbrock(dim=5)

# Setup and run optimization
strategy = StrategyRoundRobin(problem)
# ... configure heuristics and run

License

Apache 2.0

Credits

Based on ideas of Snobfit:

Authors

History

This project was revived in 2026 with the help of coding agents like Jules and Claude Code.

About

solver for parallel noisy global black-box optimization -- this is currently only work in progress

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages