Options¶
HighsOption covers every user-settable HiGHS option.
See Solver options for how options are
actually passed to a solve, and the API reference for
each option's full description, type and default.
HiGHS itself splits its options into two tiers. Basic options are the ones most users need day to day. Advanced options tune solver internals: numerical tolerances, algorithm strategy selection, and similar knobs. They are safe to set, but rarely necessary. If you are not sure whether you need one, you probably do not. This page indexes every option, grouped by topic and then by tier, as a map into the reference.
General¶
Run control, tolerances, scaling, and other options that apply across solvers.
Basic¶
| Option | Description |
|---|---|
SOLVER |
Which algorithm to use. |
PARALLEL |
Parallelism control. |
THREADS |
Number of threads to use. |
TIME_LIMIT |
Wall clock time limit for the solve. |
RUN_CROSSOVER |
Whether to run crossover after an interior point solve. |
RANGING |
Compute cost, bound, RHS and basic solution ranging. |
RANDOM_SEED |
Seed for the random number generator. |
OBJECTIVE_BOUND |
Objective bound that stops the solve when reached. |
OBJECTIVE_TARGET |
Objective target that stops the solve when reached. |
USER_OBJECTIVE_SCALE |
Exponent of power-of-two objective scaling. |
USER_BOUND_SCALE |
Exponent of power-of-two bound scaling. |
INFINITE_COST |
Limit above which a cost coefficient is treated as infinite. |
INFINITE_BOUND |
Limit above which a bound is treated as infinite. |
SMALL_MATRIX_VALUE |
Limit below which a matrix entry is treated as zero. |
LARGE_MATRIX_VALUE |
Limit above which a matrix entry is treated as infinite. |
KKT_TOLERANCE |
Combined tolerance for all feasibility and optimality measures. |
PRIMAL_FEASIBILITY_TOLERANCE |
Tolerance for primal feasibility. |
DUAL_FEASIBILITY_TOLERANCE |
Tolerance for dual feasibility. |
PRIMAL_RESIDUAL_TOLERANCE |
Primal residual tolerance. |
DUAL_RESIDUAL_TOLERANCE |
Dual residual tolerance. |
OPTIMALITY_TOLERANCE |
Optimality tolerance. |
HIGHS_DEBUG_LEVEL |
Internal debugging verbosity. |
HIGHS_ANALYSIS_LEVEL |
Analysis level in HiGHS. |
Advanced¶
| Option | Description |
|---|---|
ALLOW_UNBOUNDED_OR_INFEASIBLE |
Whether the ambiguous unbounded-or-infeasible status may be reported. |
COST_SCALE_FACTOR |
Scaling factor for costs. |
ALLOWED_MATRIX_SCALE_FACTOR |
Largest power-of-two factor permitted when scaling the constraint matrix. |
ALLOWED_COST_SCALE_FACTOR |
Largest power-of-two factor permitted when scaling the costs. |
Presolve¶
Basic¶
| Option | Description |
|---|---|
PRESOLVE |
Presolve control: off, choose, or on. |
WRITE_PRESOLVED_MODEL_TO_FILE |
Write the presolved model to a file. |
WRITE_PRESOLVED_MODEL_FILE |
Presolved model file path. |
MIP_ROOT_PRESOLVE_ONLY |
Whether MIP presolve is only applied at the root node. |
Advanced¶
| Option | Description |
|---|---|
USE_IMPLIED_BOUNDS_FROM_PRESOLVE |
Use relaxed implied bounds from presolve. |
LP_PRESOLVE_REQUIRES_BASIS_POSTSOLVE |
Prevents LP presolve steps for which postsolve cannot maintain a basis. |
PRESOLVE_PIVOT_THRESHOLD |
Matrix factorization pivot threshold for substitutions in presolve. |
PRESOLVE_REDUCTION_LIMIT |
Limit on the number of presolve reductions. |
RESTART_PRESOLVE_REDUCTION_LIMIT |
Limit on further presolve reductions on MIP restart. |
PRESOLVE_RULE_OFF |
Bit mask of presolve rules that are not allowed, see PresolveRule. |
PRESOLVE_RULE_TEST |
A single PresolveRule to test in isolation. Development use only. |
PRESOLVE_RULE_LOGGING |
Log the effectiveness of presolve rules for LP. |
PRESOLVE_REMOVE_SLACKS |
Remove slacks after presolve. |
PRESOLVE_SUBSTITUTION_MAXFILLIN |
Maximal fillin allowed for substitutions in presolve. |
PresolveRule names each individual presolve
reduction so that PRESOLVE_RULE_OFF and PRESOLVE_RULE_TEST do not have to
be set with raw bit positions:
from cyhighs import HighsOption, PresolveRule
options = {
HighsOption.PRESOLVE_RULE_OFF: PresolveRule.mask(PresolveRule.PROBING, PresolveRule.SPARSIFY),
}
Simplex¶
Basic¶
| Option | Description |
|---|---|
SIMPLEX_STRATEGY |
Strategy for the simplex solver. |
SIMPLEX_SCALE_STRATEGY |
Simplex scaling strategy. |
SIMPLEX_CRASH_STRATEGY |
Strategy for simplex crash. |
SIMPLEX_DUAL_EDGE_WEIGHT_STRATEGY |
Strategy for simplex dual edge weights. |
SIMPLEX_PRIMAL_EDGE_WEIGHT_STRATEGY |
Strategy for simplex primal edge weights. |
SIMPLEX_ITERATION_LIMIT |
Iteration limit for the simplex solver. |
SIMPLEX_UPDATE_LIMIT |
Limit on the number of simplex UPDATE operations. |
SIMPLEX_MIN_CONCURRENCY |
Minimum level of concurrency in parallel simplex. |
SIMPLEX_MAX_CONCURRENCY |
Maximum level of concurrency in parallel simplex. |
Advanced¶
| Option | Description |
|---|---|
SIMPLEX_DUALIZE_STRATEGY |
Strategy for dualizing before simplex. |
SIMPLEX_PERMUTE_STRATEGY |
Strategy for permuting before simplex. |
MAX_DUAL_SIMPLEX_CLEANUP_LEVEL |
Max level of dual simplex cleanup. |
MAX_DUAL_SIMPLEX_PHASE1_CLEANUP_LEVEL |
Max level of dual simplex phase 1 cleanup. |
SIMPLEX_PRICE_STRATEGY |
Strategy for PRICE in simplex. |
SIMPLEX_UNSCALED_SOLUTION_STRATEGY |
Strategy for solving the unscaled LP in simplex. |
NO_UNNECESSARY_REBUILD_REFACTOR |
No unnecessary refactorization on simplex rebuild. |
REBUILD_REFACTOR_SOLUTION_ERROR_TOLERANCE |
Tolerance on solution error before refactorizing on simplex rebuild. |
DUAL_STEEPEST_EDGE_WEIGHT_ERROR_TOLERANCE |
Tolerance on dual steepest edge weight errors. |
DUAL_STEEPEST_EDGE_WEIGHT_LOG_ERROR_THRESHOLD |
Threshold on dual steepest edge weight errors for the Devex switch. |
DUAL_SIMPLEX_COST_PERTURBATION_MULTIPLIER |
Dual simplex cost perturbation multiplier. |
PRIMAL_SIMPLEX_BOUND_PERTURBATION_MULTIPLIER |
Primal simplex bound perturbation multiplier. |
DUAL_SIMPLEX_PIVOT_GROWTH_TOLERANCE |
Dual simplex pivot growth tolerance. |
FACTOR_PIVOT_THRESHOLD |
Matrix factorization pivot threshold. |
FACTOR_PIVOT_TOLERANCE |
Matrix factorization pivot tolerance. |
USE_ORIGINAL_HFACTOR_LOGIC |
Use original HFactor logic for sparse vs hyper-sparse TRANs. |
LESS_INFEASIBLE_DSE_CHECK |
Check whether the LP is a candidate for less infeasible dual steepest edge. |
LESS_INFEASIBLE_DSE_CHOOSE_ROW |
Use less infeasible dual steepest edge if the LP has the right properties. |
LP solvers (interior point, HiPO, PDLP, QP)¶
Basic¶
| Option | Description |
|---|---|
IPM_OPTIMALITY_TOLERANCE |
IPM optimality tolerance. |
IPM_ITERATION_LIMIT |
Iteration limit for the IPM solver. |
HIPO_SYSTEM |
HiPO Newton system. |
HIPO_PARALLEL_TYPE |
HiPO parallelism. |
HIPO_ORDERING |
HiPO matrix reordering. |
HIPO_BLOCK_SIZE |
Block size for dense linear algebra within HiPO. |
PDLP_ITERATION_LIMIT |
Iteration limit for the PDLP solver. |
PDLP_SCALING_MODE |
Scaling mode for the PDLP solver. |
PDLP_RUIZ_ITERATIONS |
Number of Ruiz scaling iterations for the PDLP solver. |
PDLP_RESTART_STRATEGY |
Restart strategy for the PDLP solver. |
PDLP_CUPDLPC_RESTART_METHOD |
Restart mode for the cuPDLP-C solver. |
PDLP_STEP_SIZE_STRATEGY |
Step size strategy for the PDLP solver. |
PDLP_OPTIMALITY_TOLERANCE |
PDLP optimality tolerance. |
QP_ALLOW_HOT_START |
Allow the active set QP solver to hot start. |
QP_ITERATION_LIMIT |
Iteration limit for the active set QP solver. |
QP_NULLSPACE_LIMIT |
Nullspace limit for the active set QP solver. |
QP_REGULARIZATION_VALUE |
Regularization value added to the Hessian in the active set QP solver. |
Advanced¶
| Option | Description |
|---|---|
IPX_DUALIZE_STRATEGY |
Strategy for dualizing before IPX. |
START_CROSSOVER_TOLERANCE |
Tolerance to be satisfied before IPM crossover will start. |
RUN_CENTRING |
Perform centring steps to compute the analytic centre before crossover. |
MAX_CENTRING_STEPS |
Maximum number of steps used when computing the analytic centre. |
CENTRING_RATIO_TOLERANCE |
Tolerance at which centring stops. |
MIP¶
Basic¶
| Option | Description |
|---|---|
MIP_REL_GAP |
Relative optimality gap at which a MIP solve stops. |
MIP_ABS_GAP |
Absolute optimality gap at which a MIP solve stops. |
MIP_FEASIBILITY_TOLERANCE |
Feasibility tolerance for integer variables. |
MIP_MAX_NODES |
Maximum number of branch and bound nodes. |
MIP_DETECT_SYMMETRY |
Whether MIP symmetry should be detected. |
MIP_ALLOW_RESTART |
Whether MIP restart is permitted. |
MIP_MAX_STALL_NODES |
Max number of nodes where the estimate is above the cutoff bound. |
MIP_MAX_START_NODES |
Max number of nodes when completing a partial MIP start. |
MIP_IMPROVING_SOLUTION_SAVE |
Whether improving MIP solutions should be saved. |
MIP_IMPROVING_SOLUTION_REPORT_SPARSE |
Whether improving MIP solutions should be reported in sparse format. |
MIP_IMPROVING_SOLUTION_FILE |
File for reporting improving MIP solutions. |
MIP_LIFTING_FOR_PROBING |
Level of lifting for probing that is used. |
MIP_MAX_LEAVES |
Max number of leaf nodes. |
MIP_MAX_IMPROVING_SOLS |
Limit on the number of improving solutions found. |
MIP_LP_AGE_LIMIT |
Maximal age of dynamic LP rows before removal from the LP relaxation. |
MIP_POOL_AGE_LIMIT |
Maximal age of rows in the cutpool before they are deleted. |
MIP_POOL_SOFT_LIMIT |
Soft limit on the number of rows in the cutpool. |
MIP_PSCOST_MINRELIABLE |
Minimal observations before pseudo costs are considered reliable. |
MIP_MIN_CLIQUETABLE_ENTRIES_FOR_PARALLELISM |
Cliquetable size threshold for parallel conflict graph queries. |
MIP_REPORT_LEVEL |
MIP solver reporting level. |
MIP_HEURISTIC_EFFORT |
Effort spent for MIP heuristics. |
MIP_HEURISTIC_RUN_FEASIBILITY_JUMP |
Use the feasibility jump heuristic. |
MIP_HEURISTIC_RUN_RINS |
Use the RINS heuristic. |
MIP_HEURISTIC_RUN_RENS |
Use the RENS heuristic. |
MIP_HEURISTIC_RUN_ROOT_REDUCED_COST |
Use the rootReducedCost heuristic. |
MIP_HEURISTIC_RUN_ZI_ROUND |
Use the ZI Round heuristic. |
MIP_HEURISTIC_RUN_SHIFTING |
Use the Shifting heuristic. |
MIP_ALLOW_CUT_SEPARATION_AT_NODES |
Whether cut separation is permitted away from the root node. |
MIP_MIN_LOGGING_INTERVAL |
MIP minimum logging interval. |
MIP_LP_SOLVER |
MIP LP solver choice. |
MIP_IPM_SOLVER |
MIP IPM solver choice. |
MIP_SEARCH_SIMULATE_CONCURRENCY |
Simulate MIP search concurrency on a single thread. |
Advanced¶
| Option | Description |
|---|---|
SOLVE_RELAXATION |
Solve the relaxation of discrete model components instead of the discrete model. |
Logging & file I/O¶
Basic¶
| Option | Description |
|---|---|
OUTPUT_FLAG |
Master switch for all HiGHS logging. |
LOG_TO_CONSOLE |
Whether log messages are written to the console. |
TIMELESS_LOG |
Suppression of time-based data in logging. |
LOG_FILE |
Log file path. |
WRITE_MODEL_TO_FILE |
Write the model to a file. |
WRITE_SOLUTION_TO_FILE |
Write the primal and dual solution to a file. |
WRITE_SOLUTION_STYLE |
Style of the solution file. |
GLPSOL_COST_ROW_LOCATION |
Location of the cost row for a Glpsol file. |
ICRASH |
Run iCrash. |
ICRASH_DUALIZE |
Dualize strategy for iCrash. |
ICRASH_STRATEGY |
Strategy for iCrash. |
ICRASH_STARTING_WEIGHT |
iCrash starting weight. |
ICRASH_ITERATIONS |
iCrash iterations. |
ICRASH_APPROX_ITER |
iCrash approximate minimization iterations. |
ICRASH_EXACT |
Exact subproblem solution for iCrash. |
ICRASH_BREAKPOINTS |
iCrash breakpoints setting. |
READ_SOLUTION_FILE |
Read solution file path. |
READ_BASIS_FILE |
Read basis file path. |
WRITE_MODEL_FILE |
Write model file path. |
SOLUTION_FILE |
Write solution file path. |
WRITE_BASIS_FILE |
Write basis file path. |
WRITE_IIS_MODEL_FILE |
Write IIS model file path. |
Advanced¶
| Option | Description |
|---|---|
LOG_DEV_LEVEL |
Output development messages. |
LOG_GITHASH |
Log the githash. |
WRITE_MATRIX_IMAGE |
Write an image of the constraint matrix to a file. |
WRITE_HESSIAN_IMAGE |
Write an image of the Hessian to a file. |
MPS_PARSER_TYPE_FREE |
Use the free format MPS file reader. |
KEEP_N_ROWS |
How to handle multiple N-rows in MPS files. |
USE_WARM_START |
Use any warm start that is available. |
IIS¶
Options for computing an irreducible infeasible subsystem (IIS) on an infeasible model. There is no advanced tier for these options.
| Option | Description |
|---|---|
IIS_STRATEGY |
Strategy for computing an IIS. |
IIS_TIME_LIMIT |
Time limit for computing an IIS. |
Multi-objective¶
| Option | Description |
|---|---|
BLEND_MULTI_OBJECTIVES |
Blend multiple objectives or apply lexicographically. |
There is no advanced tier for multi-objective options.