Metadata-Version: 2.4
Name: humpday
Version: 0.10.0
Summary: Taking the pain out of choosing a Python global optimizer
Project-URL: Homepage, https://github.com/microprediction/humpday
Project-URL: Documentation, https://microprediction.github.io/humpday/
Project-URL: Repository, https://github.com/microprediction/humpday
Project-URL: Bug Tracker, https://github.com/microprediction/humpday/issues
Author-email: microprediction <pcotton@intechinvestments.com>
License-Expression: MIT
License-File: LICENSE
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: <3.15,>=3.9
Provides-Extra: dev
Requires-Dist: black>=23.0.0; extra == 'dev'
Requires-Dist: build>=0.10.0; extra == 'dev'
Requires-Dist: mypy>=1.0.0; extra == 'dev'
Requires-Dist: numpy>=1.21.5; extra == 'dev'
Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
Requires-Dist: pytest>=7.0.0; extra == 'dev'
Requires-Dist: ruff>=0.1.0; extra == 'dev'
Requires-Dist: twine>=4.0.0; extra == 'dev'
Provides-Extra: docs
Requires-Dist: mkdocs-material>=9.0.0; extra == 'docs'
Requires-Dist: mkdocs>=1.5.0; extra == 'docs'
Provides-Extra: experimental
Requires-Dist: bayesian-optimization>=3.0.0; extra == 'experimental'
Requires-Dist: cmaes>=0.10.0; extra == 'experimental'
Requires-Dist: nevergrad>=1.0.0; extra == 'experimental'
Requires-Dist: platypus-opt>=1.0.0; extra == 'experimental'
Provides-Extra: extra
Requires-Dist: optuna>=3.0.0; extra == 'extra'
Provides-Extra: fast
Requires-Dist: numpy>=1.21.5; extra == 'fast'
Provides-Extra: paper
Requires-Dist: jinja2>=3.0.0; extra == 'paper'
Requires-Dist: pandas>=1.3.0; extra == 'paper'
Requires-Dist: seaborn>=0.11.0; extra == 'paper'
Description-Content-Type: text/markdown

# Humpday: Pure Python or Javascript Derivative-Free Optimization

[![CI](https://github.com/microprediction/humpday/workflows/CI/badge.svg)](https://github.com/microprediction/humpday/actions)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)

**[Documentation & Live Demos](https://humpday.microprediction.org)**

22 derivative-free optimization algorithms in pure Python. No compilation, no required dependencies.

## Install & Use

```bash
pip install humpday
```

Zero runtime dependencies. Every algorithm has a pure-Python implementation
that works wherever Python runs.

If you want the numpy-accelerated backend for higher dimensions:

```bash
pip install humpday[fast]
```

The same algorithm code runs either way; humpday transparently uses numpy
when it's available and falls back to pure Python when it isn't.

```python
from humpday import minimize

def objective(x):
    return (x[0] - 2)**2 + (x[1] - 3)**2

result = minimize(objective, bounds=[(-5, 5), (-5, 5)], method='DifferentialEvolution')
print(f"Solution: {result.x}")  # [2.0, 3.0]
```

## Algorithms

22 validated optimizers: **[See them in action](https://humpday.microprediction.org)** | **[Source code](humpday/optimizers/alloptimizers.py)**

Trust region methods, evolutionary algorithms, metaheuristics.

## Comparison

Marginal install footprint on top of a Python environment that already has numpy:

| Library | Adds on top of numpy | Global optimizers |
|---------|---------------------:|------------------:|
| **Humpday** | **~1 MB** (or zero without `[fast]`) | **22** |
| SciPy       | ~100 MB | 6 documented |
| Optuna      | ~30 MB  | 11 samplers |
| Nevergrad   | ~230 MB | 540+ registered (tuned variants of ~30 base methods) |

**Humpday's niche**: when you need optimization that works anywhere Python runs, without dependencies or compilation.

## License

MIT - Use freely in commercial and research projects.
