# AMPL-Gurobi Parameter Reference

## AMPL-Gurobi Parameter Reference

aggfill | amount of fill allowed during aggregation during Gurobi's presolve (default: -1) |
---|---|

aggregate | whether to use aggregation during Gurobi presolve: 0 = no (sometimes reduces numerical errors) 1 = yes (default) |

ams_eps | relative tolerance for reporting alternate MIP solutions (default = no limit) |

ams_epsabs | absolute tolerance for reporting alternate MIP solutions (default = no limit) |

ams_limit | limit on number of alternate MIP solutions written (default = 10) |

ams_mode | search mode for MIP solutions when several are desired: 0 = just focus on finding an optimal solution (default) 1 = make some effort at finding additional solutions 2 = try to find the "ams_limit" best solutions. |

ams_stub | stub for alternate MIP solutions. The number of alternative MIP solution files written is determined by three keywords: ams_limit gives the maximum number of files written; ams_eps gives a relative tolerance on the objective values of alternative solutions; ams_epsabs gives an absolute tolerance on how much worse the objectives can be. |

barconvtol | tolerance on the relative difference between the primal and dual objectives for stopping the barrier algorithm (default: 1e-8) |

barcorrectors | Limit on the number of central corrections done in each barrier iteration (default -1 = automatic choice) |

barhomogeneous | Whether to use the homogeneous barrier algorithm
(e.g., when lpmethod=2 or nodemethod=2 is specified): -1 = only when solving a MIP node relaxation (default) 0 = never 1 = always. The homogeneous barrier algorithm can detect infeasibility or unboundedness directly, without crossover, but is a bit slower than the nonhomogeneous barrier algorithm. |

bariterlim | Limit on the number of barrier iterations (default: none) |

barorder | Ordering used to reduce fill in sparse-matrix factorizations during the barrier algorithm: -1 = automatic choice 0 = approximate minimum degree 1 = nested dissection |

barqcptol | convergence tolerance on the relative difference between primal and dual objective values for barrier algorithms when solving problems with quadratic constraints (default: 1e-6) |

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) For problems with integer variables and quadratic constraints, basis = 0 is assumed quietly. |

basisdebug | whether to honor basis and solnsens when an optimal solution was not found: 0 = only if a feasible solution was found (default) 1 = yes 2 = no |

bestbndstop | stop once the best bound on the objective value is at least as good as this value. |

bestbound | whether to return suffix .bestbound for the best known bound on the objective value: 0 = no (default) 1 = yes |

bestobjstop | stop after a feasible solution with objective value at least as good as this value has been found. |

branchdir | which child node to explore first when branching: -1 = explore "down" branch first 0 = explore "most promising" branch first (default) 1 = explore "up" branch first |

cliquecuts | clique cuts: overrides "cuts"; choices as for "cuts" |

cloudid | use Gurobi Instant Cloud with this "accessID". |

cloudkey | use Gurobi Instant Cloud with this "secretKey". Both cloudid and cloudkey are required. |

cloudpriority | Priority of Cloud job, an integer between -100 and 100 (default 0). Jobs with priority 100 run immediately; use caution when setting this to 100. . |

cloudpool | optional "machine pool" to use with Gurobi Instant Cloud. |

concurrentmip | how many independent MIP solves to allow at once when multiple threads are available. The available threads are divided as evenly as possible among the concurrent solves. (default: 1) |

covercuts | cover cuts: overrides "cuts"; choices as for "cuts" |

crossover | how to transform a barrier solution to a basic one: -1 = automatic choice (default) 0 = none: return an interior solution 1 = push dual vars first, finish with primal simplex 2 = push dual vars first, finish with dual simplex 3 = push primal vars first, finish with primal simplex 4 = push primal vars first, finish with dual simplex |

crossoverbasis | strategy for initial basis construction during crossover: 0 = favor speed (default) 1 = favor numerical stability |

cutagg | maximum number of constraint aggregation passes during cut generation (-1 = default = no limit); overrides "cuts" |

cutoff | If the optimal objective value is no better than cutoff, report "objective cutoff" and do not return a solution; default: -∞ for minimizing, +∞ for maximizing |

cutpasses | maximum number of cutting-plane passes to do during root-cut generation (default: -1 = automatic choice) |

cuts | global cut generation control, valid unless overridden by individual cut-type controls: -1 = automatic choice (default) 0 = no cuts 1 = conservative cut generation 2 = aggressive cut generation 3 = very aggressive cut generation |

degenmoves | limit on the number of degenerate simplex moves -- for use when too much time is taken after solving the initial root relaxation of a MIP problem and before cut generation or root heuristics have started. |

disconnected | Whether to exploit independent MIP sub-models: -1 = automatic choice (default) 0 = no 1 = use moderate effort 2 = use aggressive effort |

dualreductions |
whether Gurobi's presolve should use dual reductions, which may be useful on a
well-posed problem but can prevent distinguishing whether a problem is
infeasible or unbounded: 0 = no 1 = yes (default) |

feasrelaxbigm | Value of "big-M" sometimes used with constraints when doing a feasibility relaxation (default: 1e6) |

feasrelax |
Whether to modify the problem into a feasibility
relaxation problem: 0 = no (default) 1 = yes, minimizing the weighted sum of violations 2 = yes, minimizing the weighted count of violations 3 = yes, minimizing the sum of squared violations 4-6 = same objective as 1-3, but also optimize the original objective, subject to the violation objective being minimized Weights are given by suffixes .lbpen and .ubpen on variables and .rhspen on constraints (when positive), else by keywords lbpen, ubpen, and rhspen, respectively (default values = 1). Weights ≤ 0 are treated as ∞, allowing no violation. |

feastol | primal feasibility tolerance (default: 1e-6) |

flowcover | flowcover cuts: overrides "cuts"; choices as for "cuts" |

flowpath | flowpath cuts: overrides "cuts"; choices as for "cuts" |

gomory | maximum number of Gomory cut passes during cut generation (-1 = default = no limit); overrides "cuts" |

gubcover | GUB cover cuts: overrides "cuts"; choices as for "cuts" |

heurfrac | fraction of time to spend in MIP heuristics (default: 0.05) |

iisfind | whether to return an IIS (via suffix .iis) when the problem is infeasible: 0 = no (default) 1 = yes |

iismethod | which method to use when finding an IIS (irreducible infeasible set of constraints, including variable bounds): -1 = automatic choice (default) 0 = often faster than method 1 1 = can find a smaller IIS than method 0 |

implied | implied cuts: overrides "cuts"; choices as for "cuts" |

improvegap | optimality gap below which the MIP solver switches from trying to improve the best bound to trying to find better feasible solutions (default: 0) |

improvetime | execution seconds after which the MIP solver switches from trying to improve the best bound to trying to find better feasible solutions (default: ∞) |

impstartnodes | number of MIP nodes after which the solution strategy will change from improving the best bound to finding better feasible solutions (default: 0) |

infproofcuts | whether to generate infeasibility proof cuts: -1 = automatic choice (default) 0 = no 1 = moderate cut generation 2 = aggressive cut generation |

intfeastol | feasibility tolerance for integer variables (default: 1e-05) |

intstart | when there are integer variables, whether to use an initial guess (if available): 0 = no 1 = yes (default) |

iterlim | iteration limit (default: no limit) |

lazy | whether to honor suffix .lazy on linear constraints in problems with binary or integer variables: 0 = no (ignore .lazy) 1 = yes (default) Lazy constraints are indicated with .lazy values of 1, 2, or 3 and are ignored until a solution feasible to the remaining constraints is found. What happens next depends on the values of .lazy: 1 ==> the constraint may still be ignored if another lazy constraint cuts off the current solution; 2 ==> the constraint will henceforth be enforced if it is violated by the current solution; 3 ==> the constraint will henceforth be enforced.: |

lbpen | See feasrelax |

logfile | name of file to receive log lines (default: none) |

logfreq | number of seconds between log lines (default: 5) |

lpmethod | which algorithm to use for continuous models (LP, QP) and for the root node of integer models (MIP, MIQP): 0 = primal simplex 1 = dual simplex (default) 2 = barrier 3 = concurrent 4 = deterministic concurrent |

maxmipsub | maximum number of nodes for RINS heuristic to explore on MIP problems (default: 500) |

minrelnodes | number of nodes for the Minimum Relaxation heuristic to explore at the MIP root node when a feasible solution has not been found by any other heuristic (default: 0) |

mipfocus | MIP solution strategy: 0 = balance finding good feasible solutions and proving optimality (default) 1 = favor finding feasible solutions 2 = favor proving optimality 3 = focus on improving the best objective bound |

mipgap | maximum relative MIP optimality gap (default: 1e-4) |

mipgapabs | absolute MIP optimality gap (default: 1e-10) |

mipsep | MIPsep cuts: overrides "cuts"; choices as for "cuts" |

mipstart | whether to use initial guesses in problems with integer variables: 0 = no 1 = yes (default) |

mircuts | MIR cuts: overrides "cuts"; choices as for "cuts" |

modkcuts | mod-k cuts: overrides "cuts"; choices as for "cuts" |

multiobj | whether to do multi-objective optimization: 0 = no (default) 1 = yes When multiobj = 1 and several objectives are present, suffixes .objpriority, .objweight, .objreltol, and .objabstol on the objectives are relevant. Objectives with greater .objpriority values (integer values) have higher priority. Objectives with the same .objpriority are weighted by .objweight. Objectives with positive .objabstol or .objreltol are allowed to be degraded by lower priority objectives by amounts not exceeding the .objabstol (absolute) and .objreltol (relative) limits. The objective indicated by objno can be general; all others must be linear. Objective-specific convergence tolerances and method values may be assigned via keywords of the form obj_n_name, such as obj_1_method for the first objective. |

multiobjmethod | choice of optimization algorithm for lower-priority
objectives: -1 = automatic choice (default) 0 = primal simplex 1 = dual simplex 2 = ignore warm-start information; use the algorithm specified by the method keyword. The method keyword determines the algorithm to use for the highest priority objective. |

multiobjpre | how to apply Gurobi's presolve when doing
multi-objective optimization: -1 = automatic choice (default) 0 = do not use Gurobi's presolve 1 = conservative presolve 2 = aggressive presolve, which may degrade lower- priority objectives. |

multprice_norm | choice of norm used in multiple pricing: -1 = automatic choice (default) 0,1,2,3 = alternate norm pricing |

networkcuts | Network cuts: overrides "cuts"; choices as for "cuts" |

nodefiledir | directory where MIP tree nodes are written after memory for them exceeds nodefilestart (default: .) |

nodefilestart | gigabytes of memory to use for MIP tree nodes (default = ∞ - no limit, i.e., no node files written) |

nodelim | maximum MIP nodes to explore (default: no limit) |

nodemethod | algorithm used to solve relaxed MIP node problems: 0 = primal simplex 1 = dual simplex (default) 2 = barrier |

normadjust | synonym for multprice_norm |

numericfocus | how much to try detecting and managing numerical issues: 0 = automatic choice (default) 1-3 = increasing focus on more stable computations |

objno | objective to optimize: 0 = none 1 = first (default, if available), 2 = second (if available), etc. |

objscale | how to scale the objective: objscale=0: automatic choice (default) -1 ≤ objscale < 0: divide by max abs. coefficient raised to this power objscale > 0: divide by this value |

opttol | optimality tolerance on reduced costs (default: 1e-6) |

outlev | whether to write Gurobi log lines (chatter) to stdout: 0 = no (default) 1 = yes (see logfreq) |

param | general way to specify values of both documented and undocumented Gurobi parameters; value should be a quoted string (delimited by ' or ") containing a parameter name, a space, and the value to be assigned to the parameter. Can appear more than once. Cannot be used to query current parameter values. |

paramfile | name of file (surrounded by 'single' or "double" quotes if the name contains blanks) of parameter names and values for them. Lines that start with # are ignored. Otherwise, each nonempty line should contain a name and a value, separated by a space. |

partitionplace | A bitmap that specifies when and how to use the .partition suffix on variables
in the partition heuristic for MIP problems: sum of 1: when the branch-and-cut search ends 2: at nodes in the branch-and-cut search 4: after the root-cut loop 8: at the start of the root-cut loop 16: before solving the root relaxation (default: 1+2+4+8 = 15). Values of .parition determine how variables participate in the partition heuristic. Variables with .partition = -1 are always held fixed .partition = 0 can vary in all sub-MIP models .partition > 0 can vary only in in that sub-MIP model The partition heuristic is only run when partitionplace is between 1 and 31 and some variables have suitable .partition suffix values. |

perturb | magnitude of simplex perturbation (when needed; default: 2e-4) |

pivtol | Markowitz pivot tolerance (default: 7.8125e-3) |

pl_bigm | When some variables applear in piecewise-linear terms in the objective and AMPL's "option pl_lineraize 0" is specified, lower bounds of -pl_bigm are assumed for such variables that are not bounded below and upper bounds of +pl_bigm are assumed for such variables that are not bounded above. (Default = 1e6) |

pool_distmip | number of machines in the server pool (if specified by pool_servers) to use for solving each MIP instance |

pool_mip | number of independent MIP jobs (default 0) to generate and solve using the server pool (if specified by pool_servers); Gurobi automatically chooses different algorithm parameter values for each job |

pool_password | password for the server pool (if needed) |

pool_servers | comma-separated list of server names or IP addresses of machines in the server pool (default "" = none) |

pool_tunejobs | number of parallel tuning jobs (default 0) to run on the server (if specified by pool_servers); tuning results are not normalized by server performance, so tuning is most effective when all the servers in the server pool have similar performance characteristics |

poolsearchmode | synonym for ams_mode |

poolsolutions | synonym for ams_limit |

predeprow | whether Gurobi's presolve should remove linearly dependent constraint-matrix rows: -1 = only for continuous models 0 = never 1 = for all models |

predual | whether gurobi's presolve should form the dual of a continuous model: -1 = automatic choice (default) 0 = no 1 = yes 2 = form both primal and dual and use two threads to choose heuristically between them |

prepasses | limit on the number of Gurobi presolve passes: -1 = automatic choice (default) n ≥ 0: at most n passes |

preqlinearize |
How Gurobi's presolve should treat quadratic problems: -1 = automatic choice (default) 0 = do not modify the quadratic part(s) 1 = try to linearize quadratic parts, focusing on a strong LP relaxation 2 = try to linearize quadratic parts, focusing on a compact relaxation |

presolve | whether to use Gurobi's presolve: -1 = automatic choice (default) 0 = no 1 = conservative presolve 2 = aggressive presolve |

presos1bigm |
Big-M for converting SOS1 constraints to binary form: -1 = automatic choice (default) 0 = no conversion Large values (e.g., 1e8) may cause numeric trouble |

presos2bigm |
Big-M for converting SOS2 constraints to binary form: -1 = automatic choice 0 = no conversion (default) Large values (e.g., 1e8) may cause numeric trouble |

presparsify | whether Gurobi's presolve should use its sparsify reduction, which
sometimes gives significant problem-size reductions: 0 = no (default) 1 = yes |

pricing | pricing strategy: -1 = automatic choice (default) 0 = partial pricing 1 = steepest edge 2 = Devex 3 = quick-start steepest edge |

priorities | whether to use the variable.priority suffix with MIP problems.
When several branching candidates are available, a variable
with the highest .priority is chosen for the next branch.
Priorities are nonnegative integers, with a default priority of 0: 0 = ignore .priority; assume priority 0 for all vars 1 = use .priority if present (default) |

psdtol | maximum diagonal perturbation to correct indefiniteness in quadratic objectives (default: 1e-6) |

pumppasses | number of feasibility-pump passes to do after the MIP root when no other root heuristoc found a feasible solution (default: 0) |

qcpdual |
Whether to compute dual variables when the problem has quadratic constraints (which can be expensive): 0 = no (default) 1 = yes |

quad | whether simplex should use quad-precision: -1 = automatic choice (default) 0 = no 1 = yes |

rays | Whether to return suffix .unbdd if the objective is unbounded or suffix .dunbdd if the constraints are infeasible: 0 = neither 1 = just .unbdd 2 = just .dunbdd 3 = both (default) |

relax | whether to enforce integrality: 0 = yes (default) 1 = no: treat integer and binary variables as continuous |

resultfile | name of a file of extra information written after completion of optimization. The name's suffix determines what is written: .sol - solution vector .bas - simplex basis .mst - integer variable solution vector |

rhspen | See feasrelax |

rins | how often to apply the RINS heuristic for MIP problems: -1 = automatic choice (default) 0 = never n > 0: every n-th node |

scale | whether to scale the problem: 0 = no 1 = yes (default) |

seed | random number seed, affecting perturbations that may influence the solution path (default: 0) |

server | Comma-separated list of Gurobi compute servers, specified either by name or by IP address. (default: unspecified - solve according to license key) |

server_insecure | Whether to user "insecure mode" with the Gurobi Compute Server. Should be left at default value (0) unless an administrator specifies another value. |

server_password | Password (if needed) for specified Gurobi Compute Server(s) |

server_port | Network port to use for Gurobi Compute Server(s) (default: -1 = use default port) |

server_priority | Priority for Gurobi Compute Server(s) (default: 1; maximum 100) |

server_timeout | Report job as rejected by Gurobi Compute Server if the job is not started within server_timeout seconds (default: -1 = no limit) |

sifting | whether to use sifting within the dual simplex algorithm,
which can be useful when there are many more variables than
constraints: -1 = automatic choice (default) 0 = no 1 = yes, moderate sifting 2 = yes, aggressive sifting |

siftmethod | algorithm to use for sifting with the dual simplex method: -1 = automatic choice (default) 0 = primal simplex 1 = dual simplex 2 = barrier |

simplex | synonym for lpmethod |

solnlimit | maximum MIP solutions to find (default: 2e9) |

solnsens | whether to return suffixes for solution sensitivities, i.e., ranges of values for which the optimal basis remains optimal: 0 = no (default) 1 = yes: suffixes return on variables are .sensobjlo = smallest objective coefficient .sensobjhi = greatest objective coefficient .senslblo = smallest variable lower bound .senslbhi = greatest variable lower bound .sensublo = smallest variable upper bound .sensubhi = greatest variable upper bound suffixes for constraints are .sensrhslo = smallest right-hand side value .sensrhshi = greatest right-hand side value For problems with integer variables and quadratic constraints, solnsens = 0 is assumed quietly. |

sos | whether to honor declared suffixes .sosno and .ref describing SOS sets: 0 = no 1 = yes (default): 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 |

sos2 | whether to tell Gurobi about SOS2 constraints for nonconvex piecewise-linear terms 1 = no 2 = yes (default), using suffixes .sos and .sosref provided by AMPL |

startnodelimit | limit on how many branch-and-bound nodes to explore when
doing a partial MIP start: -2 = suppress MIP start processing -1 = use submipnodes (default) >= 0 ==> specific node limit |

submipcuts | sub-MIP cuts: overrides "cuts"; choices as for "cuts" |

submipnodes | limit on nodes explored by MIP-based heuristics, e.g., RINS. Default = 500. |

symmetry | MIP symmetry detection: -1 = automatic choice (default) 0 = none 1 = conservative 2 = agressive |

threads | maximum threads to use on MIP problems (default: 0 - maximum possible) |

timelim | limit on solve time (in seconds; default: no limit) |

timing | whether to report timing: 0 (default) = no 1 = report times on stdout 2 = report times on stderr |

tunebase | base name for results of running Gurobi's search for better parameter settings. The search is run only when tuneparbase is specified. Results are written to files with names derived from tunebase by appending ".prm" if ".prm" does not occur in tuneparbase and inserting 1, 2, ... (for the first, second, ... set of parameter settings) before the right-most ".prm". The file with "1" inserted is the best set and the solve results returned are for this set. In a subsequent "solve;", you can use paramfile=... to apply the settings in results file ... . |

tuneoutput | amount of tuning output when tunebase is specified: 0 = none 1 = summarize each new best parameter set 2 = summarize each set tried (default) 3 = summary plus detailed solver output for each trial |

tuneresults | limit on the number of tuning result files to write when tunerbase is specified. The default (-1) is to write results for all parameter sets on the efficient frontier. |

tunetimelimit | time limit (in seconds) on tuning when tunebase is specified. (default: -1 = automatic choice of time limit) |

tunetrials | number of trials for each parameter set when tunebase is specified, each with a different random seed value. (default = 2) |

ubpen | See feasrelax |

varbranch | MIP branch variable selection strategy: -1 = automatic choice (default) 0 = pseudo reduced-cost branching 1 = pseudo shadow-price branching 2 = maximum infeasibility branching 3 = strong branching |

wantsol | solution report without -AMPL: sum of 1 => write .sol file 2 => print primal variable values 4 => print dual variable values 8 => do not print solution message |

warmstart |
Whether to use incoming primal and dual variable values
(if both are available) in a simplex warm start: 0 = no 1 = yes if there is no incoming basis (default) 2 = yes, ignoring the incoming basis (if any) 3 = no, but on MIP problems, use the incoming primal values as hints, ignoring the .hintpri suffix 4 = similar to 3, but use the .hintpri suffix on variables: larger (integer) values give greater priority to the initial value of the associated variable. Note that specifying basis=0 or basis=2 causes there to be no incoming basis. This is relevant to warmstart values 1, 3, and 4. For continuous problems, warmstart values >= 2 are treated as 1. |

writeprob | name of problem file to be written (for debugging); must end in one of ".bas", ".lp", ".mps", ".prm", or ".sol"; can appear more than once (with different filenames). |

zerohalfcuts | zero-half cuts: overrides "cuts"; choices as for "cuts" |

zeroobjnodes | number of nodes for the zero objective heuristic to explore at the MIP root node when a feasible solution has not been found by any other heuristic (default: 0) |