24 #ifdef QPALM_USE_LADEL
28 d.diag_elem = 1.0/work->
gamma;
124 for (
size_t i = 0; i < work->
data->
m; i++) {
137 for (
size_t i = 0; i < work->
data->
m; i++) {
#define RELATIVE_REFINEMENT_TOLERANCE
relative tolerance on the residual for linear systems solving
#define FACTORIZE_SCHUR
factorize the Schur complement
#define FACTORIZE_KKT
factorize the kkt system
#define ABSOLUTE_REFINEMENT_TOLERANCE
absolute tolerance on the residual for linear systems solving
ladel_int c_int
type for integer numbers
ladel_double c_float
type for floating point numbers
#define c_max(a, b)
maximum of two values
#define c_min(a, b)
minimum of two values
void vec_add_scaled(const c_float *a, const c_float *b, c_float *c, c_float sc, size_t n)
Scaled addition of one vector to another vector, .
void vec_mult_add_scaled(c_float *a, const c_float *b, c_float sc1, c_float sc2, size_t n)
Scaled addition of one vector to another vector, both being scaled, .
void vec_self_mult_scalar(c_float *a, c_float sc, size_t n)
Mulitply vector with a constant scale factor.
void prea_vec_copy(const c_float *a, c_float *b, size_t n)
Copy vector a into preallocated vector b.
c_float vec_norm_inf(const c_float *a, size_t n)
Infinity norm of a vector, .
void prea_int_vec_copy(const c_int *a, c_int *b, size_t n)
Copy integer vector a into preallocated vector b.
Linear algebra with vectors.
void set_entering_leaving_constraints(QPALMWorkspace *work)
Determines the entering and leaving constraints and stores them in work->solver->enter and work->solv...
void set_active_constraints(QPALMWorkspace *work)
Computes the set of active constraints and stores it in work->solver->active_constraints.
void newton_set_direction(QPALMWorkspace *work, solver_common *c)
Sets work->d to the direction calculated by the semismooth Newton method.
Functions to calculate the semismooth Newton direction.
void ldlsolveLD_neg_dphi(QPALMWorkspace *work, solver_common *c)
Solve the linear system .
void kkt_update_leaving_constraints(QPALMWorkspace *work, solver_common *c)
Perform a factorization update for the leaving constraints.
void qpalm_form_kkt(QPALMWorkspace *work)
Form the KKT system .
void mat_vec(solver_sparse *A, solver_dense *x, solver_dense *y, solver_common *c)
Matrix-vector multiplication.
void ldldowndate_leaving_constraints(QPALMWorkspace *work, solver_common *c)
Downdate the factorization given a set of leaving constraints.
void kkt_update_entering_constraints(QPALMWorkspace *work, solver_common *c)
Perform a factorization update for the entering constraints.
void ldlcholQAtsigmaA(QPALMWorkspace *work, solver_common *c)
Calculate factorization of , with and the set of active constraints.
void ldlchol(solver_sparse *M, QPALMWorkspace *work, solver_common *c)
Calculate factorization of a matrix .
void kkt_solve(QPALMWorkspace *work, solver_common *c)
Solve the KKT system .
void qpalm_reform_kkt(QPALMWorkspace *work)
Reform the KKT system (i.e.
void ldlupdate_entering_constraints(QPALMWorkspace *work, solver_common *c)
Update the factorization given a set of entering constraints.
size_t m
number of constraints m
c_float * bmin
dense array for lower bounds (size m)
size_t n
number of variables n
c_float * bmax
dense array for upper bounds (size m)
solver_sparse * Q
sparse quadratic part of the cost Q (size n x n)
c_int proximal
boolean, use proximal method of multipliers or not
c_int max_rank_update
maximum rank for the sparse factorization update
c_float max_rank_update_fraction
maximum rank (relative to n+m) for the factorization update
c_int ordering
ordering method for factorization
c_int * active_constraints
index set of active constraints
c_int reset_newton
boolean, after sigma is updated perform a new factorization
c_int * leave
index set of leaving constraints
solver_dense * rhs_kkt
[-dphi; zeros(m,1)]
solver_factor * LD
LD factor (part of LDL' factorization)
c_int factorization_method
factorize KKT or Schur complement
c_int * enter
index set of entering constraints
c_int * active_constraints_old
index set of active constraints in the previous iteration
c_int first_factorization
boolean, indicate we have not factorized previously
solver_dense * sol_kkt
sol_kkt = kkt \ rhs_kkt
c_int nb_leave
number of leaving constraints
c_int nb_active_constraints
number of active constraints
solver_symbolics * sym
symbolics for kkt (only used in LADEL)
solver_sparse * kkt_full
KKT matrix if all constraints would be active.
solver_sparse * kkt
KKT matrix.
c_int nb_enter
number of entering constraints
c_float * temp_m
placeholder for vector of size m
c_float * Axys
Ax + y./sigma.
QPALMSettings * settings
problem settings
c_float gamma
proximal penalty factor
c_float * dphi
gradient of the Lagrangian
QPALMSolver * solver
linsys variables
QPALMData * data
problem data to work on (possibly scaled)
c_float * temp_n
placeholder for vector of size n
c_float * d
primal update step