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)
 
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