Quadratic programs¶
The following routines attempt to solve quadratic programs of the form
using the Alternating Direction Method of Multipliers.
These functions are inspired by a simple ADMM quadratic program solver due to Boyd et al. Elemental’s implementations make use of parallel (dense) linear algebra and allows the user to optionally directly invert the Cholesky factor to improve the parallel performance of the application of its inverse.
C++ API¶
-
Int
QuadraticProgram
(const Matrix<Real> &P, const Matrix<Real> &q, Real lb, Real ub, Matrix<Real> &z, Real rho = 1., Real alpha = 1.2, Int maxIter = 500, Real absTol = 1e-6, Real relTol = 1e-4, bool inv = false, bool progress = true)¶
-
Int
QuadraticProgram
(const AbstractDistMatrix<Real> &P, const AbstractDistMatrix<Real> &q, Real lb, Real ub, AbstractDistMatrix<Real> &z, Real rho = 1., Real alpha = 1.2, Int maxIter = 500, Real absTol = 1e-6, Real relTol = 1e-4, bool inv = true, bool progress = true)¶ -
Parameters
Input/Output
Explanation
P
Input
SPD and part of objective, \(\frac{1}{2}x^T P x + q^T x\)
q
Input
part of objective
lb
Input
lower-bound of constraints, \(l_b \le x \le u_b\)
ub
Input
upper-bound of constraints, \(l_b \le x \le u_b\)
z
Output
primal solution (second term)
rho
Input
augmented-Lagrangian parameter
alpha
Input
over-relaxation parameter (usually in \([1,1.8]\))
maxIter
Input
maximum number of ADMM iterations
absTol
Input
absolute convergence tolerance
relTol
Input
relative convergence tolerance
inv
Input
compute inverse of Cholesky factor?
progress
Input
display detailed progress information?
C API¶
-
ElError
ElQuadraticProgram_s
(ElConstMatrix_s P, ElConstMatrix_s S, float lb, float ub, ElMatrix_s Z, ElInt* numIts)¶
-
ElError
ElQuadraticProgram_d
(ElConstMatrix_d P, ElConstMatrix_d S, double lb, double ub, ElMatrix_d Z, ElInt* numIts)¶