Template Struct Settings
Defined in File settings.hpp
Struct Documentation
-
template<typename T>
struct Settings This class defines the settings of PROXQP solvers with sparse and dense backends.
Settings class, which defines the parameters used by the dense and sparse solver (and its preconditioner).
Public Functions
-
inline Settings(DenseBackend dense_backend = DenseBackend::PrimalDualLDLT, T default_mu_eq = 1.E-3, T default_mu_in = 1.E-1, T alpha_bcl = 0.1, T beta_bcl = 0.9, T refactor_dual_feasibility_threshold = 1e-2, T refactor_rho_threshold = 1e-7, T mu_min_eq = 1e-9, T mu_min_in = 1e-8, T mu_max_eq_inv = 1e9, T mu_max_in_inv = 1e8, T mu_update_factor = 0.1, T mu_update_inv_factor = 10, T cold_reset_mu_eq = 1. / 1.1, T cold_reset_mu_in = 1. / 1.1, T cold_reset_mu_eq_inv = 1.1, T cold_reset_mu_in_inv = 1.1, T eps_abs = 1.e-5, T eps_rel = 0, isize max_iter = 10000, isize max_iter_in = 1500, isize safe_guard = 1.E4, isize nb_iterative_refinement = 10, T eps_refact = 1.e-6, bool verbose = false, InitialGuessStatus initial_guess = InitialGuessStatus::EQUALITY_CONSTRAINED_INITIAL_GUESS, bool update_preconditioner = false, bool compute_preconditioner = true, bool compute_timings = false, bool check_duality_gap = false, T eps_duality_gap_abs = 1.e-4, T eps_duality_gap_rel = 0, isize preconditioner_max_iter = 10, T preconditioner_accuracy = 1.e-3, T eps_primal_inf = 1.E-4, T eps_dual_inf = 1.E-4, bool bcl_update = true, MeritFunctionType merit_function_type = MeritFunctionType::GPDAL, T alpha_gpdal = 0.95, SparseBackend sparse_backend = SparseBackend::Automatic, bool primal_infeasibility_solving = false, isize frequence_infeasibility_check = 1, T default_H_eigenvalue_estimate = 0.)
Default constructor.
- Parameters:
default_rho – default rho parameter of result class
default_mu_eq – default mu_eq parameter of result class
default_mu_in – default mu_in parameter of result class
alpha_bcl – alpha parameter of the BCL algorithm.
beta_bcl – beta parameter of the BCL algorithm.
refactor_dual_feasibility_threshold – threshold above which refactorization is performed to change rho parameter.
refactor_rho_threshold – new rho parameter used if the refactor_dual_feasibility_threshold_ condition has been satisfied.
mu_min_eq – minimal authorized value for mu_eq.
mu_min_in – minimal authorized value for mu_in.
mu_max_eq_inv – maximal authorized value for the inverse of mu_eq_inv.
mu_max_in_inv – maximal authorized value for the inverse of mu_in_inv.
mu_update_factor – update factor used for updating mu_eq and mu_in.
mu_update_inv_factor – update factor used for updating mu_eq_inv and mu_in_inv.
cold_reset_mu_eq – value used for cold restarting mu_eq.
cold_reset_mu_in – value used for cold restarting mu_in.
cold_reset_mu_eq_inv – value used for cold restarting mu_eq_inv.
cold_reset_mu_in_inv – value used for cold restarting mu_in_inv.
eps_abs – asbolute stopping criterion of the solver.
eps_rel – relative stopping criterion of the solver.
max_iter – maximal number of authorized iteration.
max_iter_in – maximal number of authorized iterations for an inner loop.
nb_iterative_refinement – number of iterative refinements.
eps_refact – threshold value for refactorizing the ldlt factorization in the iterative refinement loop.
safe_guard – safeguard parameter ensuring global convergence of ProxQP scheme.
VERBOSE – if set to true, the solver prints information at each loop.
initial_guess – sets the initial guess option for initilizing x, y and z.
update_preconditioner – If set to true, the preconditioner will be re-computed when calling the update method.
compute_preconditioner – If set to true, the preconditioner will be computed with the init method.
compute_timings – If set to true, timings in microseconds will be computed by the solver (setup time, solving time, and run time = setup time
solving time).
check_duality_gap – If set to true, duality gap will be calculated and included in the stopping criterion.
eps_duality_gap_abs – absolute duality-gap stopping criterion.
eps_duality_gap_rel – relative duality-gap stopping criterion.
preconditioner_max_iter – maximal number of authorized iterations for the preconditioner.
preconditioner_accuracy – accuracy level of the preconditioner.
eps_primal_inf – threshold under which primal infeasibility is detected.
eps_dual_inf – threshold under which dual infeasibility is detected.
bcl_update – if set to true, BCL strategy is used for calibrating mu_eq and mu_in. If set to false, a strategy developped by Martinez & al is used.
sparse_backend – Default automatic. User can choose between sparse cholesky or iterative matrix free sparse backend.
primal_infeasibility_solving – solves the closest primal feasible problem if activated
frequence_infeasibility_check – frequence at which infeasibility is checked
find_H_minimal_eigenvalue – track the minimal eigen value of the quadratic cost H
default_H_eigenvalue_estimate – default H eigenvalue estimate (i.e., if we make a model update and H does not change this one is used)
Public Members
-
isize max_iter
-
isize max_iter_in
-
isize safe_guard
-
isize nb_iterative_refinement
-
bool verbose
-
InitialGuessStatus initial_guess
-
bool update_preconditioner
-
bool compute_preconditioner
-
bool compute_timings
-
bool check_duality_gap
-
isize preconditioner_max_iter
-
bool bcl_update
-
MeritFunctionType merit_function_type
-
SparseBackend sparse_backend
-
bool primal_infeasibility_solving
-
isize frequence_infeasibility_check
-
inline Settings(DenseBackend dense_backend = DenseBackend::PrimalDualLDLT, T default_mu_eq = 1.E-3, T default_mu_in = 1.E-1, T alpha_bcl = 0.1, T beta_bcl = 0.9, T refactor_dual_feasibility_threshold = 1e-2, T refactor_rho_threshold = 1e-7, T mu_min_eq = 1e-9, T mu_min_in = 1e-8, T mu_max_eq_inv = 1e9, T mu_max_in_inv = 1e8, T mu_update_factor = 0.1, T mu_update_inv_factor = 10, T cold_reset_mu_eq = 1. / 1.1, T cold_reset_mu_in = 1. / 1.1, T cold_reset_mu_eq_inv = 1.1, T cold_reset_mu_in_inv = 1.1, T eps_abs = 1.e-5, T eps_rel = 0, isize max_iter = 10000, isize max_iter_in = 1500, isize safe_guard = 1.E4, isize nb_iterative_refinement = 10, T eps_refact = 1.e-6, bool verbose = false, InitialGuessStatus initial_guess = InitialGuessStatus::EQUALITY_CONSTRAINED_INITIAL_GUESS, bool update_preconditioner = false, bool compute_preconditioner = true, bool compute_timings = false, bool check_duality_gap = false, T eps_duality_gap_abs = 1.e-4, T eps_duality_gap_rel = 0, isize preconditioner_max_iter = 10, T preconditioner_accuracy = 1.e-3, T eps_primal_inf = 1.E-4, T eps_dual_inf = 1.E-4, bool bcl_update = true, MeritFunctionType merit_function_type = MeritFunctionType::GPDAL, T alpha_gpdal = 0.95, SparseBackend sparse_backend = SparseBackend::Automatic, bool primal_infeasibility_solving = false, isize frequence_infeasibility_check = 1, T default_H_eigenvalue_estimate = 0.)