22template <Config Conf = DefaultConfig>
31 std::chrono::nanoseconds
max_time = std::chrono::minutes(5);
52 10 * std::numeric_limits<real_t>::epsilon();
98template <Config Conf = DefaultConfig>
117template <Config Conf = DefaultConfig>
150template <
class DirectionT>
163 requires std::default_initializable<Direction>
185 if (problem.get_m() != 0)
186 throw std::invalid_argument(
"Missing arguments y, Σ, e");
187 mvec y{
nullptr, 0}, Σ{
nullptr, 0}, e{
nullptr, 0};
214 std::ostream *
os = &std::cout;
217template <
class InnerSolverStats>
220template <Config Conf>
225 std::chrono::nanoseconds elapsed_time{};
227 std::chrono::nanoseconds time_progress_callback{};
229 unsigned iterations = 0;
231 unsigned accelerated_step_rejected = 0;
233 unsigned stepsize_backtracks = 0;
235 unsigned direction_failures = 0;
238 unsigned direction_update_rejected = 0;
250template <Config Conf>
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
The main polymorphic minimization problem interface.
#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(...)
LipschitzEstimateParams< config_t > Lipschitz
Parameters related to the Lipschitz constant estimate and step size.
real_t TR_tolerance_factor
real_t ratio_threshold_good
Minimal TR ratio to increase radius (very successful).
bool disable_acceleration
Don't compute accelerated steps, fall back to forward-backward splitting.
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
bool update_direction_on_prox_step
real_t initial_radius
Initial trust radius.
std::chrono::nanoseconds max_time
Maximum duration.
bool ratio_approx_fbe_quadratic_model
Compute the trust-region ratio using an approximation of the quadratic model of the FBE,...
real_t quadratic_upperbound_tolerance_factor
Tolerance factor used in the quadratic upper bound condition that determines the step size.
real_t radius_factor_rejected
TR radius decrease coefficient when unsuccessful.
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.
Parameters for the estimation of the Lipschitz constant of the gradient of the smooth term of the cos...
Tuning parameters for the PANTR algorithm.
unsigned stepsize_backtracks
unsigned direction_update_rejected
@ ApproxKKT
Find an ε-approximate KKT point in the ∞-norm:
unsigned accelerated_step_rejected
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
InnerStatsAccumulator< FISTAStats< Conf > > & operator+=(InnerStatsAccumulator< FISTAStats< Conf > > &acc, const FISTAStats< Conf > &s)
const PANTRParams< config_t > * params
typename Conf::crvec crvec
real_t τ
1 if previous step accepted, 0 otherwise (PANOC compatibility)