Skip to content

optimagic is a Python package for numerical optimization. It is a unified interface to optimizers from SciPy, NlOpt and other packages. optimagic's minimize function works just like SciPy's, so you don't have to adjust your code. You simply get more optimizers for free. On top you get diagnostic tools, parallel numerical derivatives and more.

License

Notifications You must be signed in to change notification settings

optimagic-dev/optimagic

Repository files navigation

optimagic


PyPI PyPI - Python Version image image PyPI - License image image image pre-commit.ci status Ruff Downloads NumFOCUS

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 minimize function 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.

Installation

optimagic is available on PyPI and on conda-forge. Install the package with

$ pip install optimagic

or

$ conda install -c conda-forge optimagic

optimagic 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.

Usage

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.])

Documentation

You find the documentation at https://optimagic.readthedocs.io with tutorials and how-to guides.

Changes

Consult the release notes to find out about what is new.

License

optimagic is distributed under the terms of the MIT license.

Citation

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}
}

Acknowledgment

We thank all institutions that have funded or supported optimagic (formerly estimagic).

About

optimagic is a Python package for numerical optimization. It is a unified interface to optimizers from SciPy, NlOpt and other packages. optimagic's minimize function works just like SciPy's, so you don't have to adjust your code. You simply get more optimizers for free. On top you get diagnostic tools, parallel numerical derivatives and more.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Contributors 42

Languages