11#include <guanaqo/atomic-stop-signal.hpp>
23template <Config Conf = DefaultConfig>
32 std::chrono::nanoseconds
max_time = std::chrono::minutes(5);
61 10 * std::numeric_limits<real_t>::epsilon();
67 10 * std::numeric_limits<real_t>::epsilon();
86template <Config Conf = DefaultConfig>
109template <Config Conf = DefaultConfig>
139template <
class DirectionT>
152 requires std::default_initializable<Direction>
174 if (problem.get_num_constraints() != 0)
175 throw std::invalid_argument(
"Missing arguments y, Σ, e");
176 mvec y{
nullptr, 0}, Σ{
nullptr, 0}, e{
nullptr, 0};
203 std::ostream *
os = &std::cout;
206template <
class InnerSolverStats>
209template <Config Conf>
250template <Config Conf>
264 acc.sum_τ += s.
sum_τ;
The main polymorphic minimization problem interface.
std::string get_name() const
ZeroFPRProgressInfo< config_t > ProgressInfo
ZeroFPRSolver(const Params ¶ms, const Direction &direction)
ZeroFPRSolver(const Params ¶ms)
Stats operator()(const P &problem, const SolveOptions &opts, rvec x, rvec y, crvec Σ, rvec e)
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.
std::function< void(const ProgressInfo &)> progress_cb
Stats operator()(const Problem &problem, const SolveOptions &opts, rvec x, rvec y, crvec Σ, rvec err_z)
ZeroFPRParams< config_t > Params
InnerSolveOptions< config_t > SolveOptions
ZeroFPRStats< config_t > Stats
const Params & get_params() const
guanaqo::AtomicStopSignal stop_signal
detail::PANOCHelpers< config_t > Helpers
ZeroFPRSolver(const Params ¶ms, Direction &&direction)
Stats operator()(const P &problem, const SolveOptions &opts, rvec x)
TypeErasedProblem< config_t > Problem
#define USING_ALPAQA_CONFIG(Conf)
#define ALPAQA_IF_QUADF(...)
#define ALPAQA_IF_LONGD(...)
#define ALPAQA_IF_FLOAT(...)
#define USING_ALPAQA_CONFIG_TEMPLATE(Conf)
#define ALPAQA_EXPORT_EXTERN_TEMPLATE(...)
real_t linesearch_tolerance_factor
LipschitzEstimateParams< config_t > Lipschitz
bool update_direction_from_prox_step
bool recompute_last_prox_step_after_stepsize_change
real_t min_linesearch_coefficient
std::chrono::nanoseconds max_time
real_t quadratic_upperbound_tolerance_factor
real_t linesearch_strictness_factor
bool update_direction_in_accel
bool update_direction_in_candidate
Parameters for the estimation of the Lipschitz constant of the gradient of the smooth term of the cos...
Tuning parameters for the ZeroFPR algorithm.
unsigned stepsize_backtracks
unsigned direction_update_rejected
@ ApproxKKT
Find an ε-approximate KKT point in the ∞-norm:
const TypeErasedProblem< config_t > * problem
SolverStatus
Exit status of a numerical solver such as ALM or PANOC.
std::chrono::nanoseconds time_progress_callback
std::chrono::nanoseconds elapsed_time
typename Conf::real_t real_t
unsigned direction_failures
unsigned linesearch_backtracks
InnerStatsAccumulator< FISTAStats< Conf > > & operator+=(InnerStatsAccumulator< FISTAStats< Conf > > &acc, const FISTAStats< Conf > &s)
typename Conf::crvec crvec
unsigned linesearch_failures
const ZeroFPRParams< config_t > * params