23template <Config Conf = DefaultConfig>
30 std::chrono::nanoseconds
max_time = std::chrono::minutes(5);
54 10 * std::numeric_limits<real_t>::epsilon();
58template <Config Conf = DefaultConfig>
78template <Config Conf = DefaultConfig>
99template <
class DirectionT>
112 requires std::default_initializable<Direction>
134 if (problem.get_m() != 0)
135 throw std::invalid_argument(
"Missing arguments y, Σ, e");
136 mvec y{
nullptr, 0}, Σ{
nullptr, 0}, e{
nullptr, 0};
163 std::ostream *
os = &std::cout;
166template <
class InnerSolverStats>
169template <Config Conf>
174 std::chrono::nanoseconds elapsed_time{};
176 std::chrono::nanoseconds time_progress_callback{};
178 unsigned iterations = 0;
180 unsigned linesearch_failures = 0;
182 unsigned linesearch_backtracks = 0;
184 unsigned lbfgs_failures = 0;
187 unsigned lbfgs_rejected = 0;
190 unsigned τ_1_accepted = 0;
193 unsigned count_τ = 0;
201template <Config Conf>
The main polymorphic minimization problem interface.
Unconstrained solver with Wolfe line search.
std::string get_name() const
Stats operator()(const P &problem, const SolveOptions &opts, rvec x, rvec y, crvec Σ, rvec e)
std::function< void(const ProgressInfo &)> progress_cb
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.
WolfeSolver(const Params ¶ms, const Direction &direction)
WolfeSolver(const Params ¶ms, Direction &&direction)
WolfeSolver(const Params ¶ms)
AtomicStopSignal stop_signal
Stats operator()(const Problem &problem, const SolveOptions &opts, rvec x, rvec y, crvec Σ, rvec err_z)
const Params & get_params() const
Stats operator()(const P &problem, const SolveOptions &opts, rvec x)
#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.
unsigned max_no_progress
Maximum number of iterations without any progress before giving up.
real_t min_linesearch_coefficient
Minimum weight factor between Newton step and projected gradient step.
std::chrono::nanoseconds max_time
Maximum duration.
bool force_linesearch
Ignore the line search condition and always accept the accelerated step.
unsigned print_interval
When to print progress.
int print_precision
The precision of the floating point values printed by the solver.
unsigned max_iter
Maximum number of inner iterations.
PANOCStopCrit stop_crit
What stopping criterion to use.
Tuning parameters for the unconstrained solver with Wolfe line search.
@ 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 WolfeParams< config_t > * params
Iterate information for the unconstrained solver with Wolfe line search.
Statistics for the unconstrained solver with Wolfe line search.