alpaqa dll
Nonconvex constrained optimization
Loading...
Searching...
No Matches
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: