alpaqa develop
Nonconvex constrained optimization
Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
PANOCDirection< Conf > Struct Template Reference

#include <alpaqa/inner/directions/panoc-direction-update.hpp>

Detailed Description

template<Config Conf>
struct alpaqa::PANOCDirection< Conf >

This class outlines the interface for direction providers used by PANOC-like algorithms.

Definition at line 13 of file panoc-direction-update.hpp.

+ Collaboration diagram for PANOCDirection< Conf >:

Public Types

using Problem = TypeErasedProblem< config_t >
 

Public Member Functions

void initialize (const Problem &problem, crvec y, crvec Σ, real_t γ_0, crvec x_0, crvec x̂_0, crvec p_0, crvec grad_ψx_0)=delete
 Initialize the direction provider.
 
bool has_initial_direction () const =delete
 Return whether a direction is available on the very first iteration, before the first call to update.
 
bool update (real_t γₖ, real_t γₙₑₓₜ, crvec xₖ, crvec xₙₑₓₜ, crvec pₖ, crvec pₙₑₓₜ, crvec grad_ψxₖ, crvec grad_ψxₙₑₓₜ)=delete
 Update the direction provider when accepting the next iterate.
 
bool apply (real_t γₖ, crvec xₖ, crvec x̂ₖ, crvec pₖ, crvec grad_ψxₖ, rvec qₖ) const =delete
 Apply the direction estimation in the current point.
 
void changed_γ (real_t γₖ, real_t old_γₖ)=delete
 Called when the PANOC step size changes.
 
void reset ()=delete
 Called when using the direction failed.
 
std::string get_name () const =delete
 Get a human-readable name for this direction provider.
 

Member Typedef Documentation

◆ Problem

template<Config Conf>
using Problem = TypeErasedProblem<config_t>

Definition at line 15 of file panoc-direction-update.hpp.

Member Function Documentation

◆ initialize()

template<Config Conf>
void initialize ( const Problem problem,
crvec  y,
crvec  Σ,
real_t  γ_0,
crvec  x_0,
crvec  x̂_0,
crvec  p_0,
crvec  grad_ψx_0 
)
delete

Initialize the direction provider.

Parameters
[in]problemProblem description.
[in]yLagrange multipliers.
[in]ΣPenalty factors.
[in]γ_0Initial step size.
[in]x_0Initial iterate.
[in]x̂_0Result of proximal gradient step in x_0.
[in]p_0Proximal gradient step in x_0.
[in]grad_ψx_0Gradient of the objective in x_0.

The references problem, y and Σ are guaranteed to remain valid for subsequent calls to update, apply, changed_γ and reset.

◆ has_initial_direction()

template<Config Conf>
bool has_initial_direction ( ) const
delete

Return whether a direction is available on the very first iteration, before the first call to update.

◆ update()

template<Config Conf>
bool update ( real_t  γₖ,
real_t  γₙₑₓₜ,
crvec  xₖ,
crvec  xₙₑₓₜ,
crvec  pₖ,
crvec  pₙₑₓₜ,
crvec  grad_ψxₖ,
crvec  grad_ψxₙₑₓₜ 
)
delete

Update the direction provider when accepting the next iterate.

Parameters
[in]γₖCurrent step size.
[in]γₙₑₓₜStep size for the next iterate.
[in]xₖCurrent iterate.
[in]xₙₑₓₜNext iterate.
[in]pₖProximal gradient step in the current iterate.
[in]pₙₑₓₜProximal gradient step in the next iterate.
[in]grad_ψxₖGradient of the objective in the current iterate.
[in]grad_ψxₙₑₓₜGradient of the objective in the next iterate.

◆ apply()

template<Config Conf>
bool apply ( real_t  γₖ,
crvec  xₖ,
crvec  x̂ₖ,
crvec  pₖ,
crvec  grad_ψxₖ,
rvec  qₖ 
) const
delete

Apply the direction estimation in the current point.

Parameters
[in]γₖCurrent step size.
[in]xₖCurrent iterate.
[in]x̂ₖResult of proximal gradient step in xₖ.
[in]pₖProximal gradient step in xₖ.
[in]grad_ψxₖGradient of the objective at xₖ.
[out]qₖResulting step.

◆ changed_γ()

template<Config Conf>
void changed_γ ( real_t  γₖ,
real_t  old_γₖ 
)
delete

Called when the PANOC step size changes.

◆ reset()

template<Config Conf>
void reset ( )
delete

Called when using the direction failed.

A possible behavior could be to flush the buffers, hopefully yielding a better direction on the next iteration.

◆ get_name()

template<Config Conf>
std::string get_name ( ) const
delete

Get a human-readable name for this direction provider.


The documentation for this struct was generated from the following file: