21template <Config Conf = DefaultConfig>
30 std::chrono::nanoseconds
max_time = std::chrono::minutes(5);
47 10 * std::numeric_limits<real_t>::epsilon();
77template <Config Conf = DefaultConfig>
96template <Config Conf = DefaultConfig>
126template <
class DirectionT>
139 requires std::default_initializable<Direction>
156 return operator()(Problem::template make<P>(problem), opts, x, y, Σ, e);
161 if (problem.get_m() != 0)
162 throw std::invalid_argument(
"Missing arguments y, Σ, e");
163 mvec y{
nullptr, 0}, Σ{
nullptr, 0}, e{
nullptr, 0};
190 std::ostream *
os = &std::cout;
193template <
class InnerSolverStats>
196template <Config Conf>
201 std::chrono::nanoseconds elapsed_time{};
203 std::chrono::nanoseconds time_progress_callback{};
205 unsigned iterations = 0;
207 unsigned accelerated_step_rejected = 0;
209 unsigned stepsize_backtracks = 0;
211 unsigned direction_failures = 0;
214 unsigned direction_update_rejected = 0;
226template <Config Conf>
248#ifdef ALPAQA_WITH_QUAD_PRECISION
256#ifdef ALPAQA_WITH_QUAD_PRECISION
264#ifdef ALPAQA_WITH_QUAD_PRECISION
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
Stats operator()(const Problem &problem, const SolveOptions &opts, rvec x, rvec y, crvec Σ, rvec err_z)
PANTRSolver(const Params ¶ms, Direction &&direction)
InnerSolveOptions< config_t > SolveOptions
PANTRSolver(const Params ¶ms, const Direction &direction)
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.
AtomicStopSignal stop_signal
const Params & get_params() const
PANTRStats< config_t > Stats
PANTRSolver(const Params ¶ms)
Stats operator()(const P &problem, const SolveOptions &opts, rvec x)
TypeErasedProblem< config_t > Problem
#define USING_ALPAQA_CONFIG(Conf)
#define USING_ALPAQA_CONFIG_TEMPLATE(Conf)
#define ALPAQA_EXPORT_EXTERN_TEMPLATE(...)
unsigned stepsize_backtracks
unsigned direction_update_rejected
@ ApproxKKT
Find an ε-approximate KKT point in the ∞-norm:
LipschitzEstimateParams< config_t > Lipschitz
Parameters related to the Lipschitz constant estimate and step size.
real_t TR_tolerance_factor
unsigned accelerated_step_rejected
const TypeErasedProblem< config_t > * problem
real_t ratio_threshold_good
Minimal TR ratio to increase radius (very successful).
bool disable_acceleration
InnerStatsAccumulator< PANOCOCPStats< Conf > > & operator+=(InnerStatsAccumulator< PANOCOCPStats< Conf > > &acc, const PANOCOCPStats< Conf > &s)
unsigned max_no_progress
Maximum number of iterations without any progress before giving up.
real_t L_max
Maximum Lipschitz constant estimate.
bool recompute_last_prox_step_after_direction_reset
SolverStatus
Exit status of a numerical solver such as ALM or PANOC.
bool update_direction_on_prox_step
std::chrono::nanoseconds time_progress_callback
real_t initial_radius
Initial trust radius.
std::chrono::nanoseconds elapsed_time
typename Conf::real_t real_t
unsigned direction_failures
std::chrono::nanoseconds max_time
Maximum duration.
real_t quadratic_upperbound_tolerance_factor
real_t radius_factor_rejected
TR radius decrease coefficient when unsuccessful.
const PANTRParams< config_t > * params
typename Conf::crvec crvec
unsigned print_interval
When to print progress.
real_t ratio_threshold_acceptable
Minimal TR ratio to be accepted (successful).
int print_precision
The precision of the floating point values printed by the solver.
real_t min_radius
Minimum trust radius.
real_t L_min
Minimum Lipschitz constant estimate.
real_t radius_factor_good
TR radius increase coefficient when very successful.
bool compute_ratio_using_new_stepsize
Check the quadratic upperbound and update γ before computing the reduction of the TR step.
real_t radius_factor_acceptable
TR radius decrease coefficient when successful.
unsigned max_iter
Maximum number of inner PANTR iterations.
PANOCStopCrit stop_crit
What stopping criterion to use.
Tuning parameters for the PANTR algorithm.