QPALM
1.2.1
Proximal Augmented Lagrangian method for Quadratic Programs
|
Routines to deal with nonconvex QPs.
The functions in this file serve to set up QPALM for a nonconvex QP. The main routine in this file computes the minimum eigenvalue of a square matrix, based on lobpcg [3]. Furthermore, some setting updates are performed. In addition, the spectrum of a matrix can be upper bounded using Gershgorin's circle theorem, which is used in the gamma_boost routine in iteration.c.
Definition in file nonconvex.c.
#include <qpalm/nonconvex.h>
#include <qpalm/types.h>
#include <qpalm/constants.h>
#include <qpalm/global_opts.h>
#include <qpalm/lin_alg.h>
#include <qpalm/util.h>
#include <math.h>
Go to the source code of this file.
Macros | |
#define | LOBPCG_TOL 1e-5 |
Tolerance on the infinity norm of the residual in lobpcg. | |
#define | M_PI 3.14159265358979323846 |
#define | RREF_TOL 1e-8 |
Functions | |
void | set_settings_nonconvex (QPALMWorkspace *work, solver_common *c) |
Set the proximal parameters for nonconvex QPs. | |
c_float | gershgorin_max (solver_sparse *M, c_float *center, c_float *radius) |
Calculate the Gershgorin upper bound for the eigenvalues of a symmetric matrix. | |
#define LOBPCG_TOL 1e-5 |
Tolerance on the infinity norm of the residual in lobpcg.
Definition at line 22 of file nonconvex.c.
#define M_PI 3.14159265358979323846 |
Definition at line 25 of file nonconvex.c.
#define RREF_TOL 1e-8 |
Definition at line 28 of file nonconvex.c.
void set_settings_nonconvex | ( | QPALMWorkspace * | work, |
solver_common * | c | ||
) |
Set the proximal parameters for nonconvex QPs.
QPALM can deal with nonconvex QPs, by setting the initial and maximal proximal penalty small enough (smaller than \( \frac{1}{|\lambda_\textrm{min}|} \)). This ensures positive definiteness of \( Q + \frac{1}{\gamma}I \) during the iterations. The minimum eigenvalue is computed using lobpcg.
work | Workspace |
c | Linear systems solver environment |
Definition at line 331 of file nonconvex.c.
c_float gershgorin_max | ( | solver_sparse * | M, |
c_float * | center, | ||
c_float * | radius | ||
) |
Calculate the Gershgorin upper bound for the eigenvalues of a symmetric matrix.
This routine uses the Gershgorin circle theorem to compute an upper bound on the eigenvalues of a matrix.
M | Matrix |
center | Vector of size M->ncol to hold the values of the centers of the discs |
radius | Vector of size M->ncol to hold the values of the radii of the discs |
Definition at line 353 of file nonconvex.c.