The interested user can find numerous parameters and short descriptions below, but expert knowledge of PIPS-IPM++ is currently required here and if in doubt, one should contact the developers (until a concise guide is available).
These enable geometric mean scaling and the use of primal and dual step lengths in the interior-point method.
| Name | Default | Range | Type | Description |
| FILTER_VERBOSE | false | | boolean | whether to be verbose in Filter strategy |
| LINEARSOLVER_LEAF_VERBOSE | 0 | ≥ 0 | integer | log verbosity level for linear solver for leaf system |
| LINEARSOLVER_ROOT_VERBOSE | 0 | ≥ 0 | integer | log verbosity level for linear solver for root system |
| OUTER_BICG_PRINT_STATISTICS | false | | boolean | whether to print BiCGStab statistics (system and residual norms) |
| PRESOLVE_PRINT_PROBLEM | false | | boolean | whether to write the problem to stdout before and after presolve |
| PRESOLVE_VERBOSITY | 1 | ≥ 0 | integer | verbosity of log output of presolve |
| PRINT_TREESIZES_ON_READ | false | | boolean | whether to print matrix sizes when initializing problem |
| REGULARIZATION_VERBOSE | false | | boolean | whether to enable verbose output of regularization |
| SCALER_OUTPUT | true | | boolean | whether scaler should print ratios after scaling |
| SILENT | false | | boolean | whether to suppress some output in DistributedTreeCallbacks |
| XYZS_SOLVE_PRINT_RESISDUAL | false | | boolean | whether to print residuals in XYZS solve |
| Name | Default | Range | Type | Description |
| PRESOLVE | true | | boolean | whether to apply presolve |
| PRESOLVE_ABORTFRAC | 0.0005 | | real | required row/column reductions as a fraction of rows/columns to start another presolving round |
| PRESOLVE_AGGREGATION | true | | boolean | whether to enable the aggregation presolver |
| PRESOLVE_BOUND_STRENGTHENING | true | | boolean | whether to enable the bound strengthening presolver |
| PRESOLVE_BOUND_STR_MAX_ITER | 2 | ≥ 0 | integer | maximal number of bound strengthening rounds per presolve round |
| PRESOLVE_BOUND_STR_MAX_PARTIAL_ACTIVITY | 1.79769e+308 | ≥ 0 | real | maximal partial activity to be divided to derive a bound |
| PRESOLVE_BOUND_STR_NUMERIC_LIMIT_BOUNDS | 1e+12 | ≥ 1 | real | maximum absolute value of newly found bound in block matrix to be accepted by bounds strengthening presolver |
| PRESOLVE_BOUND_STR_NUMERIC_LIMIT_ENTRY | 1e-07 | ≥ 0 | real | minimal entry to divide by in order to derive a bound |
| PRESOLVE_COLUMN_FIXATION | true | | boolean | whether to enable the column fixation presolver |
| PRESOLVE_COLUMN_FIXATION_MAX_FIXING_IMPACT | 1e-12 | ≥ 0 | real | maximal impact column fixing can have on the problem (currently ub-lb) |
| PRESOLVE_DUAL_TIGHTENING | true | | boolean | whether to enable the dual bound tightening presolver |
| PRESOLVE_INFINITY | ∞ | | real | value for infinity in presolvers |
| PRESOLVE_LINEAR_DEPENDENCIES | true | | boolean | whether to enable the linear dependencies presolver |
| PRESOLVE_MAX_BOUND_ACCEPTED | 1e+10 | ≥ 1 | real | maximal absolute value of newly found bound to be propagated on the row by bounds strengthening presolver |
| PRESOLVE_MAX_ROUNDS | 50 | ≥ 0 | integer | maximal number of rounds to apply all presolvers |
| PRESOLVE_MODEL_CLEANUP_MATRIX_ENTRY_IMPACT_FEASDIST | 0.01 | ≥ 0 | real | maximal fraction between absolute value of matrix entry, multiplied by corresponding variables domain width and number of nonzeros in row, and feastol to remove the matrix entry due to having a low impact |
| PRESOLVE_MODEL_CLEANUP_MAX_MATRIX_ENTRY_IMPACT | 0.001 | ≥ 0 | real | maximal absolute value of a matrix entry that is removed from the problem due to having low impact |
| PRESOLVE_MODEL_CLEANUP_MIN_MATRIX_ENTRY | 1e-10 | ≥ 0 | real | maximal absolute value of a matrix entry that is removed from the problem |
| PRESOLVE_PARALLEL_COLUMNS | true | | boolean | whether to enable the parallel columns presolver |
| PRESOLVE_PARALLEL_COLUMNS_TOL_COMPARE_ENTRIES | 1e-08 | ≥ 0 | real | tolerance for considering entries in two different columns to be equal |
| PRESOLVE_PARALLEL_ROWS | true | | boolean | whether to enable the parallel rows presolver |
| PRESOLVE_PARALLEL_ROWS_TOL_COMPARE_ENTRIES | 1e-08 | ≥ 0 | real | tolerance for considering entries in two different rows to be equal |
| PRESOLVE_PERMUTATION | true | | boolean | whether to enable the permutation presolver |
| PRESOLVE_RESET_FREE_VARIABLES | false | | boolean | whether to reset free variables' bounds after presolve (given the row implying these bounds was not removed) |
| PRESOLVE_SINGLETON_COLUMNS | true | | boolean | whether to enable the singleton columns presolver |
| PRESOLVE_SINGLETON_COLUMNS_MAX_ROUNDS | 2 | ≥ 0 | integer | maximum removal rounds in the singleton column presolver |
| PRESOLVE_SINGLETON_ROWS | true | | boolean | whether to enable the singleton rows presolver |
| PRESOLVE_SINGLETON_ROWS_MAX_ROUNDS | 2 | ≥ 0 | integer | maximum removal rounds in the singleton row presolver |
| PRESOLVE_TRACK_COL | false | | boolean | whether to track a column through presolve |
| PRESOLVE_TRACK_COL_INDEX | -1 | | integer | the index of the column to track |
| PRESOLVE_TRACK_COL_NODE | -1 | | integer | the node of the column to track |
| PRESOLVE_TRACK_ROW | false | | boolean | whether to track a row through presolve |
| PRESOLVE_TRACK_ROW_INDEX | -1 | | integer | the index of the row to track |
| PRESOLVE_TRACK_ROW_LINKING | false | | boolean | whether the row to track is in the linking part |
| PRESOLVE_TRACK_ROW_NODE | -1 | | integer | the node of the row to track |
| PRESOLVE_TRACK_ROW_SYSTEM | equalities | equalities, inequalities | string | the system of the row; equalities: equality system; inequalities: inequality system |
| PRESOLVE_TRANSFROM_INEQUALITIES_INTO_EQUALITIES | false | | boolean | whether to transform inequalities into equalities at the end of presolve |
| STOP_AFTER_PRESOLVE | false | | boolean | whether to abort PIPS after presolve |
| Name | Default | Range | Type | Description |
| FRIEDLANDER_ORBAN_REGULARIZATION_DUAL_MIN | 1e-10 | ≥ 0 | real | minimal FriedlanderOrban regularization for dual part |
| FRIEDLANDER_ORBAN_REGULARIZATION_INITIAL_DUAL_Y | 1 | ≥ 0 | real | initial FriedlanderOrban regularization for dual equalities part |
| FRIEDLANDER_ORBAN_REGULARIZATION_INITIAL_DUAL_Z | 1 | ≥ 0 | real | initial FriedlanderOrban regularization for dual inequalities part |
| FRIEDLANDER_ORBAN_REGULARIZATION_INITIAL_PRIMAL | 1 | ≥ 0 | real | initial FriedlanderOrban regularization for primal part |
| FRIEDLANDER_ORBAN_REGULARIZATION_PRIMAL_MIN | 1e-10 | ≥ 0 | real | minimal FriedlanderOrban regularization for primal part |
| IPOPT_REGULARIZATION_MAX_PRIMAL | 1e+40 | ≥ 1 | real | maximal Ipopt regularization |
| IPOPT_REGULARIZATION_MIN_PRIMAL | 1e-20 | ≥ 0 | real | minimal Ipopt regularization |
| REGULARIZATION | false | | boolean | whether to apply regularization to the linear system |
| REGULARIZATION_STRATEGY | friedlander | ipopt, friedlander | string | regularization strategy; ipopt: Ipopt's strategy; friedlander: strategy of Friedlander and Orban |
| Name | Default | Range | Type | Description |
| ALLREDUCE_SCHUR_COMPLEMENT | false | | boolean | whether the Schur-Complement should be allreduced to all processes instead of only a single one |
| PARDISO_PRECONDITION_SPARSE | false | | boolean | whether to use sparse Preconditioner in Pardiso indefinite solver |
| PRECONDITION_SPARSIFY | false | | boolean | whether to use distributed sparsification Preconditioner |
| PRECONDITION_SPARSIFY_FAKE | false | | boolean | whether to run distributed Schur complement computation but also deactivate the distributed preconditioner (for debugging only) |
| SCHUR_COMPLEMENT_FORCE_SPARSE_COMPUTATIONS | false | | boolean | whether to force sparse computations for Schur-Complement |
| SC_BLOCKWISE_BLOCKSIZE_MAX | 20 | ≥ 0 | integer | maximal blocksize in blockwise Schur-Complement |
| SC_COMPUTE_BLOCKWISE | false | | boolean | whether to use block-wise Schur-Complement computation |
| SC_ELIMINATE_C0 | true | | boolean | whether to eliminate C from the Schur complement |
| Name | Default | Range | Type | Description |
| OUTER_BICG_DYNAMIC_TOL | true | | boolean | whether to choose BiCGStab tolerance dynamically (according to iteration number) |
| OUTER_BICG_EPSILON | 1e-15 | ≥ 0 | real | minimal convergence tolerance for BiCGStab |
| OUTER_BICG_MAX_ITER | 75 | ≥ 0 | integer | limit on BiCGStab iterations |
| OUTER_BICG_MAX_NORMR_DIVERGENCES | 4 | ≥ 0 | integer | number of consecutive BiCGStab iterations without improvement in residual norm; BiCGStab stops with DIVERGED status if this is reached |
| OUTER_BICG_MAX_STAGNATIONS | 4 | ≥ 0 | integer | number of consecutive BiCGStab iterations with tiny step length (determined by OUTER_BICG_EPSILON); BiCGStab stops with STAGNATION status if this is reached |
| OUTER_BICG_TOL | 1e-10 | ≥ 0 | real | BiCGStab tolerance if OUTER_BICG_DYNAMIC_TOL is disabled |
| OUTER_SOLVE | bicgstab | none, iterref, bicgstab | string | controls the type of error absorption at the outer level of the linear system; none: no error absorption (OOQP works just fine); iterref: iterative refinement (used when error absorption is also done at a lower level, for example in the solve with the dense Schur complement); bicgstab: BiCGStab with the factorization as preconditioner |
| OUTER_SOLVE_REFINE_ORIGINAL_SYSTEM | false | | boolean | whether to compute residuals for the original instead of the regularized system for refinement at the outer level |
| Name | Default | Range | Type | Description |
| HSLLIB | libhsl.so | | string | path to MA27/MA57 solver library for dynamic loading |
| LINEAR_DENSE_SOLVER | indefinite | indefinite, saddle, psd | string | solver for dense linear systems; indefinite: solver for symmetric indefinite systems; saddle: specialized LDL^T solver for saddle point systems; psd: solver for symmetric positive-definite systems |
| LINEAR_LEAF_SOLVER | ma57 | ma57, ma27 | string | solver for linear systems in leafs; ma57: HSL MA57; ma27: HSL MA27 |
| LINEAR_ROOT_SOLVER | ma57 | ma57, ma27 | string | solver for linear system in root; ma57: HSL MA57; ma27: HSL MA27 |
| LINEAR_SUB_ROOT_SOLVER | ma57 | ma57, ma27 | string | solver for linear system in sub-root; ma57: HSL MA57; ma27: HSL MA27 |
| PARDISO_FOR_GLOBAL_SC | true | | boolean | whether to use PARDISO to exploit the linking structure of the global Schur-Complement |
| PARDISO_NITERATIVE_REFINS | -1 | ≥ -1 | integer | number of iterative refinements (PARDISO iparm[7]); -1 for automatic choice (currently 8) |
| PARDISO_NITERATIVE_REFINS_ROOT | -1 | ≥ -1 | integer | number of iterative refinements for root system (PARDISO iparm[7]); -1 for automatic choice (currently 8) |
| PARDISO_PIVOT_PERTURBATION | -1 | ≥ -1 | integer | exponent x for pivot perturbation 10^{-x} * |A|_inf (PARDISO iparm[9]); -1 for automatic choice (currently 8) |
| PARDISO_PIVOT_PERTURBATION_ROOT | -1 | ≥ -1 | integer | exponent x for pivot perturbation 10^{-x} * |A|_inf for root system (PARDISO iparm[9]); -1 for automatic choice (currently 8) |
| PARDISO_SPARSE_RHS_LEAF | false | | boolean | whether to pass RHS in sparse form to PARDISO for leaf solves |
| PARDISO_SYMB_INTERVAL | -1 | ≥ -1 | integer | trigger PARDISO symbolic analysis any so many iterations; -1 for automatic choice (currently 8) |
| Name | Default | Range | Type | Description |
| GONDZIO_MAX_CORRECTORS | 3 | ≥ 0 | integer | limit on number of computed Gondzio correctors |
| GONDZIO_STOCH_ADAPTIVE_LINESEARCH | true | | boolean | whether adaptive linesearch should be applied in the GondzioStoch solvers |
| GONDZIO_STOCH_ADDITIONAL_CORRECTORS_MAX | 1 | ≥ 0 | integer | maximal number of additional corrector steps to apply (in addition to the still existing gondzio corrector limit) |
| GONDZIO_STOCH_ADDITIONAL_CORRECTORS_SMALL_VARS | true | | boolean | whether to apply additional corrector steps for small complementarity pairs |
| GONDZIO_STOCH_FIRST_ITER_SMALL_CORRECTORS | 10 | ≥ 0 | integer | first iteration at which to look for small corrector steps |
| GONDZIO_STOCH_FREQUENCY_PUSH_CONVERGED_VARS | 4 | ≥ 0 | integer | frequency by which converged variables should be pushed away from their bounds |
| GONDZIO_STOCH_MAX_ALPHA_SMALL_CORRECTORS | 0.95 | ≥ 0 | real | maximal alpha for the IPM to try and apply small corrector steps |
| GONDZIO_STOCH_MU_LIMIT_PUSH_CONVERGED_VARS | 0.001 | ≥ 0 | real | from which value of mu on should converged variables be pushed away from their bounds |
| GONDZIO_STOCH_N_LINESEARCH | 10 | ≥ 0 | integer | number of linesearch points if GONDZIO adaptive linesearch is enabled |
| GONDZIO_STOCH_PUSH_CONVERGED_VARS_FROM_BOUND | false | | boolean | whether to push relatively early converged variables away from their bounds artificially |
| GONDZIO_STOCH_USE_DYNAMIC_CORRECTOR_SCHEDULE | false | | boolean | whether to schedule the amount of Gondzio correctors dynamically; invalidates the max correctors setting |
| Name | Default | Range | Type | Description |
| HIERARCHICAL | false | | boolean | whether to use the hierarchical approach |
| HIERARCHICAL_APPLY_SPLIT | true | | boolean | whether to apply splits in the hierarchical approach |
| HIERARCHICAL_APPROACH_N_LAYERS | 2 | ≥ 1 | integer | number of layers in hierarchical approach; 1: only dense border, 2: dense border + 1 additional layer, ... |
| HIERARCHICAL_FORCE_N_SUBROOTS | -1 | ≥ -1 | integer | force a number of subroots for the hierarchical approach instead of the automatic detection; do not use |
| HIERARCHICAL_MOVE_A0_TO_DENSE_LAYER | false | | boolean | whether to move matrix A0 to the dense layer in the hierarchical approach |
| HIERARCHICAL_PRINT_HIER_DATA | false | | boolean | whether to print hierarchical approach problem data |
| HIERARCHICAL_TESTING | false | | boolean | whether to activate some debugging of the hierarchical approach |
| SC_BLOCKSIZE_HIERARCHICAL | 20 | ≥ 0 | integer | columns to solve for at once when computing the hierarchical Schur-Complements |
| SC_HIERARCHICAL_COMPUTE_BLOCKWISE | true | | boolean | whether all columns should be computed at once when computing the hierarchical Schur-Complements |