Metadata-Version: 2.1
Name: biogeme-optimization
Version: 0.0.7
Summary: Various optimization algorithms for teaching and research
Home-page: http://biogeme.epfl.ch
Author: Michel Bierlaire
Author-email: michel.bierlaire@epfl.ch
Project-URL: Code, https://github.com/michelbierlaire/optimization
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Mathematics
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Cython
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Description-Content-Type: text/markdown
Requires-Dist: numpy>=1.24.2
Requires-Dist: scipy>=1.10.1
Requires-Dist: matplotlib>=3.8.2
Requires-Dist: tomlkit>=0.12.5
Provides-Extra: testing
Requires-Dist: pytest>=7.2.0; extra == "testing"
Requires-Dist: pytest-cov>=4.0.0; extra == "testing"
Requires-Dist: tox>=3.27.1; extra == "testing"

# biogeme-optimization
[![PyPi](https://img.shields.io/pypi/v/biogeme_optimization.svg)](https://pypi.python.org/pypi/biogeme_optimization)

Various optimization algorithms used for teaching and research

The package contains the following modules:

## teaching
It contains various functions and classes to teach optimization.

## algebra
It contains functions dealing with linear algebra:

- A modified Cholesky factorization introduced by Schnabel and Eskow (1999)
- The calculation of a descent direction based on this factorization.

## bfgs
The functions in this module calculate 

- the BFGS update of the hessian approximation (see Eq. (13.12) in Bierlaire (2015)),
- the inverse BFGS update of the hessian approximation (see Eq. (13.13) in Bierlaire (2015)).

## bounds
This module mainly defines the class `Bounds`that manages the bound constraints.

## diagnostics
This module defines the diagnostic of some optimization subproblems
(dogleg, and comjugate gradient).

## exceptions
It defines the `OptimizationError` exception.

## format
It defines the class `FormattedColumns` that formats the information
reported at each iteration of an algorithm.

## function
It defines the abstract class `FunctionToMinimize` that encapsulate
the calculation of the objective function and its derivatives.

## hybrid_function
It defines the class `HybridFunction` that calculates the objective
function and its derivatives, where the second derivative can be
either the analytical hessian, or a BFGS approximation.

## linesearch
This module implements the line search algorithms (see Chapter 11 in Bierlaire, 2015).

## simple_bounds
This module implements the minimization algorithm under bound
constraints proposed by Conn et al. (1988).

## trust_region
This module implements the trust region algorithms (see Chapter 12 in
Bierlaire, 2015).

## References

- Bierlaire, M. (2015). [Optimization: Principles and
  Algortihms](https://transp-or.epfl.ch/books/optimization/html/OptimizationPrinciplesAlgorithms2018.pdf). EPFL
  Press.
- Conn, A. R., Gould, N. I. M and Toint, Ph. L. (1988) [Testing a
  Class of Methods for Solving Minimization Problems with Simple
  Bounds on the
  Variables](https://www.ams.org/journals/mcom/1988-50-182/S0025-5718-1988-0929544-3/S0025-5718-1988-0929544-3.pdf). Mathematics
  of Computation, 50(182), 399-430.
- Schnabel, R. B. and Eskow, E. (1999) [A Revised Modified Cholesky Factorization Algorithm](https://doi.org/10.1137/s105262349833266x). SIAM Journal on Optimization, 9(4), 1135-1148.
