Panobbgo minimizes a function over a box in
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 - Complete user guide with setup instructions
- Guide - Source documentation files (reStructuredText)
UV is a fast Python package manager. Install it first:
curl -LsSf https://astral.sh/uv/install.sh | shThen clone and install panobbgo:
git clone https://github.com/haraldschilly/panobbgo.git
cd panobbgo
uv sync --extra devgit clone https://github.com/haraldschilly/panobbgo.git
cd panobbgo
pip install -e .For development:
pip install -e ".[dev]"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.
# With UV
uv run pytest
# With pip/virtualenv
pytest
# Run with coverage
pytest --cov=panobbgoAll 27 tests should pass.
This project uses Pyright for static type checking:
# Run type checker
uv run pyright panobbgo
# Or with pip/virtualenv
pyright panobbgo- Local evaluation: By default, Panobbgo uses threaded local evaluation. No additional setup is required.
- Distributed evaluation (optional): For large-scale problems, you can use Dask. Setup your cluster according to the Dask distributed documentation.
panobbgo.libcontains the problem definitions (Rosenbrock, HelicalValley, etc.)- After running it the first time, it will create a
config.inifile - Configure your evaluation settings in
config.yamlorconfig.iniif needed.
- Default: Run your optimization script - it uses local threads by default.
- Dask cluster: Set
evaluation.method: daskin 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 runBased on ideas of Snobfit:
- Harald Schilly harald.schilly@gmail.com
This project was revived in 2026 with the help of coding agents like Jules and Claude Code.