### Table of Contents

- Usage
- Special Features
- Components
- List of SCIP Options
- gams
- gams/solvetrace
- branching
- branching/allfullstrong
- branching/cloud
- branching/distribution
- branching/fullstrong
- branching/gomory
- branching/inference
- branching/leastinf
- branching/lookahead
- branching/mostinf
- branching/multaggr
- branching/nodereopt
- branching/pscost
- branching/random
- branching/relpscost
- branching/treemodel
- branching/vanillafullstrong
- conflict
- conflict/bounddisjunction
- conflict/graph
- conflict/indicatorconflict
- conflict/linear
- conflict/logicor
- conflict/setppc
- constraints
- constraints/SOS1
- constraints/SOS2
- constraints/and
- constraints/bounddisjunction
- constraints/components
- constraints/fixedvar
- constraints/indicator
- constraints/integral
- constraints/knapsack
- constraints/linear
- constraints/linear/upgrade
- constraints/logicor
- constraints/nonlinear
- constraints/nonlinear/branching
- constraints/nonlinear/upgrade
- constraints/or
- constraints/orbisack
- constraints/orbitope
- constraints/setppc
- constraints/symresack
- constraints/varbound
- constraints/xor
- cutselection/dynamic
- cutselection/ensemble
- cutselection/hybrid
- decomposition
- display
- display/avgdualbound
- display/completed
- display/concdualbound
- display/concgap
- display/concmemused
- display/concprimalbound
- display/concsolfound
- display/conflicts
- display/conss
- display/curcols
- display/curconss
- display/curdualbound
- display/currows
- display/cutoffbound
- display/cuts
- display/depth
- display/dualbound
- display/estimate
- display/feasST
- display/gap
- display/lpavgiterations
- display/lpcond
- display/lpiterations
- display/lpobj
- display/maxdepth
- display/memtotal
- display/memused
- display/nexternbranchcands
- display/nfrac
- display/ninfeasleaves
- display/nnodes
- display/nnodesbelowinc
- display/nobjleaves
- display/nodesleft
- display/nrank1nodes
- display/nsols
- display/plungedepth
- display/poolsize
- display/primalbound
- display/primalgap
- display/pseudoobj
- display/separounds
- display/solfound
- display/sols
- display/strongbranchs
- display/time
- display/vars
- estimation
- estimation/restarts
- estimation/ssg
- estimation/treeprofile
- expr/log
- expr/pow
- expr/prod
- heuristics
- heuristics/actconsdiving
- heuristics/adaptivediving
- heuristics/alns
- heuristics/alns/crossover
- heuristics/alns/dins
- heuristics/alns/localbranching
- heuristics/alns/mutation
- heuristics/alns/proximity
- heuristics/alns/rens
- heuristics/alns/rins
- heuristics/alns/trustregion
- heuristics/alns/zeroobjective
- heuristics/bound
- heuristics/clique
- heuristics/coefdiving
- heuristics/completesol
- heuristics/conflictdiving
- heuristics/crossover
- heuristics/dins
- heuristics/distributiondiving
- heuristics/dps
- heuristics/dualval
- heuristics/farkasdiving
- heuristics/feaspump
- heuristics/fixandinfer
- heuristics/fracdiving
- heuristics/gins
- heuristics/guideddiving
- heuristics/indicator
- heuristics/indicatordiving
- heuristics/intdiving
- heuristics/intshifting
- heuristics/linesearchdiving
- heuristics/localbranching
- heuristics/locks
- heuristics/lpface
- heuristics/mpec
- heuristics/multistart
- heuristics/mutation
- heuristics/nlpdiving
- heuristics/objpscostdiving
- heuristics/octane
- heuristics/ofins
- heuristics/oneopt
- heuristics/padm
- heuristics/proximity
- heuristics/pscostdiving
- heuristics/randrounding
- heuristics/rens
- heuristics/reoptsols
- heuristics/repair
- heuristics/rins
- heuristics/rootsoldiving
- heuristics/rounding
- heuristics/scheduler
- heuristics/scheduler/crossover
- heuristics/scheduler/dins
- heuristics/scheduler/localbranching
- heuristics/scheduler/mutation
- heuristics/scheduler/proximity
- heuristics/scheduler/rens
- heuristics/scheduler/rins
- heuristics/scheduler/trustregion
- heuristics/scheduler/zeroobjective
- heuristics/shiftandpropagate
- heuristics/shifting
- heuristics/simplerounding
- heuristics/subnlp
- heuristics/trivial
- heuristics/trivialnegation
- heuristics/trustregion
- heuristics/trysol
- heuristics/twoopt
- heuristics/undercover
- heuristics/vbounds
- heuristics/veclendiving
- heuristics/zeroobj
- heuristics/zirounding
- history
- limits
- lp
- memory
- misc
- nlhdlr/bilinear
- nlhdlr/concave
- nlhdlr/convex
- nlhdlr/default
- nlhdlr/perspective
- nlhdlr/quadratic
- nlhdlr/quotient
- nlhdlr/signomial
- nlhdlr/soc
- nlp
- nlpi/ipopt
- nodeselection
- nodeselection/bfs
- nodeselection/breadthfirst
- nodeselection/dfs
- nodeselection/estimate
- nodeselection/hybridestim
- nodeselection/restartdfs
- nodeselection/uct
- numerics
- presolving
- presolving/boundshift
- presolving/convertinttobin
- presolving/domcol
- presolving/dualagg
- presolving/dualcomp
- presolving/dualinfer
- presolving/dualsparsify
- presolving/gateextraction
- presolving/implics
- presolving/inttobinary
- presolving/milp
- presolving/qpkktref
- presolving/redvub
- presolving/sparsify
- presolving/stuffing
- presolving/trivial
- presolving/tworowbnd
- propagating
- propagating/dualfix
- propagating/genvbounds
- propagating/nlobbt
- propagating/obbt
- propagating/probing
- propagating/pseudoobj
- propagating/redcost
- propagating/rootredcost
- propagating/symmetry
- propagating/symmetry/orbitopalreduction
- propagating/vbounds
- randomization
- separating
- separating/aggregation
- separating/cgmip
- separating/clique
- separating/closecuts
- separating/cmir
- separating/convexproj
- separating/disjunctive
- separating/eccuts
- separating/flowcover
- separating/gauge
- separating/gomory
- separating/gomorymi
- separating/impliedbounds
- separating/interminor
- separating/intobj
- separating/knapsackcover
- separating/lagromory
- separating/mcf
- separating/minor
- separating/mixing
- separating/oddcycle
- separating/rapidlearning
- separating/rlt
- separating/strongcg
- separating/zerohalf
- solvingphases
- table/branchrules
- table/compression
- table/concurrentsolver
- table/conflict
- table/cons_nonlinear
- table/constiming
- table/constraint
- table/cutsel
- table/estim
- table/exprhdlr
- table/heuristics
- table/lp
- table/neighborhood
- table/nlhdlr
- table/nlhdlr_bilinear
- table/nlhdlr_quadratic
- table/nlp
- table/nlpi
- table/origprob
- table/presolvedprob
- table/presolver
- table/pricer
- table/propagator
- table/relaxator
- table/root
- table/scheduler
- table/separator
- table/solution
- table/status
- table/symmetry
- table/timing
- table/tree
- timing

SCIP (**S**olving **C**onstraint **I**nteger **P**rograms) is a framework for Constraint Integer Programming oriented towards the needs of Mathematical Programming experts who want to have total control of the solution process and access detailed information down to the guts of the solver. SCIP can also be used as a pure MIP or MINLP solver or as a framework for branch-cut-and-price. Within GAMS, the MIP and MINLP solving facilities of SCIP are available.

For more detailed information, we refer to [2, 3, 73, 126, 87, 88, 74, 19, 25, 20] and the SCIP web site.

GAMS/SCIP uses CPLEX, if licensed, and otherwise SOPLEX [203] as LP solver, the COIN-OR Interior Point Optimizer IPOPT [194] as nonlinear solver, and CppAD to compute derivatives of nonlinear functions.

SCIP supports continuous, binary, integer, semi-continuous, semi-integer variables, indicator constraints, special ordered sets, and branching priorities for discrete variables.

# Usage

The following statement can be used inside your GAMS program to specify using SCIP

Option MIP = SCIP; { or QCP or NLP or MIQCP or MINLP or ... }

The above statement should appear before the Solve statement. If SCIP was specified as the default solver during GAMS installation, the above statement is not necessary.

## Specification of SCIP Options

GAMS/SCIP supports the GAMS parameters reslim, iterlim, nodlim, optca, optcr, and workspace. Further, the option threads can be used to control the number of threads used in the MILP presolver, the linear algebra routines (e.g., in IPOPT), and for solving LPs if CPLEX' barrier solver is used. Setting threads to 0 (the default) will enable the automatic choice of the number of threads in the MILP presolver and LP solver, but does not enable multithreading for linear algebra routines at the moment.

Options can be specified by a SCIP options file. A SCIP options file consists of one option or comment per line. A pound sign (`#`

) at the beginning of a line causes the entire line to be ignored. Otherwise, the line will be interpreted as an option name and value separated by an equal sign (`=`

) and any amount of white space (blanks or tabs). Further, string values have to be enclosed in quotation marks.

A small example for a scip.opt file is:

propagating/probing/maxprerounds = 0 separating/maxrounds = 0 separating/maxroundsroot = 0

It causes GAMS/SCIP to disable probing during presolve and to turn off all cut generators.

## Specification of Indicators

Indicators are a modeling tool to specify that certain equations in a model must only be satisfied if certain binary variables take a specified value. Indicators are not supported by the GAMS language, but can be passed to SCIP via a separate file, see Indicator Constraints for more details on its syntax. The name of that file is specified via the option gams/indicatorfile in a SCIP option file. Currently, indicators can only be used for linear equations.

# Special Features

## SCIP interactive shell

The interactive shell in SCIP is a powerful tool that allows the user to display various information (e.g., branching statistics, presolved model), load emphasis settings, interrupt a solve to change parameters or trigger a restart, write the model in various file formats, start SCIPs solution counter, and many more things.

When setting the option gams/interactive to a nonempty string, the GAMS/SCIP interface opens the interactive shell of SCIP after having load the GAMS problem and parameters and passes the value of the gams/interactive parameter to the SCIP interactive shell.

By default, SCIP behaves as if `gams/interactive`

has been set to `"optimize write gamssol quit"`

, that is, SCIP is requested to solve the problem, then to pass the solution back to GAMS, and to quit.

An example use of the SCIP interactive shell feature via GAMS is to add the following line to your SCIP options file:

gams/interactive = "write prob orig.lp presolve write transprob presol.mps opt write gamssol quit"

This instructs SCIP to write the original problem to the file `orig.lp`

in LP format, to presolve the instance, to write the presolved problem to the file `presolved.mps`

in MPS format, to solve the instance, to write the solution out to GAMS, and to finish.

By omitting the `quit`

command, SCIPs interactive shell remains open and awaits user input. The command `help`

prints a list of available commands. Note, that on Windows, GAMS need to be called with the option interactivesolver enabled to allow user input for the solver process.

A tutorial on using the SCIP shell is available at https://www.scipopt.org/doc/html/SHELL.php.

## Emphasis Settings

SCIP includes various emphasis settings, which are predefined values for a set of SCIP parameters. Such predefined settings are available for setting the effort that SCIP should spend for, e.g., presolving, separation, or heuristics.

The emphasis settings are not available as single parameters, but can be set via SCIPs interactive shell. E.g., writing `set heuristics emphasis`

in the shell displays the available emphasis settings for heuristics (`aggressive`

, `fast`

, `off`

) and expects the user to input which setting to use. Further, general emphasis settings are available in the `set emphasis`

menu, some of them giving predefined settings similar to the CPLEX option mipemphasis.

Via the gams/interactive option, c.f. Section SCIP interactive shell, emphasis settings can be activated via a SCIP options file. For example, adding the option

gams/interactive = "set emphasis feasibility set loadgams optimize write gamssol quit"

instructs SCIP to load the emphasis setting `feasibility`

prior to optimizing the model and passing the solution back to GAMS. Note, that setting one of the emphasis settings `feasibility`

, `hardlp`

, and `optimality`

resets all previously set parameters to their default values, which includes the ones that are set by the GAMS/SCIP interface or which were loaded from a SCIP options file. Therefore, the command `set loadgams`

has been used above to restore these parameter settings.

The following emphasis settings are available in SCIP:

shell command | purpose |
---|---|

`set emphasis easycip` | use for easy problems |

`set emphasis feasibility` | emphasize finding a feasible solution |

`set emphasis hardlp` | use for problems with a hard LP |

`set emphasis optimality` | emphasize proving optimality |

`set emphasis numerics` | increase numerical stability |

`set emphasis cpsolver` | setup a constraint programming like search |

`set heuristic emphasis aggressive` | use primal heuristics aggressively |

`set heuristic emphasis fast` | use only fast primal heuristics |

`set heuristic emphasis off` | disable all primal heuristics |

`set presolving emphasis aggressive` | do aggressive presolving |

`set presolving emphasis fast` | use only fast presolving steps |

`set presolving emphasis off` | disable presolving |

`set separating emphasis aggressive` | use cutting plane separators aggressively |

`set separating emphasis fast` | use only fast cutting plane separators |

`set separating emphasis off` | disable all cutting plane separators |

## Starting point

Using the completesol heuristic, SCIP can try to find a feasible solution based on values given by the user for all or some of the variables. The values need to be specified as variable levels in the GAMS model. The heuristic solves a copy of the problem where variables for which values have been provided are restricted to be close to that value. When an integral value is specified for a binary or integer variable, the variable is fixed to that value. See also Section 2.3.2 in [126] for a more detailed description of the heuristic.

For which variables the level values are passed from GAMS to SCIP is controlled by the parameter gams/mipstart. The parameter values have the following meaning:

- 0: do not pass any variable values to SCIP, the heuristic will not run
- 1: pass values for all binary and integer variables to SCIP and let SCIP try to find a feasible solution in its neighborhood by using the completesol heuristic
- 2 (default): pass values for all variables to SCIP and let SCIP check feasibility of the given solution, the heuristic will not run
- 3: pass values for all variables to SCIP and let SCIP try to find a feasible solution in the neighborhood by using the completesol heuristic
- 4: pass values for all binary and integer variables to SCIP which fractionality is at most the value of GAMS option tryint (thus, with default tryint=0, only for variables with integral values, the value is passed to SCIP) and let SCIP try to find a feasible solution in the neighborhood by using the completesol heuristic

Note, that the completesol heuristic will not run if there are too many variables with unknown values. This behavior can be adjusted by setting parameter heuristics/completesol/maxunknownrate.

## Decomposition Information

SCIP potentially can make use of a user-provided problem decomposition, e.g., in primal heuristics PADM or GINS. Note, that SCIP's Benders Decomposition is not available with GAMS at the moment. A GAMS user can inform SCIP about such a decomposition by using the .stage variable suffix.

In an attempt to following the same convention on interpreting the `.stage`

variable suffix as the GAMS/CPLEX link, variables which `.stage`

suffix is set to an integral value greater than 0 are assigned to a block with this number. Variables which `.stage`

suffix is set to a fractional value or a value smaller than 1 are assigned to no block.

Note, that the default value for the `.stage`

suffix is 1. Therefore, GAMS/SCIP only passes decomposition information to SCIP if at least one variable has its `.stage`

suffix set to a value different than 1. Moreover, in order to receive the `.stage`

values, `scaleOpt`

and `priorOpt`

must be left at their default of 0.

## Solution Pool

When SCIP solves a problem, it may find several solutions, whereof only the best one is available to the GAMS user via the variable level values in the GAMS model. If the option gams/dumpsolutions is specified, then all alternative solutions found by SCIP are written into GDX files and an index file with the name given by the this option is written. If the option gams/dumpsolutionsmerged is specified, then all alternative solutions found by SCIP are written into a single GDX file, which name is given by the this option.

The GAMS testlib model dumpsol shows an example use for this option.

## Solving process tracing

The option gams/solvetrace/file can be used to specify the name of a file where information about the progress of the branch-and-bound tree search in SCIP is stored. The file is created and updated during the solution process, so it may also be used to monitor the progress of SCIP while it still solves the model.

New entries are written periodically, depending on how many nodes have been processed or how much time has been elapsed since the last entry was written. Each entry contains information on the current primal and dual bound.

## Notes on solving MINLPs

SCIP includes capabilities to handle nonlinear functions that are specified via algebraic expressions. Therefore, neither external/extrinsic functions nor all GAMS mathematical functions are supported.

Nonconvex MINLPs are solved via a spatial branch-and-bound algorithm using linear relaxations. The tightness of this relaxation depends heavily on the variable bounds, thus tight bounds for the nonlinear variables are crucial for SCIP.

Convex MINLPs are much easier to solve for SCIP, provided it recognizes the convexity of the model. The convexity check implemented in SCIP may not give a conclusive answer in all cases. However, setting the option constraints/nonlinear/assumeconvex to `TRUE`

can be used to tell SCIP that it should assume all nonlinear constraints to be of convex type. This may help to improve solving times for convex MINLPs considerably in some cases. However, it can also deteriorate performance as it prevents the use of certain extended formulations.

Another feature that can be especially useful for convex MINLPs is to enable the generation of cuts in feasible solutions, since these supporting hyperplanes can be strong. At the moment, this is only enabled for purely continuous nonlinear programs (QCPs and NLPs), but can be adjusted by parameter constraints/nonlinear/linearizeheursol. In this connection, it may also be beneficial to set separating/poolfreq to 1.

# Components

In the following, we list components that are available in SCIP together with some common properties. Many of these properties can be modified with corresponding parameters.

## Branching Rules

branching rule | priority | maxdepth | maxbounddist | description |
---|---|---|---|---|

relpscost | 10000 | -1 | 100 | reliability branching on pseudo cost values |

pscost | 2000 | -1 | 100 | branching on pseudo cost values |

inference | 1000 | -1 | 100 | inference history branching |

mostinf | 100 | -1 | 100 | most infeasible branching |

leastinf | 50 | -1 | 100 | least infeasible branching |

fullstrong | 0 | -1 | 100 | full strong branching |

distribution | 0 | -1 | 100 | branching rule based on variable influence on cumulative normal distribution of row activities |

lookahead | 0 | -1 | 100 | full strong branching over multiple levels |

multaggr | 0 | -1 | 100 | fullstrong branching on fractional and multi-aggregated variables |

cloud | 0 | -1 | 100 | branching rule that considers several alternative LP optima |

allfullstrong | -1000 | -1 | 100 | all variables full strong branching |

gomory | -1000 | -1 | 100 | Gomory cut score branching |

vanillafullstrong | -2000 | -1 | 100 | vanilla full strong branching |

random | -100000 | -1 | 100 | random variable branching |

nodereopt | -9000000 | -1 | 100 | branching rule for node reoptimization |

See https://www.scipopt.org/doc/html/BRANCH.php for a detailed description of the branching rule properties.

## Conflict Handler

conflict handler | priority | description |
---|---|---|

logicor | 800000 | conflict handler creating logic or constraints |

setppc | 700000 | conflict handler creating set covering constraints |

indicatorconflict | 200000 | replace slack variables and generate logicor constraints |

linear | -1000000 | conflict handler creating linear constraints |

bounddisjunction | -3000000 | conflict handler creating bound disjunction constraints |

## Constraint Handler

constraint handler | checkprio | enfoprio | sepaprio | sepafreq | propfreq | eagerfreq | presolvetimings | description |
---|---|---|---|---|---|---|---|---|

integral | 0 | 0 | 0 | -1 | -1 | -1 | always | integrality constraint |

SOS1 | -10 | 100 | 1000 | 10 | 1 | 100 | medium | SOS1 constraint handler |

SOS2 | -10 | 100 | 10 | 0 | 1 | 100 | fast | SOS2 constraint handler |

varbound | -500000 | -500000 | 900000 | 0 | 1 | 100 | fast medium | variable bounds lhs <= x + c*y <= rhs, x non-binary, y non-continuous |

knapsack | -600000 | -600000 | 600000 | 0 | 1 | 100 | always | knapsack constraint of the form a^T x <= b, x binary and a >= 0 |

setppc | -700000 | -700000 | 700000 | 0 | 1 | 100 | always | set partitioning / packing / covering constraints |

or | -850000 | -850000 | 850000 | 0 | 1 | 100 | medium | constraint handler for or constraints: r = or(x1, ..., xn) |

and | -850100 | -850100 | 850100 | 1 | 1 | 100 | fast exhaustive | constraint handler for AND-constraints: r = and(x1, ..., xn) |

xor | -850200 | -850200 | 850200 | 0 | 1 | 100 | always | constraint handler for xor constraints: r = xor(x1, ..., xn) |

linear | -1000000 | -1000000 | 100000 | 0 | 1 | 100 | fast exhaustive | linear constraints of the form lhs <= a^T x <= rhs |

orbisack | -1005200 | -1005200 | 40100 | 5 | 5 | -1 | exhaustive | symmetry breaking constraint handler for orbisacks |

orbitope | -1005200 | -1005200 | 40100 | -1 | 1 | -1 | medium | symmetry breaking constraint handler relying on (partitioning/packing) orbitopes |

symresack | -1005200 | -1005200 | 40100 | 5 | 5 | -1 | exhaustive | symmetry breaking constraint handler relying on symresacks |

logicor | -2000000 | -2000000 | 10000 | 0 | 1 | 100 | always | logic or constraints |

bounddisjunction | -3000000 | -3000000 | 0 | -1 | 1 | 100 | fast | bound disjunction constraints |

nonlinear | -4000010 | 50 | 10 | 1 | 1 | 100 | always | handler for nonlinear constraints specified by algebraic expressions |

indicator | -6000000 | -100 | 10 | 10 | 1 | 100 | fast | indicator constraint handler |

fixedvar | -7000000 | -7000000 | 0 | -1 | -1 | -1 | always | check bounds of original variables that are not active in transformed problem |

components | -9999999 | 0 | 0 | -1 | 1 | -1 | independent components constraint handler |

See https://www.scipopt.org/doc/html/CONS.php for a detailed description of the constraint handler properties.

## Cut Selectors

cut selector | priority | description |
---|---|---|

hybrid | 8000 | weighted sum of efficacy, dircutoffdist, objparal, and intsupport |

ensemble | 7000 | weighted sum of many terms with optional filtering and penalties |

dynamic | 7000 | dynamic orthogonality for hybrid cutsel |

## Display Columns

display column | header | position | width | priority | status | description |
---|---|---|---|---|---|---|

solfound | 0 | 1 | 80000 | auto | letter that indicates the heuristic which found the solution | |

time | time | 50 | 5 | 4000 | auto | total solution time |

nnodes | node | 100 | 7 | 100000 | auto | number of processed nodes |

nodesleft | left | 200 | 7 | 90000 | auto | number of unprocessed nodes |

nrank1nodes | rank1 | 500 | 7 | 40000 | off | current number of rank1 nodes left |

nnodesbelowinc | nbInc | 550 | 6 | 40000 | off | current number of nodes with an estimate better than the current incumbent |

lpiterations | LP iter | 1000 | 7 | 30000 | auto | number of simplex iterations |

lpavgiterations | LP it/n | 1400 | 7 | 25000 | auto | average number of LP iterations since the last output line |

lpcond | LP cond | 1450 | 7 | 0 | auto | estimate on condition number of LP solution |

memused | umem | 1500 | 5 | 0 | auto | total number of bytes used in block memory |

memtotal | mem/heur | 1500 | 8 | 20000 | auto | total number of bytes in block memory or the creator name when a new incumbent solution was found |

depth | depth | 2000 | 5 | 500 | auto | depth of current node |

maxdepth | mdpt | 2100 | 5 | 5000 | auto | maximal depth of all processed nodes |

plungedepth | pdpt | 2200 | 5 | 10 | auto | current plunging depth |

nfrac | frac | 2500 | 5 | 700 | auto | number of fractional variables in the current solution |

nexternbranchcands | extbr | 2600 | 5 | 650 | auto | number of extern branching variables in the current node |

vars | vars | 3000 | 5 | 3000 | auto | number of variables in the problem |

conss | cons | 3100 | 5 | 3100 | auto | number of globally valid constraints in the problem |

curconss | ccons | 3200 | 5 | 600 | auto | number of enabled constraints in current node |

curcols | cols | 3300 | 5 | 800 | auto | number of LP columns in current node |

currows | rows | 3400 | 5 | 900 | auto | number of LP rows in current node |

cuts | cuts | 3500 | 5 | 2100 | auto | total number of cuts applied to the LPs |

separounds | sepa | 3600 | 4 | 100 | auto | number of separation rounds performed at the current node |

poolsize | pool | 3700 | 5 | 50 | auto | number of LP rows in the cut pool |

conflicts | confs | 4000 | 5 | 2000 | auto | total number of conflicts found in conflict analysis |

strongbranchs | strbr | 5000 | 5 | 1000 | auto | total number of strong branching calls |

pseudoobj | pseudoobj | 6000 | 14 | 300 | auto | current pseudo objective value |

lpobj | lpobj | 6500 | 14 | 300 | auto | current LP objective value |

curdualbound | curdualbound | 7000 | 14 | 400 | auto | dual bound of current node |

estimate | estimate | 7500 | 14 | 200 | auto | estimated value of feasible solution in current node |

avgdualbound | avgdualbound | 8000 | 14 | 40 | auto | average dual bound of all unprocessed nodes |

dualbound | dualbound | 9000 | 14 | 70000 | auto | current global dual bound |

primalbound | primalbound | 10000 | 14 | 80000 | auto | current primal bound |

cutoffbound | cutoffbound | 10100 | 14 | 10 | auto | current cutoff bound |

gap | gap | 20000 | 8 | 60000 | auto | current (relative) gap using |primal-dual|/MIN(|dual|,|primal|) |

primalgap | primgap | 21000 | 8 | 20000 | off | current (relative) gap using |primal-dual|/|primal| |

nsols | nsols | 30000 | 5 | 0 | auto | current number of solutions found |

completed | compl. | 30100 | 8 | 110000 | auto | completion of search in percent (based on tree size estimation) |

nobjleaves | objleav | 31000 | 7 | 0 | auto | current number of encountered objective limit leaves |

ninfeasleaves | infleav | 32000 | 7 | 0 | auto | number of encountered infeasible leaves |

sols | sols | 100000 | 7 | 110000 | off | number of detected feasible solutions |

feasST | feasST | 110000 | 6 | 110000 | off | number of detected non trivial feasible subtrees |

See https://www.scipopt.org/doc/html/DISP.php for a detailed description of the display column properties.

## Nonlinear Handler

nonlinear handler | enabled | detect priority | enforce priority | description |
---|---|---|---|---|

default | 1 | 0 | 0 | default handler for expressions |

convex | 1 | 50 | 50 | handler that identifies and estimates convex expressions |

concave | 1 | 40 | 40 | handler that identifies and estimates concave expressions |

bilinear | 1 | -10 | -10 | bilinear handler for expressions |

perspective | 1 | -20 | 125 | perspective handler for expressions |

quadratic | 1 | 1 | 100 | handler for quadratic expressions |

quotient | 1 | 20 | 20 | nonlinear handler for quotient expressions |

signomial | 1 | 30 | 30 | handler for signomial expressions |

soc | 1 | 100 | 100 | nonlinear handler for second-order cone structures |

## Node Selectors

node selector | standard priority | memsave priority | description |
---|---|---|---|

estimate | 200000 | 100 | best estimate search |

bfs | 100000 | 0 | best first search |

hybridestim | 50000 | 50 | hybrid best estimate / best bound search |

restartdfs | 10000 | 50000 | depth first search with periodical selection of the best node |

uct | 10 | 0 | node selector which balances exploration and exploitation |

dfs | 0 | 100000 | depth first search |

breadthfirst | -10000 | -1000000 | breadth first search |

See https://www.scipopt.org/doc/html/NODESEL.php for a detailed description of the node selector properties.

## Presolvers

presolver | priority | timing | maxrounds | description |
---|---|---|---|---|

milp | 9999999 | medium | -1 | MILP specific presolving methods |

trivial | 9000000 | fast | -1 | round fractional bounds on integers, fix variables with equal bounds |

boundshift | 7900000 | fast | 0 | converts variables with domain [a,b] to variables with domain [0,b-a] |

inttobinary | 7000000 | fast | -1 | converts integer variables with domain [a,a+1] to binaries |

convertinttobin | 6000000 | fast | 0 | converts integer variables to binaries |

gateextraction | 1000000 | exhaustive | -1 | presolver extracting gate(and)-constraints |

qpkktref | -1 | medium | 0 | adds KKT conditions to (mixed-binary) quadratic programs |

dualcomp | -50 | exhaustive | -1 | compensate single up-/downlocks by singleton continuous variables |

stuffing | -100 | exhaustive | 0 | fix redundant singleton continuous variables |

domcol | -1000 | exhaustive | -1 | dominated column presolver |

tworowbnd | -2000 | exhaustive | 0 | do bound tigthening by using two rows |

dualinfer | -3000 | exhaustive | 0 | exploit dual information for fixings and side changes |

implics | -10000 | medium | -1 | implication graph aggregator |

dualagg | -12000 | exhaustive | 0 | aggregate variables by dual arguments |

sparsify | -24000 | exhaustive | -1 | eliminate non-zero coefficients |

dualsparsify | -240000 | exhaustive | -1 | eliminate non-zero coefficients |

redvub | -9000000 | exhaustive | 0 | detect redundant variable bound constraints |

See https://www.scipopt.org/doc/html/PRESOL.php for a detailed description of the presolver properties.

## Primal Heuristics

primal heuristic | type | priority | freq | freqoffset | description |
---|---|---|---|---|---|

actconsdiving | d | -1003700 | -1 | 5 | LP diving heuristic that chooses fixings w.r.t. the active constraints |

adaptivediving | d | -70000 | 5 | 3 | diving heuristic that selects adaptively between the existing, public divesets |

bound | p | -1107000 | -1 | 0 | heuristic which fixes all integer variables to a bound and solves the remaining LP |

clique | p | 5000 | 0 | 0 | LNS heuristic using a clique partition to restrict the search neighborhood |

coefdiving | d | -1001000 | -1 | 1 | LP diving heuristic that chooses fixings w.r.t. the matrix coefficients |

completesol | L | 0 | 0 | 0 | primal heuristic trying to complete given partial solutions |

conflictdiving | d | -1000100 | 10 | 0 | LP diving heuristic that chooses fixings w.r.t. conflict locks |

crossover | L | -1104000 | 30 | 0 | LNS heuristic that fixes all variables that are identic in a couple of solutions |

dins | L | -1105000 | -1 | 0 | distance induced neighborhood search by Ghosh |

distributiondiving | d | -1003300 | 10 | 3 | Diving heuristic that chooses fixings w.r.t. changes in the solution density |

dps | L | 75000 | -1 | 0 | primal heuristic for decomposable MIPs |

dualval | L | -10 | -1 | 0 | primal heuristic using dual values |

farkasdiving | d | -900000 | 10 | 0 | LP diving heuristic that tries to construct a Farkas-proof |

feaspump | o | -1000000 | 20 | 0 | objective feasibility pump 2.0 |

fixandinfer | p | -500000 | -1 | 0 | iteratively fixes variables and propagates inferences |

fracdiving | d | -1003000 | 10 | 3 | LP diving heuristic that chooses fixings w.r.t. the fractionalities |

gins | L | -1103000 | 20 | 8 | gins works on k-neighborhood in a variable-constraint graph |

guideddiving | d | -1007000 | 10 | 7 | LP diving heuristic that chooses fixings in direction of incumbent solutions |

zeroobj | L | 100 | -1 | 0 | heuristic trying to solve the problem without objective |

indicator | L | -20200 | 1 | 0 | indicator heuristic to create feasible solutions from values for indicator variables |

indicatordiving | I | -150000 | 0 | 0 | LP diving heuristic that fixes indicator variables controlling semicontinuous variables |

intdiving | d | -1003500 | -1 | 9 | LP diving heuristic that fixes binary variables with large LP value to one |

intshifting | r | -10000 | 10 | 0 | LP rounding heuristic with infeasibility recovering and final LP solving |

linesearchdiving | d | -1006000 | 10 | 6 | LP diving heuristic that chooses fixings following the line from root solution to current solution |

localbranching | L | -1102000 | -1 | 0 | local branching heuristic by Fischetti and Lodi |

locks | p | 3000 | 0 | 0 | heuristic that fixes variables based on their rounding locks |

lpface | L | -1104010 | 15 | 0 | LNS heuristic that searches the optimal LP face inside a sub-MIP |

alns | L | -1100500 | 20 | 0 | Large neighborhood search heuristic that orchestrates the popular neighborhoods Local Branching, RINS, RENS, DINS etc. |

nlpdiving | d | -1003010 | 10 | 3 | NLP diving heuristic that chooses fixings w.r.t. the fractionalities |

mutation | L | -1103010 | -1 | 8 | mutation heuristic randomly fixing variables |

multistart | L | -2100000 | 0 | 0 | multistart heuristic for convex and nonconvex MINLPs |

mpec | d | -2050000 | 50 | 0 | regularization heuristic for convex and nonconvex MINLPs |

objpscostdiving | o | -1004000 | 20 | 4 | LP diving heuristic that changes variable's objective values instead of bounds, using pseudo costs as guide |

octane | r | -1008000 | -1 | 0 | octane primal heuristic for pure {0;1}-problems based on Balas et al. |

ofins | L | 60000 | 0 | 0 | primal heuristic for reoptimization, objective function induced neighborhood search |

oneopt | i | -20000 | 1 | 0 | 1-opt heuristic which tries to improve setting of single integer variables |

padm | L | 70000 | 0 | 0 | penalty alternating direction method primal heuristic |

proximity | L | -2000000 | -1 | 0 | heuristic trying to improve the incumbent by an auxiliary proximity objective function |

pscostdiving | d | -1002000 | 10 | 2 | LP diving heuristic that chooses fixings w.r.t. the pseudo cost values |

randrounding | r | -200 | 20 | 0 | fast LP rounding heuristic |

rens | L | -1100000 | 0 | 0 | LNS exploring fractional neighborhood of relaxation's optimum |

reoptsols | p | 40000 | 0 | 0 | primal heuristic updating solutions found in a previous optimization round |

repair | L | -20 | -1 | 0 | tries to repair a primal infeasible solution |

rins | L | -1101000 | 25 | 0 | relaxation induced neighborhood search by Danna, Rothberg, and Le Pape |

rootsoldiving | o | -1005000 | 20 | 5 | LP diving heuristic that changes variable's objective values using root LP solution as guide |

rounding | r | -1000 | 1 | 0 | LP rounding heuristic with infeasibility recovering |

scheduler | L | -30000 | -1 | 0 | Adaptive heuristic to schedule LNS and diving heuristics |

shiftandpropagate | p | 1000 | 0 | 0 | Pre-root heuristic to expand an auxiliary branch-and-bound tree and apply propagation techniques |

shifting | r | -5000 | 10 | 0 | LP rounding heuristic with infeasibility recovering also using continuous variables |

simplerounding | r | -30 | 1 | 0 | simple and fast LP rounding heuristic |

subnlp | L | -2000010 | 1 | 0 | primal heuristic that performs a local search in an NLP after fixing integer variables and presolving |

trivial | t | 10000 | 0 | 0 | start heuristic which tries some trivial solutions |

trivialnegation | p | 39990 | 0 | 0 | negate solution entries if an objective coefficient changes the sign, enters or leaves the objective. |

trustregion | L | -1102010 | -1 | 0 | LNS heuristic for Benders' decomposition based on trust region methods |

trysol | t | -3000010 | 1 | 0 | try solution heuristic |

twoopt | i | -20100 | -1 | 0 | primal heuristic to improve incumbent solution by flipping pairs of variables |

undercover | L | -1110000 | 0 | 0 | solves a sub-CIP determined by a set covering approach |

vbounds | p | 2500 | 0 | 0 | LNS heuristic uses the variable lower and upper bounds to determine the search neighborhood |

veclendiving | d | -1003100 | 10 | 4 | LP diving heuristic that rounds variables with long column vectors |

zirounding | r | -500 | 1 | 0 | LP rounding heuristic as suggested by C. Wallace taking row slacks and bounds into account |

See https://www.scipopt.org/doc/html/HEUR.php for a detailed description of the primal heuristic properties.

## Propagators

propagator | propprio | freq | presolveprio | presolvetiming | description |
---|---|---|---|---|---|

rootredcost | 10000000 | 1 | 0 | always | reduced cost strengthening using root node reduced costs and the cutoff bound |

dualfix | 8000000 | 0 | 8000000 | fast | roundable variables dual fixing |

genvbounds | 3000000 | 1 | -2000000 | fast | generalized variable bounds propagator |

vbounds | 3000000 | 1 | -90000 | medium exhaustive | propagates variable upper and lower bounds |

pseudoobj | 3000000 | 1 | 6000000 | fast | pseudo objective function propagator |

redcost | 1000000 | 1 | 0 | always | reduced cost strengthening propagator |

probing | -100000d | -1 | -100000 | exhaustive | probing propagator on binary variables |

symmetry | -1000000 | 1 | -10000000 | exhaustive | propagator for handling symmetry |

obbt | -1000000d | 0 | 0 | always | optimization-based bound tightening propagator |

nlobbt | -1100000d | -1 | 0 | always | propagator template |

See https://www.scipopt.org/doc/html/PROP.php for a detailed description of the propagator properties.

## Separators

separator | priority | freq | bounddist | description |
---|---|---|---|---|

closecuts | 1000000 | -1 | 1 | closecuts meta separator |

disjunctive | 10d | 0 | 0 | disjunctive cut separator |

rlt | 10 | 0 | 1 | reformulation-linearization-technique separator |

minor | 0 | 10 | 1 | separator to ensure that 2x2 principal minors of X - xx' are positive semi-definite |

gauge | 0 | -1 | 1 | gauge separator |

convexproj | 0d | -1 | 1 | separate at projection of point onto convex region |

interminor | 0 | -1 | 1 | intersection cuts separator to ensure that 2x2 minors of X (= xx') have determinant 0 |

mixing | -50 | 10 | 1 | mixing inequality separator |

impliedbounds | -50 | 10 | 1 | implied bounds separator |

intobj | -100 | -1 | 0 | integer objective value separator |

gomory | -1000 | 10 | 1 | separator for Gomory mixed-integer and strong CG cuts from LP tableau rows |

cgmip | -1000 | -1 | 0 | Chvatal-Gomory cuts via MIPs separator |

aggregation | -3000 | 10 | 1 | aggregation heuristic for complemented mixed integer rounding cuts and flowcover cuts |

clique | -5000 | 0 | 0 | clique separator of stable set relaxation |

zerohalf | -6000 | 10 | 1 | {0,1/2}-cuts separator |

lagromory | -8000 | -1 | 1 | separator for Lagromory cuts for MIP relaxations |

mcf | -10000 | 0 | 0 | multi-commodity-flow network cut separator |

eccuts | -13000 | -1 | 1 | separator for edge-concave functions |

oddcycle | -15000 | -1 | 1 | odd cycle separator |

flowcover | -100000 | 10 | 0 | separator for flowcover cuts |

strongcg | -100000 | 10 | 0 | separator for strong CG cuts |

gomorymi | -100000 | 10 | 0 | separator for Gomory mixed-integer cuts |

cmir | -100000 | 10 | 0 | separator for cmir cuts |

knapsackcover | -100000 | 10 | 0 | separator for knapsack cover cuts |

rapidlearning | -1200000 | 5 | 1 | rapid learning heuristic and separator |

See https://www.scipopt.org/doc/html/SEPA.php for a detailed description of the separator properties.

# List of SCIP Options

SCIP supports a large set of options. In the following, we give a detailed list of all SCIP options.

## gams

Option | Description | Default |
---|---|---|

gams/dumpsolutions | name of solutions index gdx file for writing all alternate solutions Range: string | |

gams/dumpsolutionsmerged | name of gdx file for writing all alternate solutions into a single file Range: string | |

gams/indicatorfile | name of GAMS options file that contains definitions on indicators Range: string | |

gams/infbound | value to use for variable bounds that are missing or exceed numerics/infinity Range: [0, ∞] | ∞ |

gams/interactive | command to be issued to the SCIP shell instead of issuing a solve command Range: string | |

gams/mipstart | how to handle initial variable levels, see also section Starting point Range: {0, ..., 4} | 2 |

## gams/solvetrace

## branching

## branching/allfullstrong

## branching/cloud

## branching/distribution

## branching/fullstrong

## branching/gomory

## branching/inference

## branching/leastinf

## branching/lookahead

## branching/mostinf

## branching/multaggr

## branching/nodereopt

## branching/pscost

## branching/random

## branching/relpscost

## branching/treemodel

## branching/vanillafullstrong

## conflict

## conflict/bounddisjunction

## conflict/graph

Option | Description | Default |
---|---|---|

Options for expert users | ||

conflict/graph/depthscorefac | score factor for depth level in bound relaxation heuristic Range: real | 1 |

## conflict/indicatorconflict

Option | Description | Default |
---|---|---|

Options for expert users | ||

conflict/indicatorconflict/priority | priority of conflict handler <indicatorconflict> Range: {-2147483648, ..., ∞} | 200000 |

## conflict/linear

Option | Description | Default |
---|---|---|

Options for expert users | ||

conflict/linear/priority | priority of conflict handler <linear> Range: {-2147483648, ..., ∞} | -1000000 |

## conflict/logicor

Option | Description | Default |
---|---|---|

Options for expert users | ||

conflict/logicor/priority | priority of conflict handler <logicor> Range: {-2147483648, ..., ∞} | 800000 |

## conflict/setppc

Option | Description | Default |
---|---|---|

Options for expert users | ||

conflict/setppc/priority | priority of conflict handler <setppc> Range: {-2147483648, ..., ∞} | 700000 |

## constraints

## constraints/SOS1

## constraints/SOS2

## constraints/and

## constraints/bounddisjunction

## constraints/components

## constraints/fixedvar

## constraints/indicator

## constraints/integral

## constraints/knapsack

## constraints/linear

## constraints/linear/upgrade

## constraints/logicor

## constraints/nonlinear

## constraints/nonlinear/branching

## constraints/nonlinear/upgrade

## constraints/or

## constraints/orbisack

## constraints/orbitope

## constraints/setppc

## constraints/symresack

## constraints/varbound

## constraints/xor

## cutselection/dynamic

## cutselection/ensemble

## cutselection/hybrid

## decomposition

## display

## display/avgdualbound

Option | Description | Default |
---|---|---|

display/avgdualbound/active | display activation status of display column <avgdualbound> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/completed

Option | Description | Default |
---|---|---|

display/completed/active | display activation status of display column <completed> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/concdualbound

Option | Description | Default |
---|---|---|

display/concdualbound/active | display activation status of display column <concdualbound> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/concgap

Option | Description | Default |
---|---|---|

display/concgap/active | display activation status of display column <concgap> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/concmemused

Option | Description | Default |
---|---|---|

display/concmemused/active | display activation status of display column <concmemused> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/concprimalbound

Option | Description | Default |
---|---|---|

display/concprimalbound/active | display activation status of display column <concprimalbound> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/concsolfound

Option | Description | Default |
---|---|---|

display/concsolfound/active | display activation status of display column <concsolfound> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/conflicts

Option | Description | Default |
---|---|---|

display/conflicts/active | display activation status of display column <conflicts> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/conss

Option | Description | Default |
---|---|---|

display/conss/active | display activation status of display column <conss> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/curcols

Option | Description | Default |
---|---|---|

display/curcols/active | display activation status of display column <curcols> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/curconss

Option | Description | Default |
---|---|---|

display/curconss/active | display activation status of display column <curconss> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/curdualbound

Option | Description | Default |
---|---|---|

display/curdualbound/active | display activation status of display column <curdualbound> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/currows

Option | Description | Default |
---|---|---|

display/currows/active | display activation status of display column <currows> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/cutoffbound

Option | Description | Default |
---|---|---|

display/cutoffbound/active | display activation status of display column <cutoffbound> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/cuts

Option | Description | Default |
---|---|---|

display/cuts/active | display activation status of display column <cuts> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/depth

Option | Description | Default |
---|---|---|

display/depth/active | display activation status of display column <depth> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/dualbound

Option | Description | Default |
---|---|---|

display/dualbound/active | display activation status of display column <dualbound> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/estimate

Option | Description | Default |
---|---|---|

display/estimate/active | display activation status of display column <estimate> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/feasST

Option | Description | Default |
---|---|---|

display/feasST/active | display activation status of display column <feasST> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 0 |

## display/gap

Option | Description | Default |
---|---|---|

display/gap/active | display activation status of display column <gap> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/lpavgiterations

Option | Description | Default |
---|---|---|

display/lpavgiterations/active | display activation status of display column <lpavgiterations> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 (0 for Windows without IDE) |

## display/lpcond

Option | Description | Default |
---|---|---|

display/lpcond/active | display activation status of display column <lpcond> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/lpiterations

Option | Description | Default |
---|---|---|

display/lpiterations/active | display activation status of display column <lpiterations> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/lpobj

Option | Description | Default |
---|---|---|

display/lpobj/active | display activation status of display column <lpobj> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/maxdepth

Option | Description | Default |
---|---|---|

display/maxdepth/active | display activation status of display column <maxdepth> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 (0 for Windows without IDE) |

## display/memtotal

Option | Description | Default |
---|---|---|

display/memtotal/active | display activation status of display column <memtotal> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/memused

Option | Description | Default |
---|---|---|

display/memused/active | display activation status of display column <memused> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/nexternbranchcands

Option | Description | Default |
---|---|---|

display/nexternbranchcands/active | display activation status of display column <nexternbranchcands> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/nfrac

Option | Description | Default |
---|---|---|

display/nfrac/active | display activation status of display column <nfrac> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/ninfeasleaves

Option | Description | Default |
---|---|---|

display/ninfeasleaves/active | display activation status of display column <ninfeasleaves> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/nnodes

Option | Description | Default |
---|---|---|

display/nnodes/active | display activation status of display column <nnodes> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/nnodesbelowinc

Option | Description | Default |
---|---|---|

display/nnodesbelowinc/active | display activation status of display column <nnodesbelowinc> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 0 |

## display/nobjleaves

Option | Description | Default |
---|---|---|

display/nobjleaves/active | display activation status of display column <nobjleaves> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/nodesleft

Option | Description | Default |
---|---|---|

display/nodesleft/active | display activation status of display column <nodesleft> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/nrank1nodes

Option | Description | Default |
---|---|---|

display/nrank1nodes/active | display activation status of display column <nrank1nodes> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 0 |

## display/nsols

Option | Description | Default |
---|---|---|

display/nsols/active | display activation status of display column <nsols> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/plungedepth

Option | Description | Default |
---|---|---|

display/plungedepth/active | display activation status of display column <plungedepth> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/poolsize

Option | Description | Default |
---|---|---|

display/poolsize/active | display activation status of display column <poolsize> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/primalbound

Option | Description | Default |
---|---|---|

display/primalbound/active | display activation status of display column <primalbound> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/primalgap

Option | Description | Default |
---|---|---|

display/primalgap/active | display activation status of display column <primalgap> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 0 |

## display/pseudoobj

Option | Description | Default |
---|---|---|

display/pseudoobj/active | display activation status of display column <pseudoobj> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/separounds

Option | Description | Default |
---|---|---|

display/separounds/active | display activation status of display column <separounds> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/solfound

Option | Description | Default |
---|---|---|

display/solfound/active | display activation status of display column <solfound> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/sols

Option | Description | Default |
---|---|---|

display/sols/active | display activation status of display column <sols> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 0 |

## display/strongbranchs

Option | Description | Default |
---|---|---|

display/strongbranchs/active | display activation status of display column <strongbranchs> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## display/time

Option | Description | Default |
---|---|---|

display/time/active | display activation status of display column <time> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 (2 for Windows without IDE) |

## display/vars

Option | Description | Default |
---|---|---|

display/vars/active | display activation status of display column <vars> (0: off, 1: auto, 2:on) Range: {0, ..., 2} | 1 |

## estimation

## estimation/restarts

## estimation/ssg

## estimation/treeprofile

## expr/log

Option | Description | Default |
---|---|---|

expr/log/minzerodistance | minimal distance from zero to enforce for child in bound tightening Range: [0, 1] | 1e-09 |

## expr/pow

## expr/prod

Option | Description | Default |
---|---|---|

expr/prod/expandalways | whether to expand products of a sum and several factors in simplify Range: boolean | 0 |

## heuristics

Option | Description | Default |
---|---|---|

Options for expert users | ||

heuristics/useuctsubscip | should setting of common subscip parameters include the activation of the UCT node selector? Range: boolean | 0 |

## heuristics/actconsdiving

## heuristics/adaptivediving

## heuristics/alns

## heuristics/alns/crossover

## heuristics/alns/dins

## heuristics/alns/localbranching

## heuristics/alns/mutation

## heuristics/alns/proximity

## heuristics/alns/rens

## heuristics/alns/rins

## heuristics/alns/trustregion

## heuristics/alns/zeroobjective

## heuristics/bound

## heuristics/clique

## heuristics/coefdiving

## heuristics/completesol

## heuristics/conflictdiving

## heuristics/crossover

## heuristics/dins

## heuristics/distributiondiving

## heuristics/dps

## heuristics/dualval

## heuristics/farkasdiving

## heuristics/feaspump

## heuristics/fixandinfer

## heuristics/fracdiving

## heuristics/gins

## heuristics/guideddiving

## heuristics/indicator

## heuristics/indicatordiving

## heuristics/intdiving

## heuristics/intshifting

## heuristics/linesearchdiving

## heuristics/localbranching

## heuristics/locks

## heuristics/lpface

## heuristics/mpec

## heuristics/multistart

## heuristics/mutation

## heuristics/nlpdiving

## heuristics/objpscostdiving

## heuristics/octane

## heuristics/ofins

## heuristics/oneopt

## heuristics/padm

## heuristics/proximity

## heuristics/pscostdiving

## heuristics/randrounding

## heuristics/rens

## heuristics/reoptsols

## heuristics/repair

## heuristics/rins

## heuristics/rootsoldiving

## heuristics/rounding

## heuristics/scheduler

## heuristics/scheduler/crossover

## heuristics/scheduler/dins

## heuristics/scheduler/localbranching

## heuristics/scheduler/mutation

## heuristics/scheduler/proximity

## heuristics/scheduler/rens

## heuristics/scheduler/rins

## heuristics/scheduler/trustregion

## heuristics/scheduler/zeroobjective

## heuristics/shiftandpropagate

## heuristics/shifting

## heuristics/simplerounding

## heuristics/subnlp

## heuristics/trivial

## heuristics/trivialnegation

## heuristics/trustregion

## heuristics/trysol

## heuristics/twoopt

## heuristics/undercover

## heuristics/vbounds

## heuristics/veclendiving

## heuristics/zeroobj

## heuristics/zirounding

## history

## limits

Option | Description | Default |
---|---|---|

limits/absgap | solving stops, if the absolute gap = |primalbound - dualbound| is below the given value Range: [0, ∞] | GAMS optca |

limits/autorestartnodes | if solve exceeds this number of nodes for the first time, an automatic restart is triggered (-1: no automatic restart) Range: {-1, ..., ∞} | -1 |

limits/bestsol | solving stops, if the given number of solution improvements were found (-1: no limit) Range: {-1, ..., ∞} | -1 |

limits/dual | solving stops, if dual bound is at least as good as given value Range: real | ∞ |

limits/gap | solving stops, if the relative gap = |primal - dual|/MIN(|dual|,|primal|) is below the given value, the gap is 'Infinity', if primal and dual bound have opposite signs Range: [0, ∞] | GAMS optcr |

limits/maxorigsol | maximal number of solutions candidates to store in the solution storage of the original problem Range: {0, ..., ∞} | 10 |

limits/maxsol | maximal number of solutions to store in the solution storage Range: {1, ..., ∞} | 100 |

limits/memory | maximal memory usage in MB; reported memory usage is lower than real memory usage! Range: [0, 8.79609e+12] | GAMS workspace |

limits/nodes | maximal number of nodes to process (-1: no limit) Range: {-1, ..., ∞} | GAMS nodlim, if > 0, otherwise -1 |

limits/primal | solving stops, if primal bound is at least as good as given value (alias objectivestop) Range: real | ∞ |

limits/restarts | solving stops, if the given number of restarts was triggered (-1: no limit) Range: {-1, ..., ∞} | -1 |

limits/softtime | soft time limit which should be applied after first solution was found (-1.0: disabled) Range: [-1, ∞] | -1 |

limits/solutions | solving stops, if the given number of solutions were found; this limit is first checked in presolving (-1: no limit) Range: {-1, ..., ∞} | -1 |

limits/stallnodes | solving stops, if the given number of nodes was processed since the last improvement of the primal solution value (-1: no limit) Range: {-1, ..., ∞} | -1 |

limits/time | maximal time in seconds to run Range: [0, ∞] | GAMS reslim |

limits/totalnodes | maximal number of total nodes (incl. restarts) to process (-1: no limit) Range: {-1, ..., ∞} | -1 |

## lp

Option | Description | Default |
---|---|---|

lp/alwaysgetduals | should the Farkas duals always be collected when an LP is found to be infeasible? Range: boolean | 0 |

lp/initalgorithm | LP algorithm for solving initial LP relaxations (automatic 's'implex, 'p'rimal simplex, 'd'ual simplex, 'b'arrier, barrier with 'c'rossover) Range: s, p, d, b, c | s |

lp/pricing | LP pricing strategy ('l'pi default, 'a'uto, 'f'ull pricing, 'p'artial, 's'teepest edge pricing, 'q'uickstart steepest edge pricing, 'd'evex pricing) Range: l, a, f, p, s, q, d | l |

lp/resolvealgorithm | LP algorithm for resolving LP relaxations if a starting basis exists (automatic 's'implex, 'p'rimal simplex, 'd'ual simplex, 'b'arrier, barrier with 'c'rossover) Range: s, p, d, b, c | s |

lp/solvedepth | maximal depth for solving LP at the nodes (-1: no depth limit) Range: {-1, ..., 1073741822} | -1 |

lp/solvefreq | frequency for solving LP at the nodes (-1: never; 0: only root LP) Range: {-1, ..., 1073741822} | 1 |

lp/solver | LP solver to use (clp, cplex, highs, soplex) Range: string | cplex, if licensed, otherwise soplex |

Options for expert users | ||

lp/checkdualfeas | should LP solutions be checked for dual feasibility, resolving LP when numerical troubles occur? Range: boolean | 1 |

lp/checkfarkas | should infeasibility proofs from the LP be checked? Range: boolean | 1 |

lp/checkprimfeas | should LP solutions be checked for primal feasibility, resolving LP when numerical troubles occur? Range: boolean | 1 |

lp/checkstability | should LP solver's return status be checked for stability? Range: boolean | 1 |

lp/cleanupcols | should new non-basic columns be removed after LP solving? Range: boolean | 0 |

lp/cleanupcolsroot | should new non-basic columns be removed after root LP solving? Range: boolean | 0 |

lp/cleanuprows | should new basic rows be removed after LP solving? Range: boolean | 1 |

lp/cleanuprowsroot | should new basic rows be removed after root LP solving? Range: boolean | 1 |

lp/clearinitialprobinglp | should lp state be cleared at the end of probing mode when lp was initially unsolved, e.g., when called right after presolving? Range: boolean | 1 |

lp/colagelimit | maximum age a dynamic column can reach before it is deleted from the LP (-1: don't delete columns due to aging) Range: {-1, ..., ∞} | 10 |

lp/conditionlimit | maximum condition number of LP basis counted as stable (-1.0: no limit) Range: [-1, ∞] | -1 |

lp/disablecutoff | disable the cutoff bound in the LP solver? (0: enabled, 1: disabled, 2: auto) Range: {0, ..., 2} | 2 |

lp/fastmip | which FASTMIP setting of LP solver should be used? 0: off, 1: low Range: {0, ..., 1} | 1 |

lp/freesolvalbuffers | should the buffers for storing LP solution values during diving be freed at end of diving? Range: boolean | 0 |

lp/iterlim | iteration limit for each single LP solve (-1: no limit) Range: {-1, ..., ∞} | -1 |

lp/lexdualalgo | should the lexicographic dual algorithm be used? Range: boolean | 0 |

lp/lexdualbasic | choose fractional basic variables in lexicographic dual algorithm? Range: boolean | 0 |

lp/lexdualmaxrounds | maximum number of rounds in the lexicographic dual algorithm (-1: unbounded) Range: {-1, ..., ∞} | 2 |

lp/lexdualrootonly | should the lexicographic dual algorithm be applied only at the root node Range: boolean | 1 |

lp/lexdualstalling | turn on the lex dual algorithm only when stalling? Range: boolean | 1 |

lp/minmarkowitz | minimal Markowitz threshold to control sparsity/stability in LU factorization Range: [0.0001, 0.9999] | 0.01 |

lp/presolving | should presolving of LP solver be used? Range: boolean | 1 |

lp/refactorinterval | LP refactorization interval (0: auto) Range: {0, ..., ∞} | 0 |

lp/resolveiterfac | factor of average LP iterations that is used as LP iteration limit for LP resolve (-1: unlimited) Range: [-1, ∞] | -1 |

lp/resolveitermin | minimum number of iterations that are allowed for LP resolve Range: {1, ..., ∞} | 1000 |

lp/resolverestore | should the LP be resolved to restore the state at start of diving (if FALSE we buffer the solution values)? Range: boolean | 0 |

lp/rootiterlim | iteration limit for initial root LP solve (-1: no limit) Range: {-1, ..., ∞} | -1 |

lp/rowagelimit | maximum age a dynamic row can reach before it is deleted from the LP (-1: don't delete rows due to aging) Range: {-1, ..., ∞} | 10 |

lp/rowrepswitch | simplex algorithm shall use row representation of the basis if number of rows divided by number of columns exceeds this value (-1.0 to disable row representation) Range: [-1, ∞] | 1.2 |

lp/scaling | LP scaling (0: none, 1: normal, 2: aggressive) Range: {0, ..., 2} | 1 |

lp/solutionpolishing | LP solution polishing method (0: disabled, 1: only root, 2: always, 3: auto) Range: {0, ..., 3} | 3 |

lp/threads | number of threads used for solving the LP (0: automatic) Range: {0, ..., 64} | GAMS threads |

## memory

## misc

## nlhdlr/bilinear

## nlhdlr/concave

## nlhdlr/convex

## nlhdlr/default

Option | Description | Default |
---|---|---|

nlhdlr/default/enabled | should this nonlinear handler be used Range: boolean | 1 |

## nlhdlr/perspective

## nlhdlr/quadratic

## nlhdlr/quotient

Option | Description | Default |
---|---|---|

nlhdlr/quotient/enabled | should this nonlinear handler be used Range: boolean | 1 |

## nlhdlr/signomial

## nlhdlr/soc

## nlp

Option | Description | Default |
---|---|---|

nlp/disable | should the NLP relaxation be always disabled (also for NLPs/MINLPs)? Range: boolean | 0 |

## nlpi/ipopt

## nodeselection

## nodeselection/bfs

## nodeselection/breadthfirst

## nodeselection/dfs

## nodeselection/estimate

## nodeselection/hybridestim

## nodeselection/restartdfs

## nodeselection/uct

## numerics

## presolving

## presolving/boundshift

## presolving/convertinttobin

## presolving/domcol

## presolving/dualagg

## presolving/dualcomp

## presolving/dualinfer

## presolving/dualsparsify

## presolving/gateextraction

## presolving/implics

## presolving/inttobinary

## presolving/milp

Option | Description | Default |
---|---|---|

presolving/milp/hugebound | absolute bound value that is considered too huge for activitity based calculations Range: [0, ∞] | 1e+08 |

presolving/milp/markowitztolerance | the markowitz tolerance used for substitutions Range: [0, 1] | 0.01 |

presolving/milp/maxbadgesizepar | maximal badge size in Probing in PaPILO if PaPILO is executed in parallel mode Range: {-1, ..., ∞} | -1 |

presolving/milp/maxbadgesizeseq | maximal badge size in Probing in PaPILO if PaPILO is executed in sequential mode Range: {-1, ..., ∞} | 15000 |

presolving/milp/maxfillinpersubstitution | maximal possible fillin for substitutions to be considered Range: {-2147483648, ..., ∞} | 3 |

presolving/milp/maxrounds | maximal number of presolving rounds the presolver participates in (-1: no limit) Range: {-1, ..., ∞} | -1 |

presolving/milp/modifyconsfac | modify SCIP constraints when the number of nonzeros or rows is at most this factor times the number of nonzeros or rows before presolving Range: [0, 1] | 0.8 |

presolving/milp/randomseed | the random seed used for randomization of tie breaking Range: {-2147483648, ..., ∞} | 0 |

presolving/milp/threads | maximum number of threads presolving may use (0: automatic) Range: {0, ..., ∞} | GAMS threads |

presolving/milp/verbosity | verbosity level of PaPILO (0: quiet, 1: errors, 2: warnings, 3: normal, 4: detailed) Range: {0, ..., 4} | 0 |

Options for expert users | ||

presolving/milp/enabledomcol | should the dominated column presolver be enabled within the presolve library? Range: boolean | 1 |

presolving/milp/enabledualinfer | should the dualinfer presolver be enabled within the presolve library? Range: boolean | 1 |

presolving/milp/enablemultiaggr | should the multi-aggregation presolver be enabled within the presolve library? Range: boolean | 1 |

presolving/milp/enableparallelrows | should the parallel rows presolver be enabled within the presolve library? Range: boolean | 1 |

presolving/milp/enableprobing | should the probing presolver be enabled within the presolve library? Range: boolean | 1 |

presolving/milp/enablesparsify | should the sparsify presolver be enabled within the presolve library? Range: boolean | 0 |

presolving/milp/internalmaxrounds | internal maxrounds for each milp presolving (-1: no limit, 0: model cleanup) Range: {-1, ..., ∞} | -1 |

presolving/milp/maxshiftperrow | maximal amount of nonzeros allowed to be shifted to make space for substitutions Range: {0, ..., ∞} | 10 |

presolving/milp/priority | priority of presolver <milp> Range: {-536870912, ..., 536870911} | 9999999 |

presolving/milp/probfilename | filename to store the problem before MILP presolving starts (only enforced constraints) Range: string | - |

presolving/milp/timing | timing mask of presolver <milp> (4:FAST, 8:MEDIUM, 16:EXHAUSTIVE, 32:FINAL) Range: {4, ..., 60} | 8 |