QPALM
A proximal augmented Lagrangian method for QPs.
Functions
iteration.h File Reference

QPALM main solver routines. More...

#include "types.h"
#include "global_opts.h"

Go to the source code of this file.

Functions

void compute_residuals (QPALMWorkspace *work, solver_common *c)
 Compute the residuals (in vector form) More...
 
void initialize_sigma (QPALMWorkspace *work, solver_common *c)
 Initialize penalty factors from initial x. More...
 
void update_sigma (QPALMWorkspace *work, solver_common *c)
 Update the penalty factors. More...
 
void update_gamma (QPALMWorkspace *work)
 Update the proximal penalty. More...
 
void boost_gamma (QPALMWorkspace *work, solver_common *c)
 Maximize the proximal penalty. More...
 
void update_primal_iterate (QPALMWorkspace *work, solver_common *c)
 Update the primal iterate. More...
 
c_float compute_objective (QPALMWorkspace *work)
 Compute the (unscaled) primal objective value at the current iterate. More...
 
c_float compute_dual_objective (QPALMWorkspace *work, solver_common *c)
 Compute the (unscaled) dual objective value at the current iterate. More...
 

Detailed Description

QPALM main solver routines.

Author
Ben Hermans

This file contains the functions that make up the qpalm algorithm (the functions that qpalm_solve will use). These include the computation of the residuals at the start of the iteration, the update of the primal variables in an inner iteration, the update of the penalty factors and dual variables in an outer iteration, the computation of the primal and dual objective values, etc.

Function Documentation

◆ boost_gamma()

void boost_gamma ( QPALMWorkspace work,
solver_common c 
)

Maximize the proximal penalty.

The proximal penalty parameter can be increased when the primal residual is low and the number of active constraints no longer changes. Increasing the proximal penalty will significantly speed up the convergence of the dual residual in that case. First, the maximum allowed value is computed, based on the fact that $Q+A^T \Sigma A + \frac{1}{\gamma}I$ should be sufficiently positive definite for the factorization routines.

Parameters
workWorkspace
cLinear systems solver environment

◆ compute_dual_objective()

c_float compute_dual_objective ( QPALMWorkspace work,
solver_common c 
)

Compute the (unscaled) dual objective value at the current iterate.

Returns
The value of the dual objective at the current iterate.
Parameters
workWorkspace
cLinear systems solver environment

◆ compute_objective()

c_float compute_objective ( QPALMWorkspace work)

Compute the (unscaled) primal objective value at the current iterate.

Returns
The value of the primal objective at the current iterate.
Parameters
workWorkspace

◆ compute_residuals()

void compute_residuals ( QPALMWorkspace work,
solver_common c 
)

Compute the residuals (in vector form)

This routine is called at the start of every QPALM iteration. It computes the current residual vectors, which are required by the termination routines and by the other iteration routines.

Parameters
workWorkspace
cLinear systems solver environment

◆ initialize_sigma()

void initialize_sigma ( QPALMWorkspace work,
solver_common c 
)

Initialize penalty factors from initial x.

The formula used here can be found in [2].

Parameters
workWorkspace
cLinear systems solver environment

◆ update_gamma()

void update_gamma ( QPALMWorkspace work)

Update the proximal penalty.

The proximal penalty parameter is increased by a constant factor at every outer update, until a certain maximum value is reached.

Parameters
workWorkspace

◆ update_primal_iterate()

void update_primal_iterate ( QPALMWorkspace work,
solver_common c 
)

Update the primal iterate.

This function calls the functions that compute the newton direction and stepsize from exact linesearch, and applies the update.

Parameters
workWorkspace
cLinear systems solver environment

◆ update_sigma()

void update_sigma ( QPALMWorkspace work,
solver_common c 
)

Update the penalty factors.

Constraints that are active are penalized in proportion to their constraint violation. If the number of changed penalty parameters is low, and the proximal penalty need not be further updated, then the cholmod_factor LD is updated using a low-rank update based on the changed penalty factors.

Parameters
workWorkspace
cLinear systems solver environment