### Table of Contents

- Usage
- Special Features
- Components
- List of SCIP Options
- gams
- gams/solvetrace
- branching
- branching/allfullstrong
- branching/cloud
- branching/distribution
- branching/fullstrong
- branching/inference
- branching/leastinf
- branching/mostinf
- branching/multaggr
- branching/nodereopt
- branching/pscost
- branching/random
- branching/relpscost
- conflict
- conflict/bounddisjunction
- conflict/graph
- conflict/indicatorconflict
- conflict/linear
- conflict/logicor
- conflict/setppc
- constraints
- constraints/SOS1
- constraints/SOS2
- constraints/abspower
- constraints/and
- constraints/bivariate
- constraints/bounddisjunction
- constraints/components
- constraints/indicator
- constraints/integral
- constraints/knapsack
- constraints/linear
- constraints/linear/upgrade
- constraints/logicor
- constraints/nonlinear
- constraints/nonlinear/upgrade
- constraints/quadratic
- constraints/quadratic/upgrade
- constraints/setppc
- constraints/soc
- constraints/varbound
- display
- display/avgdualbound
- 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
- heuristics/actconsdiving
- heuristics/bound
- heuristics/clique
- heuristics/coefdiving
- heuristics/completesol
- heuristics/crossover
- heuristics/dins
- heuristics/distributiondiving
- heuristics/dualval
- heuristics/feaspump
- heuristics/fixandinfer
- heuristics/fracdiving
- heuristics/gins
- heuristics/guideddiving
- heuristics/indicator
- heuristics/intdiving
- heuristics/intshifting
- heuristics/linesearchdiving
- heuristics/localbranching
- heuristics/locks
- heuristics/lpface
- heuristics/multistart
- heuristics/mutation
- heuristics/nlpdiving
- heuristics/objpscostdiving
- heuristics/octane
- heuristics/ofins
- heuristics/oneopt
- heuristics/proximity
- heuristics/pscostdiving
- heuristics/randrounding
- heuristics/rens
- heuristics/reoptsols
- heuristics/repair
- heuristics/rins
- heuristics/rootsoldiving
- heuristics/rounding
- heuristics/shiftandpropagate
- heuristics/shifting
- heuristics/simplerounding
- heuristics/subnlp
- heuristics/trivial
- heuristics/trivialnegation
- heuristics/trysol
- heuristics/twoopt
- heuristics/undercover
- heuristics/vbounds
- heuristics/veclendiving
- heuristics/zeroobj
- heuristics/zirounding
- history
- limits
- lp
- memory
- misc
- 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/gateextraction
- presolving/implfree
- presolving/implics
- presolving/inttobinary
- presolving/qpkktref
- presolving/redvub
- presolving/stuffing
- presolving/trivial
- presolving/tworowbnd
- propagating
- propagating/dualfix
- propagating/genvbounds
- propagating/nlobbt
- propagating/obbt
- propagating/probing
- propagating/pseudoobj
- propagating/redcost
- propagating/rootredcost
- propagating/vbounds
- randomization
- separating
- separating/cgmip
- separating/clique
- separating/closecuts
- separating/cmir
- separating/convexproj
- separating/disjunctive
- separating/eccuts
- separating/flowcover
- separating/gauge
- separating/gomory
- separating/impliedbounds
- separating/intobj
- separating/mcf
- separating/oddcycle
- separating/rapidlearning
- separating/strongcg
- separating/zerohalf
- separating/zerohalf/preprocessing
- separating/zerohalf/separating
- separating/zerohalf/separating/auxip
- solvingphases
- timing

SCIP (**S**olving **C**onstraint **I**nteger **P**rograms) is developed at the Zuse Institute Berlin (ZIB) in cooperation with TU Darmstadt, RWTH Aachen, and University of Erlangen-Nürnberg, see the SCIP webpage for the current list of developers.

SCIP 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 [3, 4, 5, 37, 38, 103, 162, 241, 242, 256] and the SCIP web site.

GAMS/SCIP uses CPLEX, if licensed, and otherwise SOPLEX [258] as LP solver, the COIN-OR Interior Point Optimizer IPOPT [247] 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.

GAMS/SCIP currently does not support the GAMS Branch-and-Cut-and-Heuristic (BCH) Facility. If you need to use GAMS/SCIP with BCH, please consider to use a GAMS system of version ≤ 23.3.

## 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 linear algebra routines of IPOPT and for solving LPs (if CPLEX' barrier solver is used).

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 http://scip.zib.de/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 optimize write gamssol quit"

instructs SCIP to load the emphasis setting `feasibility`

prior to optimizing the model and passing the solution back to GAMS.

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 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 [162] 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.

## 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 via GUROBI. It can easily be adapted to be used with SCIP.

## 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 with SCIP

SCIP includes capabilities to handle nonlinear functions that are specified via algebraic expressions. Therefore, neither external/extrinsic functions nor all GAMS operands (e.g., trigonometric ones) are supported yet.

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.

### Special options for convex MINLPs

Convex MINLPs are much easier to solve for SCIP, provided it recognizes the convexity of the model. So far, only a simple convexity check is implemented in SCIP, which 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.

Another useful feature especially for convex MINLPs is to enable the generation of cuts in the solution of the NLP relaxation in the root node and to consider using these cuts during the whole solution process. This is achieved by the parameters

constraints/quadratic/sepanlpmincont = 0 constraints/soc/sepanlpmincont = 0 constraints/nonlinear/sepanlpmincont = 0 constraints/abspower/sepanlpmincont = 0 separating/poolfreq = 1

# Components

In the following, we list components that are available in SCIP together with some common properties. Some 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 |

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

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

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

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

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

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

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

See http://scip.zib.de/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 |

soc | -10 | -40 | 10 | 1 | 1 | 100 | always | constraint handler for second order cone constraints |

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 |

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

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

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

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

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

abspower | -3500000 | -30 | 0 | 1 | 1 | 100 | fast medium | constraint handler for absolute power constraints lhs <= sign(x+offset)abs(x+offset)^n + c*z <= rhs |

bivariate | -3600000 | -55 | 5 | 1 | 1 | 100 | fast | constraint handler for constraints of the form lhs <= f(x,y) + c*z <= rhs where f(x,y) is a bivariate function |

quadratic | -4000000 | -50 | 10 | 1 | 1 | 100 | always | quadratic constraints of the form lhs <= b' x + x' A x <= rhs |

nonlinear | -4000010 | -60 | 10 | 1 | 1 | 100 | always | constraint handler for nonlinear constraints |

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

See http://scip.zib.de/doc/html/CONS.php for a detailed description of the constraint handler properties.

## 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 | 1500 | 5 | 20000 | auto | total number of bytes in block memory |

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 |

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 http://scip.zib.de/doc/html/DISP.php for a detailed description of the display column properties.

## 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 http://scip.zib.de/doc/html/NODESEL.php for a detailed description of the node selector properties.

## Presolvers

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

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 | -1 | 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 |

implfree | -1000 | exhaustive | 0 | exploit implied free variables for multi-aggregation |

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

dualinfer | -2000 | exhaustive | 0 | exploit dual informations for fixings and side changes |

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

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

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

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

See http://scip.zib.de/doc/html/PRESOL.php for a detailed description of the presolver properties.

## Primal Heuristics

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

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

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

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

locks | k | 2000 | 0 | 0 | heuristic that fixes variables based on their rounding locks |

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

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

repair | ! | 0 | -1 | 0 | tries to repair a primal infeasible solution |

dualval | Y | 0 | -1 | 0 | primal heuristic using dual values |

completesol | h | 0 | 1 | 0 | primal heuristic trying to complete given partial solutions |

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

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

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

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

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

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

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

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

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

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

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

clique | Q | -1000500 | -1 | 0 | LNS heuristic using a clique partition to restrict the search neighborhood |

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

mutation | M | -1103000 | -1 | 8 | mutation heuristic randomly fixing variables |

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

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

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

vbounds | V | -1106000 | -1 | 0 | LNS heuristic uses the variable lower and upper bounds to determine the search neighborhood |

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

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

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

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

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

trysol | y | -3000000 | 1 | 0 | try solution heuristic |

See http://scip.zib.de/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 | 0 | always | 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 |

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

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

See http://scip.zib.de/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 |

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

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

impliedbounds | -50 | 0 | 0 | implied bounds separator |

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

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

gomory | -1000 | 0 | 0 | Gomory MIR cuts separator |

strongcg | -2000 | 0 | 0 | Strong CG cuts separator (Letchford and Lodi) |

cmir | -3000 | 0 | 0 | complemented mixed integer rounding cuts separator (Marchand's version) |

flowcover | -4000 | 0 | 0 | flow cover cuts separator (c-MIR approach) |

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

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

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 |

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

See http://scip.zib.de/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 | |

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

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

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

gams/mipstart | how to handle initial variable levels, see also section Starting point Range: [ `0` , `4` ] | `2` |

gams/resolvenlp | whether to resolve MINLP with fixed discrete variables if best solution violates some constraints | `1` |

## gams/solvetrace

## branching

## branching/allfullstrong

## branching/cloud

## branching/distribution

## branching/fullstrong

## branching/inference

## branching/leastinf

## branching/mostinf

## branching/multaggr

## branching/nodereopt

## branching/pscost

## branching/random

## branching/relpscost

## conflict

## conflict/bounddisjunction

## conflict/graph

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

conflict/graph/depthscorefac | score factor for depth level in bound relaxation heuristic Range: [-∞, ∞] | `1` |

## conflict/indicatorconflict

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

conflict/indicatorconflict/priority | priority of conflict handler <indicatorconflict> Range: [ `-2147483648` , ∞] | `200000` |

## conflict/linear

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

conflict/linear/priority | priority of conflict handler <linear> Range: [ `-2147483648` , ∞] | `-1000000` |

## conflict/logicor

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

conflict/logicor/priority | priority of conflict handler <logicor> Range: [ `-2147483648` , ∞] | `800000` |

## conflict/setppc

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

conflict/setppc/priority | priority of conflict handler <setppc> Range: [ `-2147483648` , ∞] | `700000` |

## constraints

## constraints/SOS1

## constraints/SOS2

## constraints/abspower

## constraints/and

## constraints/bivariate

## constraints/bounddisjunction

## constraints/components

## constraints/indicator

## constraints/integral

## constraints/knapsack

## constraints/linear

## constraints/linear/upgrade

## constraints/logicor

## constraints/nonlinear

## constraints/nonlinear/upgrade

## constraints/quadratic

## constraints/quadratic/upgrade

## constraints/setppc

## constraints/soc

## constraints/varbound

## 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/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 (2 for nonlinear instances)` |

## 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 (2 if discrete variables)` |

## 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` |