#include <alpaqa/accelerators/lbfgs.hpp>#include <alpaqa/inner/panoc.hpp>#include <alpaqa/problem/ocproblem.hpp>#include <chrono>#include <iostream>#include <limits>#include <string>
Include dependency graph for panoc-ocp.hpp:
This graph shows which files directly or indirectly include this file:Go to the source code of this file.
Classes | |
| struct | PANOCOCPParams< Conf > |
| Tuning parameters for the PANOC algorithm. More... | |
| struct | PANOCOCPProgressInfo< Conf > |
| struct | PANOCOCPStats< Conf > |
| class | PANOCOCPSolver< Conf > |
| struct | InnerStatsAccumulator< PANOCOCPStats< Conf > > |
Namespaces | |
| namespace | alpaqa |
Functions | |
| template<Config Conf> | |
| InnerStatsAccumulator< PANOCOCPStats< Conf > > & | operator+= (InnerStatsAccumulator< PANOCOCPStats< Conf > > &acc, const PANOCOCPStats< Conf > &s) |
| struct alpaqa::PANOCOCPParams |
Collaboration diagram for PANOCOCPParams< Conf >:| Class Members | ||
|---|---|---|
| LipschitzEstimateParams< config_t > | Lipschitz | Parameters related to the Lipschitz constant estimate and step size. |
| unsigned | max_iter = 100 | Maximum number of inner PANOC iterations. |
| nanoseconds | max_time = std::chrono::minutes(5) | Maximum duration. |
| real_t | min_linesearch_coefficient = real_t(1. / 256) | Minimum weight factor between Newton step and projected gradient step, line search parameter. |
| real_t | linesearch_strictness_factor = real_t(0.95) |
Parameter β used in the line search (see Algorithm 2 in [1]). \( 0 < \beta < 1 \) |
| real_t | L_min = real_t(1e-5) | Minimum Lipschitz constant estimate. |
| real_t | L_max = real_t(1e20) | Maximum Lipschitz constant estimate. |
| unsigned | L_max_inc = 16 | Maximum number of times to double the Lipschitz constant estimate per iteration. |
| PANOCStopCrit | stop_crit = PANOCStopCrit::ApproxKKT | What stopping criterion to use. |
| unsigned | max_no_progress = 10 | Maximum number of iterations without any progress before giving up. |
| unsigned | gn_interval = 1 | How often to use a Gauss-Newton step. Zero to disable GN entirely. |
| bool | gn_sticky = true | |
| bool | reset_lbfgs_on_gn_step = false | |
| bool | lqr_factor_cholesky = true | |
| LBFGSParams< config_t > | lbfgs_params | L-BFGS parameters (e.g. memory). |
| unsigned | print_interval = 0 |
When to print progress. If set to zero, nothing will be printed. If set to N != 0, progress is printed every N iterations. |
| int | print_precision = std::numeric_limits<real_t>::max_digits10 / 2 | The precision of the floating point values printed by the solver. |
| real_t | quadratic_upperbound_tolerance_factor | |
| real_t | linesearch_tolerance_factor | |
| bool | disable_acceleration = false | |
| struct alpaqa::PANOCOCPStats |
Collaboration diagram for PANOCOCPStats< Conf >:| Class Members | ||
|---|---|---|
| SolverStatus | status = SolverStatus::Busy | |
| real_t | ε = inf<config_t> | |
| nanoseconds | elapsed_time {} | |
| nanoseconds | time_prox {} | |
| nanoseconds | time_forward {} | |
| nanoseconds | time_backward {} | |
| nanoseconds | time_jacobians {} | |
| nanoseconds | time_hessians {} | |
| nanoseconds | time_indices {} | |
| nanoseconds | time_lqr_factor {} | |
| nanoseconds | time_lqr_solve {} | |
| nanoseconds | time_lbfgs_indices {} | |
| nanoseconds | time_lbfgs_apply {} | |
| nanoseconds | time_lbfgs_update {} | |
| nanoseconds | time_progress_callback {} | |
| unsigned | iterations = 0 | |
| unsigned | linesearch_failures = 0 | |
| unsigned | linesearch_backtracks = 0 | |
| unsigned | stepsize_backtracks = 0 | |
| unsigned | lbfgs_failures = 0 | |
| unsigned | lbfgs_rejected = 0 | |
| unsigned | τ_1_accepted = 0 | |
| unsigned | count_τ = 0 | |
| real_t | sum_τ = 0 | |
| real_t | final_γ = 0 | |
| real_t | final_ψ = 0 | |
| real_t | final_h = 0 | |
| real_t | final_φγ = 0 | |
| struct alpaqa::InnerStatsAccumulator< PANOCOCPStats< Conf > > |
Collaboration diagram for InnerStatsAccumulator< PANOCOCPStats< Conf > >:| Class Members | ||
|---|---|---|
| nanoseconds | elapsed_time {} | Total elapsed time in the inner solver. |
| nanoseconds | time_prox {} | Total time spent computing proximal mappings. |
| nanoseconds | time_forward {} | Total time spent doing forward simulations. |
| nanoseconds | time_backward {} | Total time spent doing backward gradient evaluations. |
| nanoseconds | time_jacobians {} | Total time spent computing dynamics Jacobians. |
| nanoseconds | time_hessians {} | Total time spent computing cost Hessians and Hessian-vector products. |
| nanoseconds | time_indices {} | Total time spent determining active indices. |
| nanoseconds | time_lqr_factor {} | Total time spent performing LQR factorizations. |
| nanoseconds | time_lqr_solve {} | Total time spent solving the (factorized) LQR problem. |
| nanoseconds | time_lbfgs_indices {} | Total time spent determining active indices for L-BFGS applications. |
| nanoseconds | time_lbfgs_apply {} | Total time spent applying L-BFGS estimates. |
| nanoseconds | time_lbfgs_update {} | Total time spent updating the L-BFGS estimate. |
| nanoseconds | time_progress_callback {} | Total time spent in the user-provided progress callback. |
| unsigned | iterations = 0 | Total number of inner PANOC iterations. |
| unsigned | linesearch_failures = 0 | Total number of PANOC line search failures. |
| unsigned | linesearch_backtracks = 0 | Total number of PANOC line search backtracking steps. |
| unsigned | stepsize_backtracks = 0 | Total number of PANOC step size reductions. |
| unsigned | lbfgs_failures = 0 | Total number of times that the L-BFGS direction was not finite. |
| unsigned | lbfgs_rejected = 0 |
Total number of times that the L-BFGS update was rejected (i.e. it could have resulted in a non-positive definite Hessian estimate). |
| unsigned | τ_1_accepted = 0 |
Total number of times that a line search parameter of \( \tau = 1 \) was accepted (i.e. no backtracking necessary). |
| unsigned | count_τ = 0 | The total number of line searches performed (used for computing the average value of \( \tau \)). |
| real_t | sum_τ = 0 | The sum of the line search parameter \( \tau \) in all iterations (used for computing the average value of \( \tau \)). |
| real_t | final_γ = 0 | The final PANOC step size γ. |
| real_t | final_ψ = 0 | Final value of the smooth cost \( \psi(\hat x) \). |
| real_t | final_h = 0 | Final value of the nonsmooth cost \( h(\hat x) \). |
| real_t | final_φγ = 0 | Final value of the forward-backward envelope, \( \varphi_\gamma(x) \) (note that this is in the point \( x \), not \( \hat x \)). |