![]() | pinocchio 4.1.0 A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives |
Settings for the ADMM constraint solver loop. More...
#include <pinocchio/algorithm/solvers/admm-solver.hpp>


Public Types | |
| typedef ConstraintSolverSettingsBase< Self > | Base |
| typedef _Scalar | Scalar |
| typedef ADMMSolverSettingsTpl | Self |
Public Member Functions | |
| ADMMSolverSettingsTpl (std::size_t max_iterations=1000, Scalar absolute_feasibility_tol=Scalar(1e-6), Scalar relative_feasibility_tol=Scalar(1e-6), Scalar absolute_complementarity_tol=Scalar(1e-6), Scalar relative_complementarity_tol=Scalar(1e-6), bool solve_ncp=true, bool measure_timings=false, bool stat_record=false, std::optional< Scalar > rho_init=std::nullopt, bool warmstart_rho_with_previous_result=false, ADMMUpdateRule admm_update_rule=ADMMUpdateRule::OSQP, ADMMProximalRule admm_proximal_rule=ADMMProximalRule::MANUAL, Scalar mu_prox=Scalar(1e-6), Scalar tau_prox=Scalar(1), Scalar tau=Scalar(0.5), Scalar ratio_primal_dual=Scalar(10), Scalar dual_momentum=Scalar(0), Scalar rho_update_ratio=Scalar(0), std::size_t rho_min_update_frequency=1, Scalar rho_momentum=Scalar(0), Scalar rho_min=Scalar(1e-6), Scalar rho_max=Scalar(1e6), Scalar spectral_rho_power_init=Scalar(0.2), Scalar spectral_rho_power_factor=Scalar(0.05), Scalar linear_update_rule_factor=Scalar(2), std::size_t lanczos_size=std::numeric_limits< int >::max(), std::size_t max_delassus_decomposition_updates=std::numeric_limits< int >::max(), std::size_t anderson_capacity=0) | |
| Default constructor. | |
| void | checkValidityImpl () const |
Public Attributes | |
| ADMMProximalRule | admm_proximal_rule |
| Update rule for the primal proximal term. | |
| ADMMUpdateRule | admm_update_rule |
| Update rule for the rho admm term. | |
| std::size_t | anderson_capacity |
| Size of the andersion history used to fit the anderson linear system. If set to 0 or 1, no anderson acceleration is used. | |
| Scalar | dual_momentum |
| Momentum on the dual variable. 0 means no momentum. | |
| std::size_t | lanczos_size |
| Size of the lanczos decomposition. Higher values lead to more precise estimation of the Delassus' maximum eigenvalue. | |
| Scalar | linear_update_rule_factor |
| Value by which rho is multiplied/divided in the LINEAR update rule. | |
| std::size_t | max_delassus_decomposition_updates |
| Maximum number of delassus decomposition updates. Once this number is reached, rho and mu_prox are kept constant. | |
| Scalar | mu_prox |
| Value of the proximal term when admm_proximal_rule is MANUAL. When admm_proximal_rule is AUTOMATIC, the proximal term follows the rho term. | |
| Scalar | ratio_primal_dual |
| Value of the primal/dual ratio beyond/below which a rho update is considered. If the primal/dual ratio is not big/low enough, rho is kept constant. | |
| std::optional< Scalar > | rho_init |
| Initial value of rho parameter. If set to boost::none, the initial rho will be computed by estimating the largest eigenvalue of the Delassus. | |
| Scalar | rho_max |
| Maximum value that rho can take. During 'solve', rho is clamped between rho_min and rho_max. | |
| Scalar | rho_min |
| Minimum value that rho can take. During 'solve', rho is clamped between rho_min and rho_max. | |
| std::size_t | rho_min_update_frequency |
| How many iterations before rho can be updated again. 1 means rho can be updated. every iterations (it does not mean it is updated every iterations). | |
| Scalar | rho_momentum |
| Momentum on rho value. | |
| Scalar | rho_update_ratio |
| Ratio w.r.t previous rho value beyond/below which rho is updated. In essence, if rho has not changed enough compared to the previous rho value, its value stays unchanged. This is a knob to prevent updating rho too much. | |
| Scalar | spectral_rho_power_factor |
| Power factor used to update rho in the SPECTRAL update rule. | |
| Scalar | spectral_rho_power_init |
| Initial value of the rho power in the SPECTRAL update rule. | |
| Scalar | tau |
| Scaling factor in front of the rho ADMM term. | |
| Scalar | tau_prox |
| Scaling factor in front of the primal proximal term. | |
| bool | warmstart_rho_with_previous_result |
| Whether or not to warmstart rho with previous result. If set to true, the rho_init will be bypassed by the value of rho stored in the solver's solution. | |
Settings for the ADMM constraint solver loop.
Definition at line 248 of file admm-solver.hpp.
| typedef ConstraintSolverSettingsBase<Self> Base |
Definition at line 252 of file admm-solver.hpp.
| typedef _Scalar Scalar |
Definition at line 250 of file admm-solver.hpp.
| typedef ADMMSolverSettingsTpl Self |
Definition at line 251 of file admm-solver.hpp.
| inline |
Default constructor.
Definition at line 255 of file admm-solver.hpp.
| inline |
Definition at line 316 of file admm-solver.hpp.
| ADMMProximalRule admm_proximal_rule |
Update rule for the primal proximal term.
Definition at line 387 of file admm-solver.hpp.
| ADMMUpdateRule admm_update_rule |
Update rule for the rho admm term.
Definition at line 384 of file admm-solver.hpp.
| std::size_t anderson_capacity |
Size of the andersion history used to fit the anderson linear system. If set to 0 or 1, no anderson acceleration is used.
Definition at line 445 of file admm-solver.hpp.
| Scalar dual_momentum |
Momentum on the dual variable. 0 means no momentum.
Definition at line 404 of file admm-solver.hpp.
| std::size_t lanczos_size |
Size of the lanczos decomposition. Higher values lead to more precise estimation of the Delassus' maximum eigenvalue.
Definition at line 437 of file admm-solver.hpp.
| Scalar linear_update_rule_factor |
Value by which rho is multiplied/divided in the LINEAR update rule.
Definition at line 433 of file admm-solver.hpp.
| std::size_t max_delassus_decomposition_updates |
Maximum number of delassus decomposition updates. Once this number is reached, rho and mu_prox are kept constant.
Definition at line 441 of file admm-solver.hpp.
| Scalar mu_prox |
Value of the proximal term when admm_proximal_rule is MANUAL. When admm_proximal_rule is AUTOMATIC, the proximal term follows the rho term.
Definition at line 391 of file admm-solver.hpp.
| Scalar ratio_primal_dual |
Value of the primal/dual ratio beyond/below which a rho update is considered. If the primal/dual ratio is not big/low enough, rho is kept constant.
Definition at line 401 of file admm-solver.hpp.
| std::optional<Scalar> rho_init |
Initial value of rho parameter. If set to boost::none, the initial rho will be computed by estimating the largest eigenvalue of the Delassus.
Definition at line 375 of file admm-solver.hpp.
| Scalar rho_max |
Maximum value that rho can take. During 'solve', rho is clamped between rho_min and rho_max.
Definition at line 424 of file admm-solver.hpp.
| Scalar rho_min |
Minimum value that rho can take. During 'solve', rho is clamped between rho_min and rho_max.
Definition at line 420 of file admm-solver.hpp.
| std::size_t rho_min_update_frequency |
How many iterations before rho can be updated again. 1 means rho can be updated. every iterations (it does not mean it is updated every iterations).
Definition at line 413 of file admm-solver.hpp.
| Scalar rho_momentum |
Momentum on rho value.
Definition at line 416 of file admm-solver.hpp.
| Scalar rho_update_ratio |
Ratio w.r.t previous rho value beyond/below which rho is updated. In essence, if rho has not changed enough compared to the previous rho value, its value stays unchanged. This is a knob to prevent updating rho too much.
Definition at line 409 of file admm-solver.hpp.
| Scalar spectral_rho_power_factor |
Power factor used to update rho in the SPECTRAL update rule.
Definition at line 430 of file admm-solver.hpp.
| Scalar spectral_rho_power_init |
Initial value of the rho power in the SPECTRAL update rule.
Definition at line 427 of file admm-solver.hpp.
| Scalar tau |
Scaling factor in front of the rho ADMM term.
Definition at line 397 of file admm-solver.hpp.
| Scalar tau_prox |
Scaling factor in front of the primal proximal term.
Definition at line 394 of file admm-solver.hpp.
| bool warmstart_rho_with_previous_result |
Whether or not to warmstart rho with previous result. If set to true, the rho_init will be bypassed by the value of rho stored in the solver's solution.
Definition at line 381 of file admm-solver.hpp.