Metadata-Version: 2.1
Name: gpcg
Version: 0.0.1
Summary: An implementation of a conjugate gradient algorithm (GPCG) for solving bound-constrained quadratic programs.
Author-email: Jonathan Lindbloom <jonathan@lindbloom.com>
Project-URL: Homepage, https://github.com/jlindbloom/gradient-projected-conjugate-gradient
Project-URL: Bug Tracker, https://github.com/jlindbloom/gradient-projected-conjugate-gradient/issues
Keywords: quadratic programming,conjugate gradient,bound constraints
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Scientific/Engineering :: Mathematics
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE

# gradient-projected-conjugate-gradient

This repository provides a Python implementation of the gradient projected conjugate gradient algorithm (GPCG) presented in [[1]](#1) for solving bound-constrained quadratic programs of the form
```math
\text{argmin}_{ x_i \in [l_i, u_i] \text{ for } i = 1, \ldots, n } \,\, \frac{1}{2} x^T A x - b^T x
```
where $b \in \mathbb{R}^n$ and $A \in \mathbb{R}^{n \times n}$ is a SPD matrix. Here the $l_i$ and/or $u_i$ may be infinite, e.g., we can solve quadratic programs with nonnegativity constraints.

This implementation is still experimental. Install with ``pip install -e .`` or ``python setup.py``.

## References
<a id="1">[1]</a> 
Moré, J., & Toraldo, G. (1991). On the Solution of Large Quadratic Programming Problems with Bound Constraints. SIAM Journal on Optimization, 1(1), 93-113.



