A Python library for parallel active learning of mathematical functions, intelligently sampling parameter spaces to minimize evaluations.
Adaptive is a Python library for parallel active learning of mathematical functions. It intelligently samples parameter spaces by selecting the most informative points, reducing the number of function evaluations needed for accurate approximation or optimization. It is designed for computationally expensive functions where each evaluation takes significant time.
Researchers, scientists, and engineers working with expensive-to-evaluate mathematical functions, such as those in physics simulations, engineering design, or numerical analysis, who need efficient parameter space exploration.
Developers choose Adaptive for its combination of adaptive sampling algorithms, parallel execution capabilities, and live visualization, which together provide an efficient and interactive workflow for exploring complex functions with minimal code.
:chart_with_upwards_trend: Adaptive: parallel active learning of mathematical functions
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Focuses computational effort on regions of interest, significantly reducing the number of evaluations needed for expensive functions, as highlighted in the README's emphasis on efficiency for computations taking ≥50ms.
Leverages multiple cores or clusters through built-in backends like concurrent.futures, mpi4py, and distributed, enabling faster evaluations for resource-intensive tasks.
Provides real-time plotting and info widgets in Jupyter notebooks, allowing users to monitor the learning process dynamically, as demonstrated in the example GIFs.
Offers specialized learners for 1D, 2D, ND functions, integration, and averaging, catering to diverse mathematical problems with customizable loss functions.
The README explicitly states inefficiency for function evaluations under ≈50ms, making it poorly suited for cheap computations where adaptive sampling adds unnecessary latency.
Requires manual installation of labextensions like @jupyter-widgets/jupyterlab-manager for full functionality, adding complexity compared to plain Jupyter notebook usage.
Relies on external libraries (e.g., mpi4py, distributed) for cluster computing, which can complicate deployment and introduce dependency management issues.