# PyMBO: Python Multi-objective Bayesian Optimization
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
[](https://github.com/jakub-jagielski/pymbo)
PyMBO is a comprehensive framework for multi-objective Bayesian optimization that combines advanced algorithms with intuitive visualization capabilities. The framework is designed for researchers and practitioners working with complex optimization problems involving multiple objectives and high-dimensional parameter spaces.
## Features
### Core Optimization
- **Multi-objective Bayesian optimization** using PyTorch and BoTorch backends
- **Hybrid sequential/parallel execution** with automatic mode detection
- **Multiple acquisition functions** including Expected Hypervolume Improvement (EHVI)
- **Support for mixed parameter types** (continuous, discrete, categorical)
### Screening and Analysis
- **SGLBO (Stochastic Gradient Line Bayesian Optimization)** for efficient parameter space exploration
- **Parameter importance analysis** with correlation matrices
- **Real-time visualization** of acquisition functions and optimization progress
- **Comprehensive benchmarking** tools for algorithm comparison
### Interface and Usability
- **Graphical user interface** with interactive controls
- **Programmatic API** for integration into existing workflows
- **Export capabilities** for results and visualizations
- **Extensive documentation** and examples
## Installation
### From PyPI (Recommended)
```bash
pip install pymbo
```
### From Source
```bash
git clone https://github.com/jakub-jagielski/pymbo.git
cd pymbo
pip install -r requirements.txt
```
## Quick Start
### Graphical Interface
Launch the application with:
```bash
python -m pymbo
```
### Programmatic Usage
```python
from pymbo import EnhancedMultiObjectiveOptimizer, SimpleController
# Define optimization problem
optimizer = EnhancedMultiObjectiveOptimizer(
bounds=[(0, 10), (0, 10)], # Parameter bounds
objectives=['maximize'] # Optimization direction
)
# Initialize controller and run optimization
controller = SimpleController(optimizer)
results = controller.run_optimization()
```
### Parallel Optimization
```python
from pymbo.core.controller import SimpleController
controller = SimpleController()
# Benchmark multiple strategies
benchmark_results = controller.benchmark_optimization_strategies(
strategies=['ehvi', 'ei', 'random'],
n_suggestions=10,
parallel=True
)
# What-if analysis
scenarios = [
{'name': 'conservative', 'n_suggestions': 5},
{'name': 'aggressive', 'n_suggestions': 15}
]
what_if_results = controller.run_what_if_analysis(
scenarios=scenarios,
parallel=True
)
```
## SGLBO Screening Module
For complex parameter spaces, PyMBO includes a specialized screening module that provides efficient initial exploration:
```python
from pymbo.screening import ScreeningOptimizer
optimizer = ScreeningOptimizer(
params_config=parameters_configuration,
responses_config=responses_configuration
)
results = optimizer.run_screening()
```
The screening module provides:
- Parameter sensitivity analysis
- Response surface approximation
- Design space reduction
- Seamless integration with main optimization
## Architecture
```
pymbo/
├── core/ # Optimization algorithms and controllers
│ ├── optimizer.py # Core optimization implementation
│ ├── controller.py # Optimization control and orchestration
│ └── orchestrator.py # Parallel execution management
├── gui/ # Graphical user interface components
├── screening/ # SGLBO screening optimization
├── utils/ # Utilities for plotting and analysis
└── ...
```
The framework uses a modular design that separates:
- **Optimization algorithms** (core module)
- **User interfaces** (GUI and programmatic API)
- **Analysis tools** (screening and utilities)
- **Visualization** (integrated plotting and export)
## Performance Characteristics
PyMBO's hybrid architecture provides:
- **Automatic parallelization** for embarrassingly parallel tasks
- **Sequential execution** for interactive optimization
- **Memory-efficient** handling of large parameter spaces
- **GPU acceleration** support where applicable
Typical performance improvements:
- 2-10x speedup for strategy benchmarking
- 3-8x faster data loading for large datasets
- Efficient memory usage for high-dimensional problems
## Documentation and Examples
The framework includes comprehensive documentation covering:
- Algorithm implementation details
- User interface guides
- API reference
- Performance benchmarks
- Integration examples
## Contributing
We welcome contributions from the research community. To contribute:
1. Fork the repository
2. Create a feature branch
3. Implement your changes with appropriate tests
4. Submit a pull request with a clear description
Please ensure that contributions maintain code quality and include appropriate documentation.
## Citation
If you use PyMBO in your research, please cite:
```bibtex
@software{jagielski2025pymbo,
author = {Jakub Jagielski},
title = {PyMBO: A Python library for multivariate Bayesian optimization and stochastic Bayesian screening},
version = {3.2.2},
year = {2025},
url = {https://github.com/jakub-jagielski/pymbo}
}
```
## Development
PyMBO was developed with the assistance of [Anthropic's Claude Code](https://docs.anthropic.com/en/docs/claude-code), an AI-powered development tool that enhanced the implementation of optimization algorithms, GUI components, and documentation.
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## Support
For questions, bug reports, or feature requests, please use the [GitHub Issues](https://github.com/jakub-jagielski/pymbo/issues) system.
Raw data
{
"_id": null,
"home_page": "https://github.com/yourusername/pymbo",
"name": "pymbo",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "bayesian-optimization, multi-objective, optimization, machine-learning",
"author": "Jakub Jagielski",
"author_email": "Jakub Jagielski <jakub.jagielski@example.com>",
"download_url": "https://files.pythonhosted.org/packages/5a/4d/b72e186d28db21a8544315521641e231538e3b6457a12ccc2232288058dc/pymbo-3.2.2.tar.gz",
"platform": null,
"description": "# PyMBO: Python Multi-objective Bayesian Optimization\r\n\r\n[](https://www.python.org/downloads/)\r\n[](https://opensource.org/licenses/MIT)\r\n[](https://github.com/jakub-jagielski/pymbo)\r\n\r\nPyMBO is a comprehensive framework for multi-objective Bayesian optimization that combines advanced algorithms with intuitive visualization capabilities. The framework is designed for researchers and practitioners working with complex optimization problems involving multiple objectives and high-dimensional parameter spaces.\r\n\r\n## Features\r\n\r\n### Core Optimization\r\n- **Multi-objective Bayesian optimization** using PyTorch and BoTorch backends\r\n- **Hybrid sequential/parallel execution** with automatic mode detection\r\n- **Multiple acquisition functions** including Expected Hypervolume Improvement (EHVI)\r\n- **Support for mixed parameter types** (continuous, discrete, categorical)\r\n\r\n### Screening and Analysis\r\n- **SGLBO (Stochastic Gradient Line Bayesian Optimization)** for efficient parameter space exploration\r\n- **Parameter importance analysis** with correlation matrices\r\n- **Real-time visualization** of acquisition functions and optimization progress\r\n- **Comprehensive benchmarking** tools for algorithm comparison\r\n\r\n### Interface and Usability\r\n- **Graphical user interface** with interactive controls\r\n- **Programmatic API** for integration into existing workflows\r\n- **Export capabilities** for results and visualizations\r\n- **Extensive documentation** and examples\r\n\r\n## Installation\r\n\r\n### From PyPI (Recommended)\r\n```bash\r\npip install pymbo\r\n```\r\n\r\n### From Source\r\n```bash\r\ngit clone https://github.com/jakub-jagielski/pymbo.git\r\ncd pymbo\r\npip install -r requirements.txt\r\n```\r\n\r\n## Quick Start\r\n\r\n### Graphical Interface\r\nLaunch the application with:\r\n```bash\r\npython -m pymbo\r\n```\r\n\r\n### Programmatic Usage\r\n```python\r\nfrom pymbo import EnhancedMultiObjectiveOptimizer, SimpleController\r\n\r\n# Define optimization problem\r\noptimizer = EnhancedMultiObjectiveOptimizer(\r\n bounds=[(0, 10), (0, 10)], # Parameter bounds\r\n objectives=['maximize'] # Optimization direction\r\n)\r\n\r\n# Initialize controller and run optimization\r\ncontroller = SimpleController(optimizer)\r\nresults = controller.run_optimization()\r\n```\r\n\r\n### Parallel Optimization\r\n```python\r\nfrom pymbo.core.controller import SimpleController\r\n\r\ncontroller = SimpleController()\r\n\r\n# Benchmark multiple strategies\r\nbenchmark_results = controller.benchmark_optimization_strategies(\r\n strategies=['ehvi', 'ei', 'random'],\r\n n_suggestions=10,\r\n parallel=True\r\n)\r\n\r\n# What-if analysis\r\nscenarios = [\r\n {'name': 'conservative', 'n_suggestions': 5},\r\n {'name': 'aggressive', 'n_suggestions': 15}\r\n]\r\nwhat_if_results = controller.run_what_if_analysis(\r\n scenarios=scenarios, \r\n parallel=True\r\n)\r\n```\r\n\r\n## SGLBO Screening Module\r\n\r\nFor complex parameter spaces, PyMBO includes a specialized screening module that provides efficient initial exploration:\r\n\r\n```python\r\nfrom pymbo.screening import ScreeningOptimizer\r\n\r\noptimizer = ScreeningOptimizer(\r\n params_config=parameters_configuration,\r\n responses_config=responses_configuration\r\n)\r\n\r\nresults = optimizer.run_screening()\r\n```\r\n\r\nThe screening module provides:\r\n- Parameter sensitivity analysis\r\n- Response surface approximation \r\n- Design space reduction\r\n- Seamless integration with main optimization\r\n\r\n## Architecture\r\n\r\n```\r\npymbo/\r\n\u251c\u2500\u2500 core/ # Optimization algorithms and controllers\r\n\u2502 \u251c\u2500\u2500 optimizer.py # Core optimization implementation\r\n\u2502 \u251c\u2500\u2500 controller.py # Optimization control and orchestration\r\n\u2502 \u2514\u2500\u2500 orchestrator.py # Parallel execution management\r\n\u251c\u2500\u2500 gui/ # Graphical user interface components\r\n\u251c\u2500\u2500 screening/ # SGLBO screening optimization\r\n\u251c\u2500\u2500 utils/ # Utilities for plotting and analysis\r\n\u2514\u2500\u2500 ...\r\n```\r\n\r\nThe framework uses a modular design that separates:\r\n- **Optimization algorithms** (core module)\r\n- **User interfaces** (GUI and programmatic API) \r\n- **Analysis tools** (screening and utilities)\r\n- **Visualization** (integrated plotting and export)\r\n\r\n## Performance Characteristics\r\n\r\nPyMBO's hybrid architecture provides:\r\n- **Automatic parallelization** for embarrassingly parallel tasks\r\n- **Sequential execution** for interactive optimization\r\n- **Memory-efficient** handling of large parameter spaces\r\n- **GPU acceleration** support where applicable\r\n\r\nTypical performance improvements:\r\n- 2-10x speedup for strategy benchmarking\r\n- 3-8x faster data loading for large datasets\r\n- Efficient memory usage for high-dimensional problems\r\n\r\n## Documentation and Examples\r\n\r\nThe framework includes comprehensive documentation covering:\r\n- Algorithm implementation details\r\n- User interface guides\r\n- API reference\r\n- Performance benchmarks\r\n- Integration examples\r\n\r\n## Contributing\r\n\r\nWe welcome contributions from the research community. To contribute:\r\n\r\n1. Fork the repository\r\n2. Create a feature branch\r\n3. Implement your changes with appropriate tests\r\n4. Submit a pull request with a clear description\r\n\r\nPlease ensure that contributions maintain code quality and include appropriate documentation.\r\n\r\n## Citation\r\n\r\nIf you use PyMBO in your research, please cite:\r\n\r\n```bibtex\r\n@software{jagielski2025pymbo,\r\n author = {Jakub Jagielski},\r\n title = {PyMBO: A Python library for multivariate Bayesian optimization and stochastic Bayesian screening},\r\n version = {3.2.2},\r\n year = {2025},\r\n url = {https://github.com/jakub-jagielski/pymbo}\r\n}\r\n```\r\n\r\n## Development\r\n\r\nPyMBO was developed with the assistance of [Anthropic's Claude Code](https://docs.anthropic.com/en/docs/claude-code), an AI-powered development tool that enhanced the implementation of optimization algorithms, GUI components, and documentation.\r\n\r\n## License\r\n\r\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\r\n\r\n## Support\r\n\r\nFor questions, bug reports, or feature requests, please use the [GitHub Issues](https://github.com/jakub-jagielski/pymbo/issues) system.\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Python Multi-objective Bayesian Optimization framework",
"version": "3.2.2",
"project_urls": {
"Bug Reports": "https://github.com/yourusername/pymbo/issues",
"Documentation": "https://github.com/yourusername/pymbo#readme",
"Homepage": "https://github.com/yourusername/pymbo",
"Source": "https://github.com/yourusername/pymbo"
},
"split_keywords": [
"bayesian-optimization",
" multi-objective",
" optimization",
" machine-learning"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "1763a7c42be2fb674ffe31a69be93a95b0893e96242f47989f65b919b22df1db",
"md5": "b459eb38314698988d0b24f0313ee617",
"sha256": "2b6b653ed72d5593324d59ecd6d96716f54ec43dcdefe2790c7caeff7ae9591c"
},
"downloads": -1,
"filename": "pymbo-3.2.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b459eb38314698988d0b24f0313ee617",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 474040,
"upload_time": "2025-08-09T14:22:33",
"upload_time_iso_8601": "2025-08-09T14:22:33.717906Z",
"url": "https://files.pythonhosted.org/packages/17/63/a7c42be2fb674ffe31a69be93a95b0893e96242f47989f65b919b22df1db/pymbo-3.2.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5a4db72e186d28db21a8544315521641e231538e3b6457a12ccc2232288058dc",
"md5": "86551881455c72513f7a7a180e2f3d44",
"sha256": "ce839a30fb8568c1b26c1dfc68aec890ae7020fc288514c4d7410c2aff922a58"
},
"downloads": -1,
"filename": "pymbo-3.2.2.tar.gz",
"has_sig": false,
"md5_digest": "86551881455c72513f7a7a180e2f3d44",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 432793,
"upload_time": "2025-08-09T14:22:35",
"upload_time_iso_8601": "2025-08-09T14:22:35.591740Z",
"url": "https://files.pythonhosted.org/packages/5a/4d/b72e186d28db21a8544315521641e231538e3b6457a12ccc2232288058dc/pymbo-3.2.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-09 14:22:35",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "yourusername",
"github_project": "pymbo",
"github_not_found": true,
"lcname": "pymbo"
}