Inner solvers#

group grp_InnerSolvers

Solvers for the inner problem, such as PANOC.

template<Config Conf>
class FISTASolver
#include <alpaqa/inner/fista.hpp>

FISTA solver for ALM.

Public Types

using Problem = TypeErasedProblem<config_t>
using Params = FISTAParams<config_t>
using Stats = FISTAStats<config_t>
using ProgressInfo = FISTAProgressInfo<config_t>
using SolveOptions = InnerSolveOptions<config_t>

Public Functions

inline FISTASolver(const Params &params)
Stats operator()(const Problem &problem, const SolveOptions &opts, rvec x, rvec y, crvec Σ, rvec err_z)
template<class P>
inline Stats operator()(const P &problem, const SolveOptions &opts, rvec x, rvec y, crvec Σ, rvec e)
template<class P>
inline Stats operator()(const P &problem, const SolveOptions &opts, rvec x)
inline FISTASolver &set_progress_callback(std::function<void(const ProgressInfo&)> cb)

Specify a callable that is invoked with some intermediate results on each iteration of the algorithm.

See also

ProgressInfo

std::string get_name() const
inline void stop()
inline const Params &get_params() const

Public Members

std::ostream *os = &std::cout
template<class DirectionT>
class PANOCSolver
#include <alpaqa/inner/panoc.hpp>

PANOC solver for ALM.

Public Types

using Problem = TypeErasedProblem<config_t>
using Params = PANOCParams<config_t>
using Direction = DirectionT
using Stats = PANOCStats<config_t>
using ProgressInfo = PANOCProgressInfo<config_t>
using SolveOptions = InnerSolveOptions<config_t>

Public Functions

inline PANOCSolver(const Params &params)
inline PANOCSolver(const Params &params, Direction &&direction)
inline PANOCSolver(const Params &params, const Direction &direction)
Stats operator()(const Problem &problem, const SolveOptions &opts, rvec x, rvec y, crvec Σ, rvec err_z)
template<class P>
inline Stats operator()(const P &problem, const SolveOptions &opts, rvec x, rvec y, crvec Σ, rvec e)
template<class P>
inline Stats operator()(const P &problem, const SolveOptions &opts, rvec x)
inline PANOCSolver &set_progress_callback(std::function<void(const ProgressInfo&)> cb)

Specify a callable that is invoked with some intermediate results on each iteration of the algorithm.

See also

ProgressInfo

std::string get_name() const
inline void stop()
inline const Params &get_params() const

Public Members

Direction direction
std::ostream *os = &std::cout
template<class DirectionT>
class PANTRSolver
#include <alpaqa/inner/pantr.hpp>

PANTR solver for ALM.

Public Types

using Problem = TypeErasedProblem<config_t>
using Params = PANTRParams<config_t>
using Direction = DirectionT
using Stats = PANTRStats<config_t>
using ProgressInfo = PANTRProgressInfo<config_t>
using SolveOptions = InnerSolveOptions<config_t>

Public Functions

inline PANTRSolver(const Params &params)
inline PANTRSolver(const Params &params, Direction &&direction)
inline PANTRSolver(const Params &params, const Direction &direction)
Stats operator()(const Problem &problem, const SolveOptions &opts, rvec x, rvec y, crvec Σ, rvec err_z)
template<class P>
inline Stats operator()(const P &problem, const SolveOptions &opts, rvec x, rvec y, crvec Σ, rvec e)
template<class P>
inline Stats operator()(const P &problem, const SolveOptions &opts, rvec x)
inline PANTRSolver &set_progress_callback(std::function<void(const ProgressInfo&)> cb)

Specify a callable that is invoked with some intermediate results on each iteration of the algorithm.

See also

ProgressInfo

std::string get_name() const
inline void stop()
inline const Params &get_params() const

Public Members

Direction direction
std::ostream *os = &std::cout
template<class DirectionT>
class WolfeSolver
#include <alpaqa/inner/wolfe.hpp>

Unconstrained solver with Wolfe line search.

Public Types

using Problem = TypeErasedProblem<config_t>
using Params = WolfeParams<config_t>
using Direction = DirectionT
using Stats = WolfeStats<config_t>
using ProgressInfo = WolfeProgressInfo<config_t>
using SolveOptions = InnerSolveOptions<config_t>

Public Functions

inline WolfeSolver(const Params &params)
inline WolfeSolver(const Params &params, Direction &&direction)
inline WolfeSolver(const Params &params, const Direction &direction)
Stats operator()(const Problem &problem, const SolveOptions &opts, rvec x, rvec y, crvec Σ, rvec err_z)
template<class P>
inline Stats operator()(const P &problem, const SolveOptions &opts, rvec x, rvec y, crvec Σ, rvec e)
template<class P>
inline Stats operator()(const P &problem, const SolveOptions &opts, rvec x)
inline WolfeSolver &set_progress_callback(std::function<void(const ProgressInfo&)> cb)

Specify a callable that is invoked with some intermediate results on each iteration of the algorithm.

See also

ProgressInfo

std::string get_name() const
inline void stop()
inline const Params &get_params() const

Public Members

Direction direction
std::ostream *os = &std::cout
template<class DirectionT>
class ZeroFPRSolver
#include <alpaqa/inner/zerofpr.hpp>

ZeroFPR solver for ALM.

Public Types

using Problem = TypeErasedProblem<config_t>
using Params = ZeroFPRParams<config_t>
using Direction = DirectionT
using Stats = ZeroFPRStats<config_t>
using ProgressInfo = ZeroFPRProgressInfo<config_t>
using SolveOptions = InnerSolveOptions<config_t>

Public Functions

inline ZeroFPRSolver(const Params &params)
inline ZeroFPRSolver(const Params &params, Direction &&direction)
inline ZeroFPRSolver(const Params &params, const Direction &direction)
Stats operator()(const Problem &problem, const SolveOptions &opts, rvec x, rvec y, crvec Σ, rvec err_z)
template<class P>
inline Stats operator()(const P &problem, const SolveOptions &opts, rvec x, rvec y, crvec Σ, rvec e)
template<class P>
inline Stats operator()(const P &problem, const SolveOptions &opts, rvec x)
inline ZeroFPRSolver &set_progress_callback(std::function<void(const ProgressInfo&)> cb)

Specify a callable that is invoked with some intermediate results on each iteration of the algorithm.

See also

ProgressInfo

std::string get_name() const
inline void stop()
inline const Params &get_params() const

Public Members

Direction direction
std::ostream *os = &std::cout
class LBFGSBSolver
#include <alpaqa/lbfgsb/lbfgsb-adapter.hpp>

L-BFGS-B solver for ALM.

Public Types

using Problem = TypeErasedProblem<config_t>
using Params = LBFGSBParams
using Stats = LBFGSBStats
using ProgressInfo = LBFGSBProgressInfo
using SolveOptions = InnerSolveOptions<config_t>

Public Functions

inline LBFGSBSolver(const Params &params)
Stats operator()(const Problem &problem, const SolveOptions &opts, rvec x, rvec y, crvec Σ, rvec err_z)
Parameters:
  • problem – [in] Problem description

  • opts – [in] Solve options

  • x – [inout] Decision variable \( x \)

  • y – [inout] Lagrange multipliers \( y \)

  • Σ – [in] Constraint weights \( \Sigma \)

  • err_z – [out] Slack variable error \( g(x) - \Pi_D(g(x) + \Sigma^{-1} y) \)

template<class P>
inline Stats operator()(const P &problem, const SolveOptions &opts, rvec u, rvec y, crvec Σ, rvec e)
inline LBFGSBSolver &set_progress_callback(std::function<void(const ProgressInfo&)> cb)

Specify a callable that is invoked with some intermediate results on each iteration of the algorithm.

See also

ProgressInfo

std::string get_name() const
inline void stop()
inline const Params &get_params() const

Public Members

std::ostream *os = &std::cout
template<Config Conf>
class LBFGSBSolver
#include <alpaqa/lbfgsb-adapter.hpp>

L-BFGS-B solver for ALM.

Public Types

using Problem = TypeErasedProblem<config_t>
using Params = ::LBFGSpp::LBFGSBParam<real_t>
using Stats = LBFGSBStats<config_t>
using SolveOptions = InnerSolveOptions<config_t>

Public Functions

inline LBFGSBSolver(const Params &params)
Stats operator()(const Problem &problem, const SolveOptions &opts, rvec x, rvec y, crvec Σ, rvec err_z)
template<class P>
inline Stats operator()(const P &problem, const SolveOptions &opts, rvec u, rvec y, crvec Σ, rvec e)
std::string get_name() const
inline void stop()
inline const Params &get_params() const

Public Members

std::ostream *os = &std::cout