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_m() != 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>
214 std::chrono::nanoseconds elapsed_time{};
216 std::chrono::nanoseconds time_progress_callback{};
218 unsigned iterations = 0;
220 unsigned linesearch_failures = 0;
222 unsigned linesearch_backtracks = 0;
224 unsigned stepsize_backtracks = 0;
226 unsigned lbfgs_failures = 0;
229 unsigned lbfgs_rejected = 0;
232 unsigned τ_1_accepted = 0;
235 unsigned count_τ = 0;
250template <Config Conf>
The main polymorphic minimization problem interface.
std::string get_name() const
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)
InnerSolveOptions< config_t > SolveOptions
ZeroFPRStats< config_t > Stats
AtomicStopSignal stop_signal
const Params & get_params() const
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
Tolerance factor used in the line search.
LipschitzEstimateParams< config_t > Lipschitz
Parameters related to the Lipschitz constant estimate and step size.
unsigned max_no_progress
Maximum number of iterations without any progress before giving up.
real_t L_max
Maximum Lipschitz constant estimate.
bool update_direction_from_prox_step
Update the direction between current forward-backward point and the candidate iterate instead of betw...
bool recompute_last_prox_step_after_stepsize_change
If the step size changes, the direction buffer is flushed.
real_t min_linesearch_coefficient
Minimum weight factor between Newton step and projected gradient step.
std::chrono::nanoseconds max_time
Maximum duration.
real_t quadratic_upperbound_tolerance_factor
Tolerance factor used in the quadratic upper bound condition that determines the step size.
bool force_linesearch
Ignore the line search condition and always accept the accelerated step.
real_t linesearch_strictness_factor
Parameter β used in the line search (see Algorithm 2 in ).
unsigned print_interval
When to print progress.
bool update_direction_in_accel
Use the point generated by the accelerator rather than the accepted point to update the quasi-Newton ...
int print_precision
The precision of the floating point values printed by the solver.
real_t L_min
Minimum Lipschitz constant estimate.
bool update_direction_in_candidate
Use the candidate point rather than the accepted point to update the quasi-Newton direction.
unsigned max_iter
Maximum number of inner ZeroFPR iterations.
PANOCStopCrit stop_crit
What stopping criterion to use.
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
@ 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 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