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 ------------ .. code-block:: bash pip install parallel-hill-climber For real-time monitoring dashboard support: .. code-block:: bash pip install parallel-hill-climber[dashboard] See :doc:`installation` for more options including development setup. .. toctree:: :maxdepth: 2 :caption: Contents: installation quickstart user_guide dashboard api notebooks advanced 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 `__ .. raw:: html Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search`