optimagic is a Python package for numerical optimization. It is a unified interface to optimizers from SciPy, NlOpt, and many other Python packages. Its features include:
- SciPy-compatible API. optimagic's
minimizefunction works just like SciPy's, so you don't have to adjust your code. You simply get more optimizers for free. - Powerful diagnostic tools. Visualize optimizer histories, compare runs, and diagnose convergence problems.
- Parallel numerical derivatives. Compute gradients, jacobians, and hessians with parallel execution.
- Bounded, constrained, and unconstrained optimization. Support for bounds, linear constraints, nonlinear constraints, fixed parameters, and more.
- Statistical inference on estimated parameters. The estimagic subpackage provides functionality for confidence intervals, standard errors, and p-values.
optimagic is available on PyPI and on conda-forge. Install the package with
$ pip install optimagicor
$ conda install -c conda-forge optimagicoptimagic ships with all scipy optimizers out of the box. Additional algorithms become
available if you install optional packages. For an overview of all supported optimizers
and how to enable them, see the
list of algorithms.
import optimagic as om
import numpy as np
def fun(x):
return x @ x
result = om.minimize(fun, params=np.array([1, 2, 3]), algorithm="scipy_lbfgsb")
result.params.round(9) # np.array([0., 0., 0.])You find the documentation at https://optimagic.readthedocs.io with tutorials and how-to guides.
Consult the release notes to find out about what is new.
optimagic is distributed under the terms of the MIT license.
If you use optimagic for your research, please cite it with the following key to help others discover the tool.
@Unpublished{Gabler2024,
Title = {optimagic: A library for nonlinear optimization},
Author = {Janos Gabler},
Year = {2022},
Url = {https://github.com/optimagic-dev/optimagic}
}We thank all institutions that have funded or supported optimagic (formerly estimagic).
![]() |
![]() |
![]() |


