Hill climber documentation
A flexible simulated annealing optimizer with replica exchange for generating synthetic datasets with specific properties (or whatever else you can dream up).
Hill Climber is a Python package to optimize datasets with user-defined objective functions. It’s particularly useful for:
Generating synthetic data with specific statistical properties
Exploring relationships between different correlation measures
Creating datasets for testing and benchmarking
Educational demonstrations of optimization algorithms
Installation
pip install parallel-hill-climber
For real-time monitoring dashboard support:
pip install parallel-hill-climber[dashboard]
See Installation for more options including development setup.
Features
Replica exchange (parallel tempering): Multiple replicas at different temperatures exchange configurations for improved global optimization
Real-time monitoring dashboard: Streamlit-based modular dashboard for live progress visualization with SQLite backend
Type-safe configuration: Dataclass-based configuration with automatic validation
Flexible objective functions: Define custom objectives for any statistical property
Simulated annealing: Escape local optima and find global solutions
Multi-column data: Optimize datasets with any number of features
Structured state management: ReplicaState dataclass with type hints for clarity and IDE support
Checkpointing: Save and resume long-running optimizations with configurable checkpoint intervals
JIT compilation: Numba-optimized core functions for performance
Data format
Hill Climber works with tabular data in the following format:
Input shape:
(N, M)where N = number of samples (rows), M = number of features (columns)Accepted formats: NumPy arrays or pandas DataFrames
Objective functions: Receive M separate 1D arrays (one per feature column)
For 2 features:
objective_func(x, y)For 3 features:
objective_func(x, y, z)For M features:
objective_func(col1, col2, ..., colM)
Python version support
Python 3.10+
Tested on Python 3.10, 3.11, and 3.12
Links
PyPI Package: parallel-hill-climber
GitHub Repository: hill_climber
Issue Tracker: Issues