13using std::atomic_bool;
Custom memory allocation, print and utility functions, and data types for floats and ints.
ladel_int c_int
type for integer numbers
ladel_double c_float
type for floating point numbers
size_t m
number of constraints m
c_float * bmin
dense array for lower bounds (size m)
c_float c
constant part of cost
size_t n
number of variables n
c_float * q
dense array for linear part of cost function (size n)
solver_sparse * A
sparse linear constraints matrix A (size m x 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)
Solver return information.
c_float run_time
total time (seconds)
c_int iter_out
number of outer iterations (i.e. dual updates)
c_float pri_res_norm
norm of primal residual
c_float dual_objective
dual objective function value (= NaN if enable_dual_termination is false)
c_int iter
number of iterations taken
c_float solve_time
time taken for solve phase (seconds)
c_float dua2_res_norm
norm of intermediate dual residual (minus proximal term)
c_float objective
objective function value
c_int status_val
status as c_int, defined in constants.h
c_float setup_time
time taken for setup phase (seconds)
c_float dua_res_norm
norm of dual residual
Problem scaling matrices stored as vectors.
c_float * Dinv
primal variable rescaling
c_float c
objective scaling
c_float * E
dual variable scaling
c_float * Einv
dual variable rescaling
c_float cinv
objective rescaling
c_float * D
primal variable scaling
c_float gamma_upd
proximal penalty update factor
c_float sigma_max
penalty factor cap
c_float eps_abs_in
intermediate absolute convergence tolerance
c_float gamma_max
proximal penalty parameter cap
c_int proximal
boolean, use proximal method of multipliers or not
c_float delta
penalty update factor
c_int warm_start
boolean, warm start
c_float sigma_init
initial penalty parameter (guideline)
c_float eps_dual_inf
dual infeasibility tolerance
c_int reset_newton_iter
frequency of performing a complete Cholesky factorization
c_float dual_objective_limit
termination value for the dual objective (useful in branch and bound)
c_float eps_rel_in
intermediate relative convergence tolerance
c_float rho
tolerance scaling factor
c_float time_limit
time limit
c_float theta
penalty update criterion parameter
c_int max_rank_update
maximum rank for the sparse factorization update
c_int enable_dual_termination
boolean, enable termination based on dual objective (useful in branch and bound)
c_float max_rank_update_fraction
maximum rank (relative to n+m) for the factorization update
c_float gamma_init
initial proximal penalty parameter
c_float eps_prim_inf
primal infeasibility tolerance
c_int inner_max_iter
maximum number of iterations per subproblem
c_float eps_rel
relative convergence tolerance
c_int verbose
boolean, write out progress
c_int max_iter
maximum number of iterations
c_int scaling
scaling iterations, if 0 then scaling is disabled
c_int nonconvex
boolean, indicates whether the QP is nonconvex
c_float eps_abs
absolute convergence tolerance
c_int ordering
ordering method for factorization
c_int factorization_method
factorize KKT or Schur complement
c_int print_iter
frequency of printing
c_float * x
primal solution
Variables for linear system solving.
solver_dense * E_temp
temporary constraints scaling vectors
solver_dense * neg_dphi
-gradient of the Lagrangian
solver_dense * D_temp
temporary primal variable scaling vectors
solver_sparse * At_sqrt_sigma
A' * sqrt(sigma)
c_int * first_row_A
row index of the first element in each column of A'
c_int * active_constraints
index set of active constraints
solver_dense * yh
candidate dual update
c_int reset_newton
boolean, after sigma is updated perform a new factorization
solver_dense * d
primal update step
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 * At_scale
running vector of sqrt(sigma), used to scale At_sqrt_sigma
solver_dense * Atyh
A' * yh.
solver_dense * sol_kkt
sol_kkt = kkt \ rhs_kkt
solver_factor * LD_Q
LD factor of Q (useful in computing dual objective)
c_float * first_elem_A
value of the first element in each column of A'
c_int nb_leave
number of leaving constraints
c_int nb_active_constraints
number of active constraints
solver_symbolics * sym_Q
symbolics for Q (only used in LADEL)
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 * delta_y
difference of consecutive dual iterates
c_float eta
linesearch parameter
c_float * x
primal iterate
c_float * yh
candidate dual update
QPALMScaling * scaling
scaling vectors
c_float * delta
linesearch parameter
c_int nb_sigma_changed
number of sigma-components that changed in an outer iteration (relevant for factorization update)
c_int initialized
flag whether the iterates were initialized or not
c_float * D_temp
temporary primal variable scaling vectors
c_float * delta2
delta .* delta
c_float eps_pri
primal tolerance
QPALMInfo * info
solver information
c_float * z
projection of Axys onto the constraint set [bmin, bmax]
c_float * pri_res_in
intermediate primal residual
c_int * index_J
index set J (L xor P)
c_float * temp_m
placeholder for vector of size m
QPALMSolution * solution
problem solution
c_int * index_P
index set P (where delta>0)
c_float * pri_res
primal residual
c_float * sqrt_sigma
elementwise sqrt(sigma)
c_float * sigma
penalty vector
array_element * s
alpha ./ delta
c_float eps_dua
dual tolerance
c_float beta
linesearch parameter
c_float * delta_alpha
delta .* alpha
c_float * x_prev
previous primal iterate
c_float * Adelta_x
A * delta_x.
c_float * neg_dphi
-dphi, required as the rhs in SCHUR
c_float * Axys
Ax + y./sigma.
c_float * Qdelta_x
Q * delta_x.
c_int gamma_maxed
flag to indicate whether gamma has been maximized when the primal residual was low
c_float sqrt_sigma_max
sqrt(sigma_max)
c_float * delta_x
difference of consecutive primal iterates
QPALMTimer * timer
timer object
c_float * dphi_prev
previous gradient of the Lagrangian
c_float eps_rel_in
intermediate relative tolerance
QPALMSettings * settings
problem settings
c_float * x0
record of the primal iterate during the last dual update
c_float * sigma_inv
1./sigma
c_float eps_dua_in
intermediate dual tolerance
c_float gamma
proximal penalty factor
c_float * dphi
gradient of the Lagrangian
c_float * E_temp
temporary constraints scaling vectors
c_float * df
gradient of the primal objective (+proximal term)
atomic_bool cancel
Cancel the solver (from other thread or signal)
c_float * alpha
linesearch parameter
QPALMSolver * solver
linsys variables
c_float sqrt_delta
sqrt(penalty update factor)
c_float * Atdelta_y
A' * delta_y.
c_float * temp_2m
placeholder for vector of size 2m
c_float * Aty
A' * y (useful for saving one mat_tpose_vec)
c_float eps_abs_in
intermediate absolute tolerance
QPALMData * data
problem data to work on (possibly scaled)
c_int * index_L
index set L (where s>0)
c_float * temp_n
placeholder for vector of size n
c_float * d
primal update step
Array to sort in linesearch.
c_float x
value of the element
ladel_double solver_dense
ladel_symbolics solver_symbolics
ladel_sparse_matrix solver_sparse
struct QPALM_TIMER QPALMTimer
QPALM Timer for statistics.
ladel_factor solver_factor