HIGHS Optimizer Options for AMPL
--------------------------------------------
To set these options, assign a string specifying their values to the AMPL
option "highs_options". For example:
ampl: option highs_options 'relgaptol=1e-6';
Options:
acc:lineq
Solver acceptance level for 'LinConEQ', default 2:
0 - Not accepted natively, automatic redefinition will be attempted
1 - Accepted but automatic redefinition will be used where possible
2 - Accepted natively and preferred
acc:linge
Solver acceptance level for 'LinConGE', default 2:
0 - Not accepted natively, automatic redefinition will be attempted
1 - Accepted but automatic redefinition will be used where possible
2 - Accepted natively and preferred
acc:linle
Solver acceptance level for 'LinConLE', default 2:
0 - Not accepted natively, automatic redefinition will be attempted
1 - Accepted but automatic redefinition will be used where possible
2 - Accepted natively and preferred
acc:linrange (acc:linrng)
Solver acceptance level for 'LinConRange', default 2:
0 - Not accepted natively, automatic redefinition will be attempted
1 - Accepted but automatic redefinition will be used where possible
2 - Accepted natively and preferred
alg:basis (basis)
Whether to use or return a basis:
0 - No
1 - Use incoming basis (if provided)
2 - Return final basis
3 - Both (1 + 2 = default)
alg:dualfeastol (dualfeastol, dual_feasibility_tolerance)
Dual feasibility tolerance (default 1e-7).
alg:feastol (feastol, primal_feasibility_tolerance)
Primal feasibility tolerance (default 1e-7).
alg:infinitebound (infinitebound, infinite_bound)
Limit on |constraint bound|: values larger than this will be treated as
infinite (default: 1e20).
alg:infinitecoeff (infinitecoeff, large_matrix_value)
Upper limit on |matrix entries|: values larger than this will be treated
as infinite (default: 1e15).
alg:infinitecost (infinitecost, infinite_cost)
Limit on cost coefficient : values larger than this will be treated as
infinite (default: 1e20).
alg:ipmopttol (ipmopttol, ipm_optimality_tolerance)
IPM optimality tolerance (default 1e-8).
alg:method (method, lpmethod, solver)
Which algorithm to use :
choose - Automatic (default)
simplex - Simplex
ipm - Interior Point Method
pdlp - cuPDLP-c solver
alg:parallel (parallel)
Parallel option :
choose - Automatic (default)
off - Off
on - On
alg:pdlpdgaptol (pdlpdgaptol, pdlp_d_gap_tol)
Duality gap tolerance for PDLP solver (default 1e-4).
alg:relax (relax)
0*/1: Whether to relax integrality of variables.
alg:simplex (simplex, simplex_strategy)
Strategy for simplex solver :
0 - Choose automatically (default)
1 - Dual (serial)
2 - Dual ('PAMI' - Parallelization Across Multiple Iterations)
3 - Dual ('SIP' - Single Iteration Parallelism
4 - Primal
alg:simplexcrash (simplexcrash, simplex_crash_strategy)
Simplex crash strategy :
0 - Off (default)
1 - LTSSF
2 - Bixby
alg:simplexdualedge (simplexdualedge, simplex_dual_edge_weight_strategy)
Simplex dual edge weights strategy :
-1 - Choose automatically (default)
0 - Dantzig
1 - Devex
2 - Steepest
alg:simplexprimaledge (simplexprimaledge, simplex_primal_edge_weight_strategy)
Simplex primal edge weights strategy :
-1 - Choose automatically (default)
0 - Dantzig
1 - Devex
2 - Steepest
alg:simplexscale (simplexscale, simplex_scale_strategy)
Simplex scaling strategy :
0 - Off
1 - Choose automatically (default)
2 - Equilibration
3 - Forced equilibration
4 - Max value 0
5 - Max value 1
alg:start (warmstart)
Whether to use incoming primal (and dual, for LP) variable values in a
warmstart:
0 - No
1 - Yes (for LP: if there is no incoming alg:basis) (default)
2 - Yes (for LP: ignoring the incoming alg:basis, if any.)
alg:zerocoeff (zerocoeff, small_matrix_value)
Lower limit on |matrix entries|: values smaller than this will be
treated as zero (default: 1e-9).
bar:crossover (run_crossover)
Run crossover after IPM to get a basic solution
cvt:bigM (cvt:bigm, cvt:mip:bigM, cvt:mip:bigm)
Default value of big-M for linearization of logical constraints. Not
used by default. Use with care (prefer tight bounds). Should be smaller
than (1.0 / [integrality tolerance])
cvt:expcones (expcones)
0*/1: Recognize exponential cones.
cvt:mip:eps (cvt:cmp:eps, cmp:eps)
Tolerance for strict comparison of continuous variables for MIP. Applies
to <, >, and != operators. Also applies to negation of conditional
comparisons: b==1 <==> x<=5 means that with b==0, x>=5+eps. Default:
1e-4.
cvt:names (names, modelnames)
Whether to read or generate variable / constraint / objective names:
0 - No names
1 - (Default) Only provide names if at least one of .col / .row name
files was written by AMPL (AMPL: `option [<solver>_]auxfiles rc;`)
2 - Read names from AMPL, but create generic names if not provided
3 - Create generic names.
cvt:plapprox:domain (plapprox:domain, plapproxdomain)
For piecewise-linear approximated functions, both arguments and result
are bounded to +-[pladomain]. Default 1e6.
cvt:plapprox:reltol (plapprox:reltol, plapproxreltol)
Relative tolerance for piecewise-linear approximation. Default 0.01.
cvt:pre:all
0/1*: Set to 0 to disable most presolve in the flat converter.
cvt:pre:eqbinary
0/1*: Preprocess reified equality comparison with a binary variable.
cvt:pre:eqresult
0/1*: Preprocess reified equality comparison's boolean result bounds.
cvt:pre:unnest
0/1*: Inline nested expressions, currently Ands/Ors.
cvt:quadcon (passquadcon)
Convenience option. Set to 0 to disable quadratic constraints. Synonym
for acc:quad..=0. Currently this disables out-multiplication of
quadratic terms, then they are linearized.
cvt:quadobj (passquadobj)
0/1*: Multiply out and pass quadratic objective terms to the solver, vs.
linear approximation.
cvt:socp (socpmode, socp)
Second-Order Cone recognition mode:
0 - Do not recognize SOCP forms
1 - Recognize from non-quadratic expressions only (sqrt, abs)
2 - Recognize from quadratic and non-quadratic SOCP forms. Helpful if
the solver does not recognize non-standard forms
Recognized SOCP forms can be further converted to (SOCP-standardized)
quadratic constraints, see cvt:socp2qc. Default: 0.
cvt:socp2qc (socp2qcmode, socp2qc)
Mode to convert recognized SOCP forms to SOCP-standardized quadratic
constraints:
0 - Do not convert
1 - Convert if no other cone types found, and not all original
quadratics could be recognized as SOC, in particular if the
objective is quadratic
2 - Always convert
Such conversion can be necessary if the solver does not accept a mix of
conic and quadratic constraints/objectives. Default: 2.
cvt:sos (sos)
0/1*: Whether to honor declared suffixes .sosno and .ref describing SOS
sets. Each distinct nonzero .sosno value designates an SOS set, of type
1 for positive .sosno values and of type 2 for negative values. The .ref
suffix contains corresponding reference values used to order the
variables.
cvt:sos2 (sos2)
0/1*: Whether to honor SOS2 constraints for nonconvex piecewise-linear
terms, using suffixes .sos and .sosref provided by AMPL.
cvt:uenc:negctx:max (uenc:negctx:max, uenc:negctx)
If cvt:uenc:ratio applies, max number of constants in comparisons
x==const in negative context (equivalently, x!=const in positive
context) to skip UEnc(x). Default 1.
cvt:uenc:ratio (uenc:ratio)
Min ratio (ub-lb)/Nvalues to skip unary encoding for a variable x, where
Nvalues is the number of constants used in conditional comparisons
x==const. Instead, indicator constraints (or big-Ms) are used, if
uenc:negctx also applies. Default 0.
lim:improvingsols (improvingsolslimit, mip_max_improving_sols)
Maximum number of improving solutions found (default: no limit).
lim:ipmiterationlimit (ipmiterationlimit, ipm_iteration_limit)
Limit on IPM iterations (default: no limit).
lim:leavenodes (leaveslim, mip_max_leaves)
Maximum MIP number of leaf nodes (default: no limit).
lim:nodes (nodelim, nodelimit, mip_max_nodes)
Maximum MIP nodes to explore (default: no limit).
lim:objectivebound (objective_bound, objectivebound)
Objective bound for termination of the dual simplex solver (default: no
limit).
lim:objectivetarget (objective_target, objectivetarget)
Objective target for termination of the MIP solver (default: no limit).
lim:pdlpiterationlimit (pdlpiterationlimit, pdlp_iteration_limit)
Iteration limit for PDLP solver (default: no limit).
lim:pdlpnativetermination (pdlp_native_termination, pdlpnativetermination)
Use native termination for PDLP solver:
0 - No (default)
1 - Yes.
lim:simplexiterationlimit (simplexiterationlimit, simplex_iteration_limit)
Limit on simplex iterations (default: no limit).
lim:stallnodes (stallnodelim, stallnodelimit, mip_max_stall_nodes)
Maximum MIP number of nodes where estimate is above cutoff bound
(default: no limit).
lim:time (timelim, timelimit, time_limit)
Limit on solve time (in seconds; default: no limit).
mip:absgaptol (absgaptol, mip_abs_gap)
Tolerance on absolute gap of MIP, |ub-lb|, to determine whether
optimality has been reached for a MIP instance (default 1e-06).
mip:bestbound (bestbound, return_bound)
Whether to return suffix .bestbound for the best known MIP dual bound on
the objective value:
0 - No (default)
1 - Yes.
The suffix is on the objective and problem and is -Infinity for
minimization problems and +Infinity for maximization problems if there
are no integer variables or if a dual bound is not available.
mip:detsimmetry (detsimmetry, mip_detect_symmetry)
Whether symmetry should be detected (default 1)
mip:heureff (heureff, mip_heuristic_effort)
Fraction of time to spend in MIP heuristics (default 0.05).
mip:intfeastol (intfeastol, inttol, mip_feasibility_tolerance)
Feasibility tolerance for integer variables (default 1e-06).
mip:lpagelimit (lpagelimit, mip_lp_age_limit)
Maximal age of dynamic LP rows before they are removed from the LP
relaxation (default 10)
mip:mincliquetable (mincliquetable, mip_min_cliquetable_entries_for_parallelism)
Minimal number of entries in the cliquetable before neighborhood queries
of the conflict graph use parallel processing(default 100000)
mip:poolsoftlimit (poolsoftlimit, mip_pool_soft_limit)
Soft limit on the number of rows in the cutpool for dynamic age
adjustment(default 10000)
mip:pscostreliability (pscostreliability, mip_pscost_minreliable)
Minimal number of observations before pseudo costs are considered
reliable(default 8)
mip:relgaptol (relgaptol, mip_rel_gap)
Tolerance on relative gap, | ub - lb|/|ub | , to determine whether
optimality has been reached for a MIP instance (default 1e-04).
mip:return_gap (return_mipgap)
Whether to return mipgap suffixes or include mipgap values (|objectve -
.bestbound|) in the solve_message: sum of
1 - Return .relmipgap suffix (relative to |obj|)
2 - Return .absmipgap suffix (absolute mipgap)
4 - Suppress mipgap values in solve_message.
Default = 0. The suffixes are on the objective and problem. Returned
suffix values are +Infinity if no integer-feasible solution has been
found, in which case no mipgap values are reported in the solve_message.
mip:round (round)
Whether to round integer variables to integral values before returning
the solution, and whether to report that the solver returned noninteger
values for integer values: sum of
1 ==> Round nonintegral integer variables
2 ==> Modify solve_result
4 ==> Modify solve_message
Default = 0. Modifications that were or would be made are reported in
solve_result and solve_message only if the maximum deviation from
integrality exceeded mip:round_reptol.
mip:round_reptol (round_reptol)
Tolerance for reporting rounding of integer variables to integer values;
see "mip:round". Default = 1e-9.
obj:no (objno)
Objective to optimize:
0 - None
1 - First (default, if available)
2 - Second (if available), etc.
pre:centring (run_centring, centring)
Perform centring steps or not:
0 - No (default)
1 - Yes.
pre:centringratiotolerance (centring_ratio_tolerance, centringratiotolerance)
Centring stops when the ratio max(x_j*s_j) / min(x_j*s_j) is below this
tolerance (default 100).
pre:maxcentringsteps (max_centring_steps, maxcentringsteps)
Maximum number of steps to use when computing the analytic centre
(default 5).
pre:pdlpscaling (pdlp_scaling, pdlpscaling)
Scaling option for PDLP solver:
0 - No
1 - Yes (default)
pre:solve (presolve)
Whether to use presolve:
choose - Automatic (default)
off - Off
on - On
pre:userboundscale (user_bound_scale, userboundscale)
Exponent of power-of-two bound scaling for model (default 0).
pre:usercostscale (user_cost_scale, usercostscale)
Exponent of power-of-two cost scaling for model (default 0).
sol:chk:fail (chk:fail, checkfail)
Fail on MP solution check violations, with solve result 150.
sol:chk:feastol (sol:chk:eps, chk:eps, chk:feastol)
Absolute tolerance to check objective values, variable and constraint
bounds. Default 1e-6.
sol:chk:feastolrel (sol:chk:epsrel, chk:epsrel, chk:feastolrel)
Relative tolerance to check objective values, variable and constraint
bounds. Default 1e-6.
sol:chk:infeas (chk:infeas, checkinfeas)
Check even infeasible solution condidates, whenever solver reports them.
sol:chk:inttol (sol:chk:inteps, sol:inteps, chk:inttol)
Solution checking tolerance for variables' integrality. Default 1e-5.
sol:chk:mode (solcheck, checkmode, chk:mode)
Solution checking mode. Sum of a subset of the following bits:
1 - Check variable bounds and integrality.
2 - Check original model constraints, as well as any non-linear
expression values reported by the solver.
4 - Check intermediate auxiliary constraints (i.e., those which were
reformulated further).
8 - Check final auxiliary constraints sent to solver.
16 - Check objective values.
32, 64, 128, 256, 512 - similar, but non-linear expressions are
recomputed (vs using their values reported by the solver.)
*Experimental.* This is an idealistic check, because it does not
consider possible tolerances applied by the solver when computing
expression values.
Default: 1+2+512.
sol:chk:prec (chk:prec, chk:precision)
AMPL solution_precision option when checking: number of significant
digits.
sol:chk:round (chk:round, chk:rnd)
AMPL solution_round option when checking: round to this number of
decimals after comma (before comma if negative.)
tech:debug (debug)
0*/1: whether to assist testing & debugging, e.g., by outputting
auxiliary information.
tech:logfile (logfile)
Log file name.
tech:miploglev (miploglev, mip_report_level)
0/1*/2: MIP solver report level
tech:optionfile (optionfile, option:file)
Name of an AMPL solver option file to read (surrounded by 'single' or
"double" quotes if the name contains blanks). Lines that start with #
are ignored. Otherwise, each nonempty line should contain "name=value",
e.g., "lim:iter=500".
tech:outlev (outlev)
0*/1: Whether to write HighS log lines (chatter) to stdout and to file.
tech:reporttimes (reporttimes, report_times)
0*/1: Set to 1 to return the solution times in the problem suffixes
'time_solver', 'time_setup' and 'time' and in the solver message.
'time'= 'time_solver'+'time_setup' is a measure of the total time spent
in the solver driver; all times are wall times.
tech:threads (threads)
How many threads to use when using the barrier algorithm or solving MIP
problems; default 0 ==> automatic choice.
tech:timing (timing)
0*/1: Whether to display timings for the run.
tech:version (version)
Single-word phrase: report version details before solving the problem.
tech:wantsol (wantsol)
In a stand-alone invocation (no "-AMPL" on the command line), what
solution information to write. Sum of
1 - Write ".sol" file
2 - Primal variables to stdout
4 - Dual variables to stdout
8 - Suppress solution message.
tech:writegraph (cvt:writegraph, writegraph, exportgraph)
File to export conversion graph. Format: JSON Lines.
tech:writemodel (writeprob, writemodel, tech:exportfile)
Specifies files where to export the model before solving (repeat the
option for several files.) File name extensions can be ".lp[.7z]",
".mps", etc.
tech:writemodelonly (justwriteprob, justwritemodel)
Specifies files where to export the model, no solving (option can be
repeated.) File extensions can be ".dlp", ".mps", etc.
tech:writesolution (writesol, writesolution)
Specifies the names of files where to export the solution and/or other
result files in solver's native formats. Option can be repeated. File
name extensions can be ".sol[.tar.gz]", ".json", ".bas", ".ilp", etc.