alpaqa 1.0.0a18
Nonconvex constrained optimization
Loading...
Searching...
No Matches
Classes | Variables
Functions and operators

Detailed Description

(Proximable) functions and operators.

Classes

struct  L1Norm< Conf, Weight >
 ℓ₁-norm. More...
 
struct  L1NormComplex< Conf, Weight >
 ℓ₁-norm of complex numbers. More...
 
struct  NuclearNorm< Conf, SVD >
 Nuclear norm (ℓ₁-norm of singular values). More...
 

Variables

struct alpaqa::prox_fn prox
 Compute the proximal mapping.
 
struct alpaqa::prox_step_fn prox_step
 Compute a generalized forward-backward step.
 

Variable Documentation

◆ prox

Compute the proximal mapping.

\[ \begin{aligned} \mathrm{out} &\leftarrow \prox_{\gamma\, \mathrm{func}} \left( \mathrm{in} \right). \end{aligned} \]

Parameters
funcThe proximable function \( h : \Rn \to \Rn \) to apply the proximal mapping of.
[in]inInput vector or matrix \( x \), e.g. current iterate.
[out]outProximal mapping of \( (\gamma\, h) \) at \( x \).
\( \hat x \leftarrow \prox_{\gamma\, h}\left( x \right) \)
[in]γProximal step size \( \gamma \).
Returns
The value of the function evaluated in the output, \( h(\hat x) \).

◆ prox_step

Compute a generalized forward-backward step.

\[ \begin{aligned} \mathrm{out} &\leftarrow \prox_{\gamma\, \mathrm{func}} \left( \mathrm{in} + \gamma_\mathrm{fwd}\, \mathrm{fwd\_step} \right) \\ \mathrm{fb\_step} &\leftarrow \mathrm{out} - \mathrm{in}. \end{aligned} \]

Parameters
funcThe proximable function \( h : \Rn \to \Rn \) to apply the proximal mapping of.
[in]inInput vector or matrix \( x \), e.g. current iterate.
[in]fwd_stepStep \( d \) to add to \( x \) before computing the proximal mapping. Scaled by \( \gamma_\text{fwd} \).
[out]outProximal mapping of \( (\gamma\, h) \) at \( x + \gamma_\text{fwd}\, d \).
\( \hat x \leftarrow \prox_{\gamma\, h}\left( x + \gamma_\text{fwd}\, d \right) \)
[out]fb_stepForward-backward step \( p \).
\( p = \hat x - \hat x \)
[in]γProximal step size \( \gamma \).
[in]γ_fwdForward step size \( \gamma_\mathrm{fwd} \).
Returns
The value of the function evaluated in the output, \( h(\hat x) \).

This function can be used to implement the TypeErasedProblem::eval_prox_grad_step function:

struct Problem {
real_t eval_prox_grad_step(real_t γ, crvec x, crvec grad_ψ, rvec x̂, rvec p) const {
return alpaqa::prox_step(h, x, grad_ψ, x̂, p, γ, -γ);
}
};
struct alpaqa::prox_step_fn prox_step
Compute a generalized forward-backward step.
Nuclear norm (ℓ₁-norm of singular values).

Note the negative sign for the forward step size.

Examples
C++/Advanced/lasso-fbs.cpp.