Clarabel Solver Settings
The Clarabel solver supports a variety of configuration options. The Julia, Rust and Python and interfaces all support the same set of options with identical field names.
The solver defaults are configured to give good general performance for most problems, but assume that the problem data is of 64 bit float type. Although the Rust and Julia solvers will accept 32 bit types instead (i.e. Float32
in Julia or f32
in Rust), the solver is unlikely to perform well unless the tolerances are relaxed.
The full set of options follows below.
Settings
Clarabel.Settings
— TypeArgument | Default Value | Description |
---|---|---|
Main Algorithm Settings | ||
max_iter | 200 | maximum number of iterations |
time_limit | Inf | maximum run time (seconds) |
verbose | true | verbose printing |
max_step_fraction | 0.99 | maximum interior point step length |
Full Accuracy Settings | ||
tol_gap_abs | 1e-8 | absolute duality gap tolerance |
tol_gap_rel | 1e-8 | relative duality gap tolerance |
tol_feas | 1e-8 | feasibility check tolerance (primal and dual) |
tol_infeas_abs | 1e-8 | absolute infeasibility tolerance (primal and dual) |
tol_infeas_rel | 1e-8 | relative infeasibility tolerance (primal and dual) |
tol_ktratio | 1e-6 | κ/τ tolerance |
Reduced Accuracy Settings | ||
reduced_tol_gap_abs | 5e-5 | reduced absolute duality gap tolerance |
reduced_tol_gap_rel | 5e-5 | reduced relative duality gap tolerance |
reduced_tol_feas | 1e-4 | reduced feasibility check tolerance (primal and dual) |
reduced_tol_infeas_abs | 5e-5 | reduced absolute infeasibility tolerance (primal and dual) |
reduced_tol_infeas_rel | 5e-5 | reduced relative infeasibility tolerance (primal and dual) |
reduced_tol_ktratio | 1e-4 | reduced κ/τ tolerance |
Data Equilibration Settings | ||
equilibrate_enable | true | enable data equilibration pre-scaling |
equilibrate_max_iter | 10 | maximum equilibration scaling iterations |
equilibrate_min_scaling | 1e-4 | minimum equilibration scaling allowed |
equilibrate_max_scaling | 1e+4 | maximum equilibration scaling allowed |
Step Size Settings | ||
linesearch_backtrack_step | 0.8 | linesearch backtracking |
min_switch_step_length | 1e-1 | minimum step size allowed for asymmetric cones with PrimalDual scaling |
min_terminate_step_length | 1e-4 | minimum step size allowed for symmetric cones & asymmetric cones with Dual scaling |
Linear Solver Settings | ||
direct_kkt_solver | true | use a direct linear solver method (required true) |
direct_solve_method | :qdldl | direct linear solver (e.g. :qdldl, :mkl, :panua, :ma57, :cholmod, :faer) |
static_regularization_enable | true | enable KKT static regularization |
static_regularization_eps | 1e-8 | KKT static regularization parameter |
static_regularization_proportional | eps(T)^2 | additional regularization parameter w.r.t. the maximum abs diagonal term |
dynamic_regularization_enable | true | enable KKT dynamic regularization |
dynamic_regularization_eps | 1e-13 | KKT dynamic regularization threshold |
dynamic_regularization_delta | 2e-7 | KKT dynamic regularization shift |
iterative_refinement_enable | true | KKT direct solve with iterative refinement |
iterative_refinement_reltol | 1e-12 | iterative refinement relative tolerance |
iterative_refinement_abstol | 1e-12 | iterative refinement absolute tolerance |
iterative_refinement_max_iter | 10 | iterative refinement maximum iterations |
iterative_refinement_stop_ratio | 5.0 | iterative refinement stalling tolerance |
Preprocessing Settings | ||
presolve_enable | true | enable presolve constraint reduction |
Chordal Decomposition Settings | ||
chordal_decomposition_enable | true | enable chordal decomposition |
chordal_decomposition_merge_method | :clique_graph | chordal decomposition merge method (:clique_graph, :parent_child or :none) |
chordal_decomposition_compact | true | assemble decomposed system in "compact" form |
chordal_decomposition_complete_dual | false | complete PSD dual variables after decomposition |