24template <Config Conf = DefaultConfig>
33 std::chrono::nanoseconds
max_time = std::chrono::minutes(5);
54 10 * std::numeric_limits<real_t>::epsilon();
61template <Config Conf = DefaultConfig>
76template <Config Conf = DefaultConfig>
105template <Config Conf>
133 if (problem.get_m() != 0)
134 throw std::invalid_argument(
"Missing arguments y, Σ, e");
135 mvec y{
nullptr, 0}, Σ{
nullptr, 0}, e{
nullptr, 0};
161 std::ostream *
os = &std::cout;
164template <
class InnerSolverStats>
167template <Config Conf>
172 std::chrono::nanoseconds elapsed_time{};
174 std::chrono::nanoseconds time_progress_callback{};
176 unsigned iterations = 0;
178 unsigned stepsize_backtracks = 0;
187template <Config Conf>
std::string get_name() const
FISTASolver & 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.
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)
InnerSolveOptions< config_t > SolveOptions
AtomicStopSignal stop_signal
const Params & get_params() const
FISTAStats< config_t > Stats
Stats operator()(const P &problem, const SolveOptions &opts, rvec x)
FISTASolver(const Params ¶ms)
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 ALPAQA_EXPORT_EXTERN_TEMPLATE(...)
LipschitzEstimateParams< config_t > Lipschitz
Parameters related to the Lipschitz constant estimate and step size.
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.
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.
unsigned print_interval
When to print progress.
int print_precision
The precision of the floating point values printed by the solver.
real_t L_min
Minimum Lipschitz constant estimate.
unsigned max_iter
Maximum number of inner FISTA iterations.
PANOCStopCrit stop_crit
What stopping criterion to use.
Tuning parameters for the FISTA algorithm.
Parameters for the estimation of the Lipschitz constant of the gradient of the smooth term of the cos...
unsigned stepsize_backtracks
@ ApproxKKT
Find an ε-approximate KKT point in the ∞-norm:
const FISTAParams< config_t > * params
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
InnerStatsAccumulator< FISTAStats< Conf > > & operator+=(InnerStatsAccumulator< FISTAStats< Conf > > &acc, const FISTAStats< Conf > &s)
typename Conf::crvec crvec