Scippy

SCIP

Solving Constraint Integer Programs

Tutorial: the interactive shell

If you are using SCIP as a black box solver, here you will find some tips and tricks what you can do.

Read and optimize a problem instance

First of all, we need a SCIP binary and an example problem file to work with. Therefore, you can either download the SCIP standard distribution (which includes problem files) and compile it on your own or you can download a precompiled binary and an example problem separately. SCIP can read files in LP, MPS, ZPL, WBO, FZN, PIP, OSiL, and other formats (see File Readers).

If you want to download the source code of the SCIP standard distribution, we recommend to go to the SCIP download section, download the latest release (version 4.0.0 as of this writing), inflate the tarball (e.g., with "tar xzf scipoptsuite-[version].tgz"), and follow the instructions in the INSTALL file. The instance stein27, which will serve as an example in this tutorial, can be found under scipoptsuite-[version]/scip-[version]/check/instances/MIP/stein27.fzn.

If you want to download a precompiled binary, go to the SCIP download section and download an appropriate binary for your operating system. The SCIP source code distribution already comes with the example instance used throughout this tutorial. To follow this tutorial with a precompiled binary, we recommend downloading the instance stein27 from the MIPLIB 3.0 homepage.

Now start your binary, without any arguments. This opens the interactive shell, which should look somehow like this:

SCIP version 5.0.1 [precision: 8 byte] [memory: block] [mode: optimized] [LP solver: SoPlex 3.1.1] [GitHash: 4f80d72]
Copyright (C) 2002-2018 Konrad-Zuse-Zentrum fuer Informationstechnik Berlin (ZIB)
External codes:
Readline 6.3 GNU library for command line editing (gnu.org/s/readline)
SoPlex 3.1.1 Linear Programming Solver developed at Zuse Institute Berlin (soplex.zib.de) [GitHash: ab921a5]
CppAD 20160000.1 Algorithmic Differentiation of C++ algorithms developed by B. Bell (www.coin-or.org/CppAD)
ZLIB 1.2.8 General purpose compression library by J. Gailly and M. Adler (zlib.net)
GMP 6.1.0 GNU Multiple Precision Arithmetic Library developed by T. Granlund (gmplib.org)
user parameter file <scip.set> not found - using default parameters

First of all "help" shows you a list of all available shell commands. Brackets indicate a submenu with further options.

SCIP> help
<change> change the problem
<display> display information
<fix> fix/unfix parameters
<set> load/save/change parameters
<write> write information to file
checksol double checks best solution w.r.t. original problem
concurrentopt solve the problem using concurrent solvers
count count number of feasible solutions
countpresolve presolve instance before counting number of feasible solutions
free free current problem from memory
help display this help
newstart reset branch and bound tree to start again from root
optimize solve the problem
presolve solve the problem, but stop after presolving stage
quit leave SCIP
read read a problem
validatesolve validate the solution against external objective reference interval

Okay, let's solve the example instance... use "read check/instances/MIP/stein27.fzn" to parse the instance file, "optimize" to solve it and "display solution" to show the nonzero variables of the best found solution.

SCIP> read check/instances/MIP/stein27.fzn
read problem <check/instances/MIP/stein27.fzn>
============
original problem has 29 variables (29 bin, 0 int, 0 impl, 0 cont) and 118 constraints
SCIP> optimize
feasible solution found by trivial heuristic after 0.0 seconds, objective value 2.700000e+01
presolving:
(round 1, fast) 2 del vars, 0 del conss, 0 add conss, 0 chg bounds, 0 chg sides, 0 chg coeffs, 0 upgd conss, 0 impls, 0 clqs
(round 2, exhaustive) 2 del vars, 0 del conss, 0 add conss, 0 chg bounds, 0 chg sides, 0 chg coeffs, 118 upgd conss, 0 impls, 0 clqs
(0.0s) probing cycle finished: starting next cycle
Deactivated symmetry handling methods, since SCIP was built without symmetry detector (SYM=none).
presolving (3 rounds: 3 fast, 2 medium, 2 exhaustive):
2 deleted vars, 0 deleted constraints, 0 added constraints, 0 tightened bounds, 0 added holes, 0 changed sides, 0 changed coefficients
0 implications, 0 cliques
presolved problem has 27 variables (27 bin, 0 int, 0 impl, 0 cont) and 118 constraints
1 constraints of type <knapsack>
117 constraints of type <logicor>
transformed objective value is always integral (scale: 1)
Presolving Time: 0.00
transformed 1/1 original solutions to the transformed problem space
time | node | left |LP iter|LP it/n| mem |mdpt |frac |vars |cons |cols |rows |cuts |confs|strbr| dualbound | primalbound | gap
b 0.0s| 1 | 0 | 0 | - |1076k| 0 | - | 27 | 118 | 27 | 117 | 0 | 0 | 0 | 1.300000e+01 | 1.900000e+01 | 46.15%
0.0s| 1 | 0 | 27 | - |1076k| 0 | 27 | 27 | 118 | 27 | 117 | 0 | 0 | 0 | 1.300000e+01 | 1.900000e+01 | 46.15%
G 0.0s| 1 | 0 | 27 | - |1079k| 0 | - | 27 | 118 | 27 | 117 | 0 | 0 | 0 | 1.300000e+01 | 1.900000e+01 | 46.15%
0.0s| 1 | 0 | 68 | - |1230k| 0 | 27 | 27 | 118 | 27 | 120 | 3 | 0 | 0 | 1.300000e+01 | 1.900000e+01 | 46.15%
G 0.0s| 1 | 0 | 68 | - |1238k| 0 | - | 27 | 118 | 27 | 120 | 0 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 77 | - |1264k| 0 | 24 | 27 | 118 | 27 | 123 | 6 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
G 0.0s| 1 | 0 | 77 | - |1266k| 0 | - | 27 | 118 | 27 | 123 | 0 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 88 | - |1307k| 0 | 24 | 27 | 118 | 27 | 124 | 7 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 106 | - |1482k| 0 | 27 | 27 | 118 | 27 | 125 | 8 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 118 | - |1722k| 0 | 26 | 27 | 118 | 27 | 126 | 9 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 126 | - |1903k| 0 | 24 | 27 | 118 | 27 | 127 | 10 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 146 | - |1917k| 0 | 27 | 27 | 118 | 27 | 128 | 11 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 165 | - |2343k| 0 | 27 | 27 | 118 | 27 | 130 | 13 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 179 | - |2421k| 0 | 26 | 27 | 118 | 27 | 131 | 14 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 191 | - |2556k| 0 | 27 | 27 | 118 | 27 | 132 | 15 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
time | node | left |LP iter|LP it/n| mem |mdpt |frac |vars |cons |cols |rows |cuts |confs|strbr| dualbound | primalbound | gap
0.0s| 1 | 0 | 203 | - |2799k| 0 | 27 | 27 | 118 | 27 | 135 | 18 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 208 | - |3158k| 0 | 27 | 27 | 118 | 27 | 136 | 19 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 216 | - |3173k| 0 | 27 | 27 | 118 | 27 | 137 | 20 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 236 | - |3188k| 0 | 27 | 27 | 118 | 27 | 139 | 22 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 250 | - |3781k| 0 | 27 | 27 | 118 | 27 | 140 | 23 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 258 | - |4461k| 0 | 27 | 27 | 118 | 27 | 140 | 24 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 272 | - |4591k| 0 | 26 | 27 | 118 | 27 | 141 | 25 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 283 | - |4606k| 0 | 26 | 27 | 118 | 27 | 142 | 26 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.1s| 1 | 0 | 292 | - |4687k| 0 | 26 | 27 | 118 | 27 | 143 | 27 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.1s| 1 | 2 | 292 | - |4690k| 0 | 26 | 27 | 118 | 27 | 143 | 27 | 0 | 26 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.1s| 100 | 33 | 1029 | 7.4 |4969k| 9 | - | 27 | 118 | 27 | 127 | 27 | 3 | 168 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.1s| 200 | 113 | 2966 | 13.4 |5082k| 10 | 20 | 27 | 118 | 27 | 130 | 35 | 4 | 190 | 1.352381e+01 | 1.800000e+01 | 33.10%
0.2s| 300 | 169 | 3886 | 12.0 |5127k| 11 | 15 | 27 | 118 | 27 | 127 | 55 | 4 | 202 | 1.400000e+01 | 1.800000e+01 | 28.57%
0.2s| 400 | 209 | 4739 | 11.1 |5182k| 11 | 13 | 27 | 118 | 27 | 129 | 78 | 4 | 202 | 1.433333e+01 | 1.800000e+01 | 25.58%
0.2s| 500 | 225 | 5368 | 10.2 |5197k| 12 | 11 | 27 | 118 | 27 | 127 | 91 | 4 | 202 | 1.433333e+01 | 1.800000e+01 | 25.58%
time | node | left |LP iter|LP it/n| mem |mdpt |frac |vars |cons |cols |rows |cuts |confs|strbr| dualbound | primalbound | gap
0.2s| 600 | 241 | 5981 | 9.5 |5341k| 15 | - | 27 | 118 | 27 | 129 | 111 | 4 | 202 | 1.450000e+01 | 1.800000e+01 | 24.14%
0.3s| 700 | 257 | 6517 | 8.9 |5367k| 15 | - | 27 | 118 | 27 | 127 | 145 | 4 | 203 | 1.466667e+01 | 1.800000e+01 | 22.73%
0.3s| 800 | 275 | 7129 | 8.6 |5513k| 15 | 11 | 27 | 118 | 27 | 132 | 176 | 4 | 203 | 1.466667e+01 | 1.800000e+01 | 22.73%
0.3s| 900 | 287 | 7709 | 8.3 |5646k| 15 | 11 | 27 | 118 | 27 | 127 | 193 | 4 | 203 | 1.480000e+01 | 1.800000e+01 | 21.62%
0.4s| 1000 | 291 | 8184 | 7.9 |5673k| 15 | - | 27 | 118 | 27 | 127 | 205 | 4 | 207 | 1.483333e+01 | 1.800000e+01 | 21.35%
0.4s| 1100 | 301 | 8744 | 7.7 |5740k| 15 | - | 27 | 118 | 27 | 129 | 237 | 4 | 207 | 1.483333e+01 | 1.800000e+01 | 21.35%
0.4s| 1200 | 291 | 9119 | 7.4 |5740k| 15 | 13 | 27 | 118 | 27 | 127 | 248 | 4 | 207 | 1.500000e+01 | 1.800000e+01 | 20.00%
0.4s| 1300 | 277 | 9634 | 7.2 |5843k| 15 | - | 27 | 118 | 27 | 127 | 282 | 4 | 207 | 1.500000e+01 | 1.800000e+01 | 20.00%
0.5s| 1400 | 277 | 10169 | 7.1 |5859k| 15 | - | 27 | 118 | 27 | 128 | 311 | 4 | 209 | 1.500000e+01 | 1.800000e+01 | 20.00%
0.5s| 1500 | 275 | 10821 | 7.0 |6255k| 15 | - | 27 | 118 | 27 | 127 | 357 | 4 | 209 | 1.516667e+01 | 1.800000e+01 | 18.68%
0.6s| 1600 | 263 | 11413 | 7.0 |6767k| 15 | 12 | 27 | 118 | 27 | 127 | 416 | 4 | 209 | 1.516667e+01 | 1.800000e+01 | 18.68%
0.6s| 1700 | 247 | 11845 | 6.8 |6785k| 15 | - | 27 | 118 | 27 | 127 | 443 | 4 | 209 | 1.533333e+01 | 1.800000e+01 | 17.39%
0.6s| 1800 | 227 | 12408 | 6.7 |7151k| 15 | - | 27 | 118 | 27 | 128 | 492 | 4 | 209 | 1.533333e+01 | 1.800000e+01 | 17.39%
0.7s| 1900 | 197 | 12923 | 6.7 |7151k| 15 | - | 27 | 118 | 27 | 130 | 522 | 4 | 212 | 1.533333e+01 | 1.800000e+01 | 17.39%
0.7s| 2000 | 175 | 13619 | 6.7 |7174k| 15 | 11 | 27 | 118 | 27 | 129 | 581 | 4 | 215 | 1.546667e+01 | 1.800000e+01 | 16.38%
time | node | left |LP iter|LP it/n| mem |mdpt |frac |vars |cons |cols |rows |cuts |confs|strbr| dualbound | primalbound | gap
0.8s| 2100 | 155 | 14065 | 6.6 |7174k| 15 | - | 27 | 118 | 27 | 129 | 612 | 4 | 221 | 1.550000e+01 | 1.800000e+01 | 16.13%
0.8s| 2200 | 135 | 14525 | 6.5 |7174k| 15 | - | 27 | 118 | 27 | 132 | 628 | 5 | 224 | 1.566667e+01 | 1.800000e+01 | 14.89%
0.8s| 2300 | 105 | 14944 | 6.4 |7174k| 15 | 10 | 27 | 118 | 27 | 128 | 641 | 5 | 226 | 1.566667e+01 | 1.800000e+01 | 14.89%
0.8s| 2400 | 79 | 15422 | 6.3 |7174k| 15 | - | 27 | 118 | 27 | 130 | 671 | 5 | 229 | 1.566667e+01 | 1.800000e+01 | 14.89%
0.9s| 2500 | 45 | 15867 | 6.2 |7176k| 15 | 10 | 27 | 118 | 27 | 129 | 704 | 5 | 233 | 1.583333e+01 | 1.800000e+01 | 13.68%
0.9s| 2600 | 3 | 16380 | 6.2 |7176k| 15 | 14 | 27 | 118 | 27 | 134 | 730 | 5 | 243 | 1.662448e+01 | 1.800000e+01 | 8.27%
SCIP Status : problem is solved [optimal solution found]
Solving Time (sec) : 0.90
Solving Nodes : 2607
Primal Bound : +1.80000000000000e+01 (353 solutions)
Dual Bound : +1.80000000000000e+01
Gap : 0.00 %
SCIP> display solution
objective value: 18
true 1 (obj:0)
x0001 1 (obj:1)
x0003 1 (obj:1)
x0004 1 (obj:1)
x0007 1 (obj:1)
x0008 1 (obj:1)
x0010 1 (obj:1)
x0011 1 (obj:1)
x0012 1 (obj:1)
x0013 1 (obj:1)
x0014 1 (obj:1)
x0015 1 (obj:1)
x0016 1 (obj:1)
x0017 1 (obj:1)
x0020 1 (obj:1)
x0021 1 (obj:1)
x0022 1 (obj:1)
x0025 1 (obj:1)
x0027 1 (obj:1)

What do we see here? After "optimize", SCIP first goes into presolving. Not much is happening for this instance, just the linear constraints get upgraded to more specific types. Each round of presolving will be displayed in a single line, with a short summary at the end. Then, we see the actual solving process. The table output of the branch-and-cut solving process is very detailed during the root node. Afterwards, a new line is displayed every 100th node. Furthermore, every new incumbent solution triggers a new table row, starting with a character to indicate the heuristic that found the solution. Which letter represents which heuristic can be seen with the "display heuristics" command, see Displaying detailed solving statistics for an example.

After some lines the root node processing is finished. From now on, we will see an output line every hundredth node or whenever a new incumbent is found. After some more nodes, the "dualbound" starts moving, too. At one point, both will be the same, and the solving process terminates, showing us some wrap-up information.

The exact performance may of course vary among different architectures and operating systems. Do not be worried if your installation needs more or less time or nodes to solve. Also, this instance has more than 2000 different optimal solutions. The optimal objective value always has to be 18, but the solution vector may differ. If you are interested in this behavior, which is called "performance variability", you may have a look at the MIPLIB2010 paper.

Writing problems and solutions to a file

SCIP can also write information to files. E.g., we could store the incumbent solution to a file, or output the problem instance in another file format (the LP format is much more human readable than the MPS format, for example).

SCIP> write solution stein27.sol
written solution information to file <stein27.sol>
SCIP> write problem stein27.lp
written original problem to file <stein27.lp>

Passing starting solutions can increase the solving performance so that SCIP does not need to construct an initial feasible solution by itself. After reading the problem instance, use the "read" command again, this time with a file containing solution information. Solutions can be specified in a raw or xml-format and must have the file extension ".sol", see the documentation of the solution reader of SCIP for further information.

Customized settings are not written or read with the "write" and "read" commands, but with the three commands

SCIP> set save settingsfile.set
saved parameter file <settingsfile.set>
SCIP> set diffsave settingsfile.set
saved non-default parameter settings to file <settingsfile.set>
SCIP> set load settingsfile.set
loaded parameter file <settingsfile.set>

See the section on parameters Changing parameters from the interactive shell for more information.

Displaying detailed solving statistics

We might want to have some more information now. Which of the heuristics found solutions? Which plugins were called during the solutions process and how much time did they spend? Information on certain plugin types (e.g., heuristics, branching rules, separators) is displayed via "display <plugin-type>", information on the solution process via "display statistics", and "display problem" shows the current instance.

SCIP> display heuristics
primal heuristic c priority freq ofs description
---------------- - -------- ---- --- -----------
ofins A 60000 0 0 primal heuristic for reoptimization, objective function induced neighborhood search
gins K -1103000 20 8 gins works on k-neighborhood in a variable-constraint graph
oneopt b -20000 1 0 1-opt heuristic which tries to improve setting of single integer variables
pscostdiving p -1002000 10 2 LP diving heuristic that chooses fixings w.r.t. the pseudo cost values
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
coefdiving c -1001000 10 1 LP diving heuristic that chooses fixings w.r.t. the matrix coefficients
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
reoptsols J 40000 0 0 primal heuristic updating solutions found in a previous optimization round
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
clique Q 5000 0 0 LNS heuristic using a clique partition to restrict the search neighborhood
locks k 3000 0 0 heuristic that fixes variables based on their rounding locks
vbounds V 2500 0 0 LNS heuristic uses the variable lower and upper bounds to determine the search neighborhood
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
simplerounding r 0 1 0 simple and fast LP rounding heuristic
dualval Y 0 -1 0 primal heuristic using dual values
completesol h 0 1 0 primal heuristic trying to complete given partial solutions
repair ! 0 -1 0 tries to repair a primal infeasible solution
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
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
nlpdiving d -1003000 10 3 NLP diving heuristic that chooses fixings w.r.t. the fractionalities
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
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
alns L -1100500 20 0 Large neighborhood search heuristic that orchestrates the popular neighborhoods Local Branching, RINS, RENS, DINS etc.
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
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
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
subnlp q -2000000 1 0 primal heuristic that performs a local search in an NLP after fixing integer variables and presolving
proximity P -2000000 -1 0 heuristic trying to improve the incumbent by an auxiliary proximity objective function
mpec W -2050000 50 0 regularization heuristic for convex and nonconvex MINLPs
multistart m -2100000 0 0 multistart heuristic for convex and nonconvex MINLPs
trysol y -3000000 1 0 try solution heuristic
SCIP> display statistics
SCIP Status : problem is solved [optimal solution found]
Total Time : 0.90
solving : 0.90
presolving : 0.00 (included in solving)
reading : 0.00
copying : 0.00 (1 #copies) (minimal 0.00, maximal 0.00, average 0.00)
Original Problem :
Problem name : check/instances/MIP/stein27.fzn
Variables : 29 (29 binary, 0 integer, 0 implicit integer, 0 continuous)
Constraints : 118 initial, 118 maximal
Objective : minimize, 27 non-zeros (abs.min = 1, abs.max = 1)
Presolved Problem :
Problem name : t_check/instances/MIP/stein27.fzn
Variables : 27 (27 binary, 0 integer, 0 implicit integer, 0 continuous)
Constraints : 118 initial, 118 maximal
Objective : minimize, 27 non-zeros (abs.min = 1, abs.max = 1)
Presolvers : ExecTime SetupTime Calls FixedVars AggrVars ChgTypes ChgBounds AddHoles DelCons AddCons ChgSides ChgCoefs
boundshift : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
convertinttobin : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
domcol : 0.00 0.00 1 0 0 0 0 0 0 0 0 0
dualagg : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
dualcomp : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
dualinfer : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
gateextraction : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
implfree : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
implics : 0.00 0.00 2 0 0 0 0 0 0 0 0 0
inttobinary : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
qpkktref : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
redvub : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
sparsify : 0.00 0.00 1 0 0 0 0 0 0 0 0 0
stuffing : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
symbreak : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
symmetry : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
trivial : 0.00 0.00 3 2 0 0 0 0 0 0 0 0
tworowbnd : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
dualfix : 0.00 0.00 3 0 0 0 0 0 0 0 0 0
genvbounds : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
probing : 0.00 0.00 1 0 0 0 0 0 0 0 0 0
pseudoobj : 0.00 0.00 1 0 0 0 0 0 0 0 0 0
vbounds : 0.00 0.00 0 0 0 0 0 0 0 0 0 0
knapsack : 0.00 0.00 3 0 0 0 0 0 0 0 0 0
linear : 0.00 0.00 3 0 0 0 0 0 0 0 0 0
logicor : 0.00 0.00 3 0 0 0 0 0 0 0 0 0
components : 0.00 0.00 1 0 0 0 0 0 0 0 0 0
root node : - - - 1 - - 1 - - - - -
Constraints : Number MaxNumber #Separate #Propagate #EnfoLP #EnfoRelax #EnfoPS #Check #ResProp Cutoffs DomReds Cuts Applied Conss Children
integral : 0 0 0 0 1360 0 0 359 0 0 147 0 0 0 2606
knapsack : 1 1 0 5500 0 0 0 354 0 0 0 0 0 0 0
logicor : 117+ 118 19 3554 0 0 0 353 95 9 2983 0 0 0 0
countsols : 0 0 0 0 0 0 0 357 0 0 0 0 0 0 0
components : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Constraint Timings : TotalTime SetupTime Separate Propagate EnfoLP EnfoPS EnfoRelax Check ResProp SB-Prop
integral : 0.03 0.00 0.00 0.00 0.03 0.00 0.00 0.00 0.00 0.00
knapsack : 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
logicor : 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
countsols : 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
components : 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Propagators : #Propagate #ResProp Cutoffs DomReds
dualfix : 2 0 0 0
genvbounds : 0 0 0 0
nlobbt : 0 0 0 0
obbt : 0 0 0 0
orbitalfixing : 0 0 0 0
probing : 0 0 0 0
pseudoobj : 5290 20 0 38
redcost : 21 0 0 0
rootredcost : 0 0 0 0
vbounds : 7509 0 0 0
Propagator Timings : TotalTime SetupTime Presolve Propagate ResProp SB-Prop
dualfix : 0.00 0.00 0.00 0.00 0.00 0.00
genvbounds : 0.01 0.00 0.00 0.01 0.00 0.00
nlobbt : 0.00 0.00 0.00 0.00 0.00 0.00
obbt : 0.00 0.00 0.00 0.00 0.00 0.00
orbitalfixing : 0.00 0.00 0.00 0.00 0.00 0.00
probing : 0.00 0.00 0.00 0.00 0.00 0.00
pseudoobj : 0.00 0.00 0.00 0.00 0.00 0.00
redcost : 0.00 0.00 0.00 0.00 0.00 0.00
rootredcost : 0.00 0.00 0.00 0.00 0.00 0.00
vbounds : 0.00 0.00 0.00 0.00 0.00 0.00
Conflict Analysis : Time Calls Success DomReds Conflicts Literals Reconvs ReconvLits Dualrays Nonzeros LP Iters (pool size: [10000,10000])
propagation : 0.00 9 5 - 7 17.6 0 0.0 - - -
infeasible LP : 0.00 0 0 - 0 0.0 0 0.0 0 0.0 0
bound exceed. LP : 0.00 731 0 - 0 0.0 0 0.0 0 0.0 230
strong branching : 0.00 0 0 - 0 0.0 0 0.0 - - 0
pseudo solution : 0.00 10 0 - 0 0.0 0 0.0 - - -
applied globally : 0.00 - - 0 0 0.0 - - 0 - -
applied locally : - - - 0 5 17.4 - - 0 - -
Separators : ExecTime SetupTime Calls Cutoffs DomReds Cuts Applied Conss
cut pool : 0.00 1254 - - 2803 - - (maximal pool size: 2081)
aggregation : 0.05 0.00 632 0 0 0 0 0
cgmip : 0.00 0.00 0 0 0 0 0 0
clique : 0.00 0.00 1 0 0 0 0 0
closecuts : 0.00 0.00 0 0 0 0 0 0
cmir : 0.00 0.00 0 0 0 0 2 0
convexproj : 0.00 0.00 0 0 0 0 0 0
disjunctive : 0.00 0.00 0 0 0 0 0 0
eccuts : 0.00 0.00 0 0 0 0 0 0
flowcover : 0.00 0.00 0 0 0 0 0 0
gauge : 0.00 0.00 0 0 0 0 0 0
gomory : 0.39 0.00 617 0 0 0 533 0
impliedbounds : 0.00 0.00 632 0 0 0 0 0
intobj : 0.00 0.00 0 0 0 0 0 0
mcf : 0.00 0.00 1 0 0 0 0 0
oddcycle : 0.00 0.00 0 0 0 0 0 0
rapidlearning : 0.00 0.00 0 0 0 0 0 0
strongcg : 0.03 0.00 19 0 0 0 10 0
zerohalf : 0.04 0.00 626 0 0 0 185 0
Pricers : ExecTime SetupTime Calls Vars
problem variables: 0.00 - 0 0
Branching Rules : ExecTime SetupTime BranchLP BranchExt BranchPS Cutoffs DomReds Cuts Conss Children
allfullstrong : 0.00 0.00 0 0 0 0 0 0 0 0
cloud : 0.00 0.00 0 0 0 0 0 0 0 0
distribution : 0.00 0.00 0 0 0 0 0 0 0 0
fullstrong : 0.00 0.00 0 0 0 0 0 0 0 0
inference : 0.00 0.00 0 0 0 0 0 0 0 0
leastinf : 0.00 0.00 0 0 0 0 0 0 0 0
mostinf : 0.00 0.00 0 0 0 0 0 0 0 0
multaggr : 0.00 0.00 0 0 0 0 0 0 0 0
nodereopt : 0.00 0.00 0 0 0 0 0 0 0 0
pscost : 0.00 0.00 0 0 0 0 0 0 0 0
random : 0.00 0.00 0 0 0 0 0 0 0 0
relpscost : 0.03 0.00 1360 0 0 0 147 0 0 2606
Primal Heuristics : ExecTime SetupTime Calls Found Best
LP solutions : 0.00 - - 0 0
relax solutions : 0.00 - - 0 0
pseudo solutions : 0.00 - - 0 0
strong branching : 0.00 - - 87 0
actconsdiving : 0.00 0.00 0 0 0
alns : 0.00 0.00 1 0 0
bound : 0.00 0.00 0 0 0
clique : 0.00 0.00 0 0 0
coefdiving : 0.02 0.00 21 0 0
completesol : 0.00 0.00 0 0 0
crossover : 0.00 0.00 0 0 0
dins : 0.00 0.00 0 0 0
distributiondivin: 0.01 0.00 15 0 0
dualval : 0.00 0.00 0 0 0
feaspump : 0.00 0.00 0 0 0
fixandinfer : 0.00 0.00 0 0 0
fracdiving : 0.00 0.00 15 0 0
gins : 0.00 0.00 0 0 0
guideddiving : 0.01 0.00 45 0 0
indicator : 0.00 0.00 0 0 0
intdiving : 0.00 0.00 0 0 0
intshifting : 0.00 0.00 0 0 0
linesearchdiving : 0.03 0.00 39 0 0
localbranching : 0.00 0.00 0 0 0
locks : 0.00 0.00 1 0 0
lpface : 0.00 0.00 0 0 0
mpec : 0.00 0.00 0 0 0
multistart : 0.00 0.00 0 0 0
mutation : 0.00 0.00 0 0 0
nlpdiving : 0.00 0.00 0 0 0
objpscostdiving : 0.00 0.00 4 5 0
octane : 0.00 0.00 0 0 0
ofins : 0.00 0.00 0 0 0
oneopt : 0.00 0.00 4 1 1
proximity : 0.00 0.00 0 0 0
pscostdiving : 0.00 0.00 15 0 0
randrounding : 0.00 0.00 20 20 1
rens : 0.00 0.00 0 0 0
reoptsols : 0.00 0.00 0 0 0
repair : 0.00 0.00 0 0 0
rins : 0.00 0.00 0 0 0
rootsoldiving : 0.00 0.00 14 12 0
rounding : 0.01 0.00 545 0 0
shiftandpropagate: 0.00 0.00 0 0 0
shifting : 0.00 0.00 672 31 0
simplerounding : 0.00 0.00 1823 29 0
subnlp : 0.00 0.00 0 0 0
trivial : 0.00 0.00 2 1 1
trivialnegation : 0.00 0.00 0 0 0
trysol : 0.00 0.00 0 0 0
twoopt : 0.00 0.00 0 0 0
undercover : 0.00 0.00 0 0 0
vbounds : 0.00 0.00 0 0 0
veclendiving : 0.00 0.00 15 0 0
zeroobj : 0.00 0.00 0 0 0
zirounding : 0.02 0.00 1303 167 0
other solutions : - - - 0 -
Diving Statistics : Calls Nodes LP Iters Backtracks MinDepth MaxDepth AvgDepth RoundSols NLeafSols MinSolDpt MaxSolDpt AvgSolDpt
actconsdiving : 0 - - - - - - - - - - -
coefdiving : 21 98 278 33 11 16 12.8 0 - - - -
distributiondivin: 15 74 190 19 12 16 13.8 0 - - - -
fracdiving : 15 74 208 27 12 15 13.5 0 - - - -
guideddiving : 45 319 574 60 11 19 14.6 0 - - - -
linesearchdiving : 39 320 704 43 10 21 14.9 0 - - - -
pscostdiving : 15 72 170 23 11 18 13.5 0 - - - -
veclendiving : 15 115 246 15 15 19 16.1 0 - - - -
Neighborhoods : Calls SetupTime SolveTime SolveNodes Sols Best Exp3 EpsGreedy UCB TgtFixRate Opt Inf Node Stal Sol Usr Othr Actv
rens : 0 0.00 0.00 0 0 0 0.00000 -1.00000 1.00000 0.500 0 0 0 0 0 0 0 1
rins : 1 0.00 0.00 0 0 0 0.00000 -1.00000 1.00000 0.200 0 1 0 0 0 0 0 1
mutation : 0 0.00 0.00 0 0 0 0.00000 -1.00000 1.00000 0.650 0 0 0 0 0 0 0 1
localbranching : 0 0.00 0.00 0 0 0 0.00000 -1.00000 1.00000 0.450 0 0 0 0 0 0 0 1
crossover : 0 0.00 0.00 0 0 0 0.00000 -1.00000 1.00000 0.650 0 0 0 0 0 0 0 1
proximity : 0 0.00 0.00 0 0 0 0.00000 -1.00000 1.00000 0.450 0 0 0 0 0 0 0 1
zeroobjective : 0 0.00 0.00 0 0 0 0.00000 -1.00000 1.00000 0.450 0 0 0 0 0 0 0 1
dins : 0 0.00 0.00 0 0 0 0.00000 -1.00000 1.00000 0.300 0 0 0 0 0 0 0 1
LP : Time Calls Iterations Iter/call Iter/sec Time-0-It Calls-0-It ItLimit
primal LP : 0.00 303 0 0.00 - 0.00 303
dual LP : 0.13 3108 13400 4.31 103076.92 0.00 1
lex dual LP : 0.00 0 0 0.00 -
barrier LP : 0.00 0 0 0.00 - 0.00 0
diving/probing LP: 0.03 568 3007 5.29 100233.33
strong branching : 0.03 244 2635 10.80 87833.33 - - 1
(at root node) : - 26 1262 48.54 -
conflict analysis: 0.00 49 230 4.69 -
B&B Tree :
number of runs : 1
nodes : 2607 (1303 internal, 1304 leaves)
feasible leaves : 0
infeas. leaves : 19
objective leaves : 1285
nodes (total) : 2607 (1303 internal, 1304 leaves)
nodes left : 0
max depth : 15
max depth (total): 15
backtracks : 1064 (40.8%)
early backtracks : 0 (0.0%)
nodes exc. ref. : 0 (0.0%)
delayed cutoffs : 0
repropagations : 0 (0 domain reductions, 0 cutoffs)
avg switch length: 6.99
switching time : 0.02
Root Node :
First LP value : +9.00000000000000e+00
First LP Iters : 27
First LP Time : 0.00
Final Dual Bound : +1.30000000000000e+01
Final Root Iters : 292
Root LP Estimate : +2.05902767708926e+01
Solution :
Solutions found : 353 (3 improvements)
First Solution : +2.70000000000000e+01 (in run 1, after 0 nodes, 0.00 seconds, depth 0, found by <trivial>)
Gap First Sol. : infinite
Gap Last Sol. : 38.46 %
Primal Bound : +1.80000000000000e+01 (in run 1, after 1 nodes, 0.01 seconds, depth 12, found by <randrounding>)
Dual Bound : +1.80000000000000e+01
Gap : 0.00 %
Avg. Gap : 18.09 % (16.28 primal-dual integral)

The statistics obtained via "display statistics" are quite comprehensive, thus, we just explain a few lines here. Information is grouped by the plugin type. For the primal heuristics, the execution time in seconds is shown as well as the number of calls to the heuristic, and its success regarding the number of (best) solutions found by that heuristic. Appropriate statistics are also shown for presolvers, constraint handlers, separators, propagators, the search tree, etc. User-written plugins will appear automatically in these statistics, after they were included into SCIP.

Changing parameters from the interactive shell

Now, we can start playing around with parameters. The primal heuristics Rounding and shifting seem to be quite successful on this instance, wondering what happens if we disable them? Or what happens, if we are even more rigorous and disable all heuristics? Or if we do the opposite and use aggressive heuristics?

SCIP> set
<branching> change parameters for branching rules
<compression> parameters for <compression>
<concurrent> parameters for <concurrent>
<conflict> change parameters for conflict handlers
<constraints> change parameters for constraint handlers
<display> change parameters for display columns
<emphasis> predefined parameter settings
<heuristics> change parameters for primal heuristics
<history> parameters for <history>
<limits> change parameters for time, memory, objective value, and other limits
<lp> change parameters for linear programming relaxations
<memory> change parameters for memory management
<misc> change parameters for miscellaneous stuff
<nlp> change parameters for nonlinear programming relaxations
<nlpi> change parameters for NLP solver interfaces
<nodeselection> change parameters for node selectors
<numerics> change parameters for numerical values
<parallel> change parameters for parallel implementation
<presolving> change parameters for presolving
<pricing> change parameters for pricing variables
<propagating> change parameters for constraint propagation
<randomization> parameters for <randomization>
<reading> change parameters for problem file readers
<reoptimization> parameters for <reoptimization>
<separating> change parameters for cut separators
<solvingphases> parameters for <solvingphases>
<table> parameters for <table>
<timing> change parameters for timing issues
<visual> change parameters for visualization output
<write> parameters for <write>
default reset parameter settings to their default values
diffsave save non-default parameter settings to a file
load load parameter settings from a file
save save parameter settings to a file
SCIP/set> heuristics
<actconsdiving> LP diving heuristic that chooses fixings w.r.t. the active constraints
<alns> Large neighborhood search heuristic that orchestrates the popular neighborhoods Local Branching, RINS, RENS, DINS etc.
<bound> heuristic which fixes all integer variables to a bound and solves the remaining LP
<clique> LNS heuristic using a clique partition to restrict the search neighborhood
<coefdiving> LP diving heuristic that chooses fixings w.r.t. the matrix coefficients
<completesol> primal heuristic trying to complete given partial solutions
<crossover> LNS heuristic that fixes all variables that are identic in a couple of solutions
<dins> distance induced neighborhood search by Ghosh
<distributiondiving> Diving heuristic that chooses fixings w.r.t. changes in the solution density
<dualval> primal heuristic using dual values
<emphasis> predefined parameter settings
<feaspump> objective feasibility pump 2.0
<fixandinfer> iteratively fixes variables and propagates inferences
<fracdiving> LP diving heuristic that chooses fixings w.r.t. the fractionalities
<gins> gins works on k-neighborhood in a variable-constraint graph
<guideddiving> LP diving heuristic that chooses fixings in direction of incumbent solutions
<indicator> indicator heuristic to create feasible solutions from values for indicator variables
<intdiving> LP diving heuristic that fixes binary variables with large LP value to one
<intshifting> LP rounding heuristic with infeasibility recovering and final LP solving
<linesearchdiving> LP diving heuristic that chooses fixings following the line from root solution to current solution
<localbranching> local branching heuristic by Fischetti and Lodi
<locks> heuristic that fixes variables based on their rounding locks
<lpface> LNS heuristic that searches the optimal LP face inside a sub-MIP
<mpec> regularization heuristic for convex and nonconvex MINLPs
<multistart> multistart heuristic for convex and nonconvex MINLPs
<mutation> mutation heuristic randomly fixing variables
<nlpdiving> NLP diving heuristic that chooses fixings w.r.t. the fractionalities
<objpscostdiving> LP diving heuristic that changes variable's objective values instead of bounds, using pseudo costs as guide
<octane> octane primal heuristic for pure {0;1}-problems based on Balas et al.
<ofins> primal heuristic for reoptimization, objective function induced neighborhood search
<oneopt> 1-opt heuristic which tries to improve setting of single integer variables
<proximity> heuristic trying to improve the incumbent by an auxiliary proximity objective function
<pscostdiving> LP diving heuristic that chooses fixings w.r.t. the pseudo cost values
<randrounding> fast LP rounding heuristic
<rens> LNS exploring fractional neighborhood of relaxation's optimum
<reoptsols> primal heuristic updating solutions found in a previous optimization round
<repair> tries to repair a primal infeasible solution
<rins> relaxation induced neighborhood search by Danna, Rothberg, and Le Pape
<rootsoldiving> LP diving heuristic that changes variable's objective values using root LP solution as guide
<rounding> LP rounding heuristic with infeasibility recovering
<shiftandpropagate> Pre-root heuristic to expand an auxiliary branch-and-bound tree and apply propagation techniques
<shifting> LP rounding heuristic with infeasibility recovering also using continuous variables
<simplerounding> simple and fast LP rounding heuristic
<subnlp> primal heuristic that performs a local search in an NLP after fixing integer variables and presolving
<trivial> start heuristic which tries some trivial solutions
<trivialnegation> negate solution entries if an objective coefficient changes the sign, enters or leaves the objective.
<trysol> try solution heuristic
<twoopt> primal heuristic to improve incumbent solution by flipping pairs of variables
<undercover> solves a sub-CIP determined by a set covering approach
<vbounds> LNS heuristic uses the variable lower and upper bounds to determine the search neighborhood
<veclendiving> LP diving heuristic that rounds variables with long column vectors
<zeroobj> heuristic trying to solve the problem without objective
<zirounding> LP rounding heuristic as suggested by C. Wallace taking row slacks and bounds into account
SCIP/set/heuristics> shifting
<advanced> advanced parameters
freq frequency for calling primal heuristic <shifting> (-1: never, 0: only at depth freqofs) [10]
freqofs frequency offset for calling primal heuristic <shifting> [0]
SCIP/set/heuristics/shifting> freq
current value: 10, new value [-1,65534]: -1
heuristics/shifting/freq = -1
SCIP> se he rou freq -1
heuristics/rounding/freq = -1
SCIP> read check/instances/MIP/stein27.fzn
read problem <check/instances/MIP/stein27.fzn>
============
original problem has 29 variables (29 bin, 0 int, 0 impl, 0 cont) and 118 constraints
SCIP> optimize
feasible solution found by trivial heuristic after 0.0 seconds, objective value 2.700000e+01
presolving:
(round 1, fast) 2 del vars, 0 del conss, 0 add conss, 0 chg bounds, 0 chg sides, 0 chg coeffs, 0 upgd conss, 0 impls, 0 clqs
(round 2, exhaustive) 2 del vars, 0 del conss, 0 add conss, 0 chg bounds, 0 chg sides, 0 chg coeffs, 118 upgd conss, 0 impls, 0 clqs
(0.0s) probing cycle finished: starting next cycle
Deactivated symmetry handling methods, since SCIP was built without symmetry detector (SYM=none).
presolving (3 rounds: 3 fast, 2 medium, 2 exhaustive):
2 deleted vars, 0 deleted constraints, 0 added constraints, 0 tightened bounds, 0 added holes, 0 changed sides, 0 changed coefficients
0 implications, 0 cliques
presolved problem has 27 variables (27 bin, 0 int, 0 impl, 0 cont) and 118 constraints
1 constraints of type <knapsack>
117 constraints of type <logicor>
transformed objective value is always integral (scale: 1)
Presolving Time: 0.00
transformed 1/1 original solutions to the transformed problem space
time | node | left |LP iter|LP it/n| mem |mdpt |frac |vars |cons |cols |rows |cuts |confs|strbr| dualbound | primalbound | gap
b 0.0s| 1 | 0 | 0 | - |5580k| 0 | - | 27 | 118 | 27 | 117 | 0 | 0 | 0 | 1.300000e+01 | 1.900000e+01 | 46.15%
0.0s| 1 | 0 | 27 | - |5580k| 0 | 27 | 27 | 118 | 27 | 117 | 0 | 0 | 0 | 1.300000e+01 | 1.900000e+01 | 46.15%
G 0.0s| 1 | 0 | 27 | - |5596k| 0 | - | 27 | 118 | 27 | 117 | 0 | 0 | 0 | 1.300000e+01 | 1.900000e+01 | 46.15%
0.0s| 1 | 0 | 68 | - |5809k| 0 | 27 | 27 | 118 | 27 | 120 | 3 | 0 | 0 | 1.300000e+01 | 1.900000e+01 | 46.15%
G 0.0s| 1 | 0 | 68 | - |5818k| 0 | - | 27 | 118 | 27 | 120 | 0 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 77 | - |5830k| 0 | 24 | 27 | 118 | 27 | 123 | 6 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
G 0.0s| 1 | 0 | 77 | - |5831k| 0 | - | 27 | 118 | 27 | 123 | 0 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 88 | - |5852k| 0 | 24 | 27 | 118 | 27 | 124 | 7 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 106 | - |5865k| 0 | 27 | 27 | 118 | 27 | 125 | 8 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 118 | - |5999k| 0 | 26 | 27 | 118 | 27 | 126 | 9 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 126 | - |6012k| 0 | 24 | 27 | 118 | 27 | 127 | 10 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 146 | - |6026k| 0 | 27 | 27 | 118 | 27 | 128 | 11 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 165 | - |6279k| 0 | 27 | 27 | 118 | 27 | 130 | 13 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 179 | - |6293k| 0 | 26 | 27 | 118 | 27 | 131 | 14 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 191 | - |6308k| 0 | 27 | 27 | 118 | 27 | 132 | 15 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
time | node | left |LP iter|LP it/n| mem |mdpt |frac |vars |cons |cols |rows |cuts |confs|strbr| dualbound | primalbound | gap
0.0s| 1 | 0 | 203 | - |6338k| 0 | 27 | 27 | 118 | 27 | 135 | 18 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 208 | - |6353k| 0 | 27 | 27 | 118 | 27 | 136 | 19 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 216 | - |6368k| 0 | 27 | 27 | 118 | 27 | 137 | 20 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 236 | - |6382k| 0 | 27 | 27 | 118 | 27 | 139 | 22 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 250 | - |6877k| 0 | 27 | 27 | 118 | 27 | 140 | 23 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.1s| 1 | 0 | 258 | - |6892k| 0 | 27 | 27 | 118 | 27 | 140 | 24 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.1s| 1 | 0 | 272 | - |6892k| 0 | 26 | 27 | 118 | 27 | 141 | 25 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.1s| 1 | 0 | 283 | - |6907k| 0 | 26 | 27 | 118 | 27 | 142 | 26 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.1s| 1 | 0 | 292 | - |6988k| 0 | 26 | 27 | 118 | 27 | 143 | 27 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.1s| 1 | 2 | 292 | - |6990k| 0 | 26 | 27 | 118 | 27 | 143 | 27 | 0 | 26 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.1s| 100 | 33 | 1029 | 7.4 |7247k| 9 | - | 27 | 118 | 27 | 127 | 27 | 3 | 168 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.1s| 200 | 113 | 2966 | 13.4 |7247k| 10 | 20 | 27 | 118 | 27 | 130 | 35 | 4 | 190 | 1.352381e+01 | 1.800000e+01 | 33.10%
0.2s| 300 | 169 | 3886 | 12.0 |7247k| 11 | 15 | 27 | 118 | 27 | 127 | 55 | 4 | 202 | 1.400000e+01 | 1.800000e+01 | 28.57%
0.2s| 400 | 209 | 4739 | 11.1 |7272k| 11 | 13 | 27 | 118 | 27 | 129 | 78 | 4 | 202 | 1.433333e+01 | 1.800000e+01 | 25.58%
0.2s| 500 | 225 | 5368 | 10.2 |7278k| 12 | 11 | 27 | 118 | 27 | 127 | 91 | 4 | 202 | 1.433333e+01 | 1.800000e+01 | 25.58%
time | node | left |LP iter|LP it/n| mem |mdpt |frac |vars |cons |cols |rows |cuts |confs|strbr| dualbound | primalbound | gap
0.2s| 600 | 241 | 5981 | 9.5 |7290k| 15 | - | 27 | 118 | 27 | 129 | 111 | 4 | 202 | 1.450000e+01 | 1.800000e+01 | 24.14%
0.3s| 700 | 257 | 6517 | 8.9 |7314k| 15 | - | 27 | 118 | 27 | 127 | 145 | 4 | 203 | 1.466667e+01 | 1.800000e+01 | 22.73%
0.3s| 800 | 275 | 7129 | 8.6 |7314k| 15 | 11 | 27 | 118 | 27 | 132 | 176 | 4 | 203 | 1.466667e+01 | 1.800000e+01 | 22.73%
0.3s| 900 | 287 | 7709 | 8.3 |7314k| 15 | 11 | 27 | 118 | 27 | 127 | 193 | 4 | 203 | 1.480000e+01 | 1.800000e+01 | 21.62%
0.4s| 1000 | 291 | 8184 | 7.9 |7314k| 15 | - | 27 | 118 | 27 | 127 | 205 | 4 | 207 | 1.483333e+01 | 1.800000e+01 | 21.35%
0.4s| 1100 | 301 | 8744 | 7.7 |7327k| 15 | - | 27 | 118 | 27 | 129 | 237 | 4 | 207 | 1.483333e+01 | 1.800000e+01 | 21.35%
0.4s| 1200 | 291 | 9119 | 7.4 |7327k| 15 | 13 | 27 | 118 | 27 | 127 | 248 | 4 | 207 | 1.500000e+01 | 1.800000e+01 | 20.00%
0.4s| 1300 | 277 | 9634 | 7.2 |7327k| 15 | - | 27 | 118 | 27 | 127 | 282 | 4 | 207 | 1.500000e+01 | 1.800000e+01 | 20.00%
0.5s| 1400 | 277 | 10169 | 7.1 |7343k| 15 | - | 27 | 118 | 27 | 128 | 311 | 4 | 209 | 1.500000e+01 | 1.800000e+01 | 20.00%
0.5s| 1500 | 275 | 10821 | 7.0 |7355k| 15 | - | 27 | 118 | 27 | 127 | 357 | 4 | 209 | 1.516667e+01 | 1.800000e+01 | 18.68%
0.6s| 1600 | 263 | 11413 | 7.0 |7373k| 15 | 12 | 27 | 118 | 27 | 127 | 416 | 4 | 209 | 1.516667e+01 | 1.800000e+01 | 18.68%
0.6s| 1700 | 247 | 11845 | 6.8 |7391k| 15 | - | 27 | 118 | 27 | 127 | 443 | 4 | 209 | 1.533333e+01 | 1.800000e+01 | 17.39%
0.7s| 1800 | 227 | 12408 | 6.7 |7391k| 15 | - | 27 | 118 | 27 | 128 | 492 | 4 | 209 | 1.533333e+01 | 1.800000e+01 | 17.39%
0.7s| 1900 | 197 | 12923 | 6.7 |7391k| 15 | - | 27 | 118 | 27 | 130 | 522 | 4 | 212 | 1.533333e+01 | 1.800000e+01 | 17.39%
0.8s| 2000 | 175 | 13619 | 6.7 |7414k| 15 | 11 | 27 | 118 | 27 | 129 | 581 | 4 | 215 | 1.546667e+01 | 1.800000e+01 | 16.38%
time | node | left |LP iter|LP it/n| mem |mdpt |frac |vars |cons |cols |rows |cuts |confs|strbr| dualbound | primalbound | gap
0.8s| 2100 | 155 | 14065 | 6.6 |7414k| 15 | - | 27 | 118 | 27 | 129 | 612 | 4 | 221 | 1.550000e+01 | 1.800000e+01 | 16.13%
0.8s| 2200 | 135 | 14525 | 6.5 |7414k| 15 | - | 27 | 118 | 27 | 132 | 628 | 5 | 224 | 1.566667e+01 | 1.800000e+01 | 14.89%
0.8s| 2300 | 105 | 14944 | 6.4 |7414k| 15 | 10 | 27 | 118 | 27 | 128 | 641 | 5 | 226 | 1.566667e+01 | 1.800000e+01 | 14.89%
0.9s| 2400 | 79 | 15422 | 6.3 |7414k| 15 | - | 27 | 118 | 27 | 130 | 671 | 5 | 229 | 1.566667e+01 | 1.800000e+01 | 14.89%
0.9s| 2500 | 45 | 15867 | 6.2 |7414k| 15 | 10 | 27 | 118 | 27 | 129 | 704 | 5 | 233 | 1.583333e+01 | 1.800000e+01 | 13.68%
0.9s| 2600 | 3 | 16380 | 6.2 |7414k| 15 | 14 | 27 | 118 | 27 | 134 | 730 | 5 | 243 | 1.662448e+01 | 1.800000e+01 | 8.27%
SCIP Status : problem is solved [optimal solution found]
Solving Time (sec) : 0.93
Solving Nodes : 2607
Primal Bound : +1.80000000000000e+01 (329 solutions)
Dual Bound : +1.80000000000000e+01
Gap : 0.00 %

We can navigate through the menus step-by-step and get a list of available options and submenus. Therefore, we select "set" to change settings, "heuristics" to change settings of primal heuristics, and "shifting" for that particular heuristic. Then we see a list of parameters (and yet another submenu for advanced parameters), and disable this heuristic by setting its calling frequency to -1. If we already know the path to a certain setting, we can directly type it (as for the rounding heuristic in the above example). Note that we do not have to use the full names, but we may use short versions, as long as they are unique.

To solve a problem a second time, we have to read it in again before starting the optimization process.

SCIP> set default
reset parameters to their default values
SCIP> set heuristics emphasis
aggressive sets heuristics <aggressive>
default sets heuristics settings to <default>
fast sets heuristics <fast>
off turns <off> all heuristics
SCIP/set/heuristics/emphasis> aggr
heuristics/ofins/freq = 20
heuristics/gins/freq = 10
heuristics/pscostdiving/freq = 5
heuristics/pscostdiving/maxlpiterofs = 1500
heuristics/pscostdiving/maxlpiterquot = 0.075
heuristics/fracdiving/freq = 5
heuristics/fracdiving/maxlpiterofs = 1500
heuristics/fracdiving/maxlpiterquot = 0.075
heuristics/veclendiving/freq = 5
heuristics/veclendiving/maxlpiterofs = 1500
heuristics/veclendiving/maxlpiterquot = 0.075
heuristics/distributiondiving/freq = 5
heuristics/distributiondiving/maxlpiterofs = 1500
heuristics/distributiondiving/maxlpiterquot = 0.075
heuristics/coefdiving/freq = 5
heuristics/coefdiving/maxlpiterofs = 1500
heuristics/coefdiving/maxlpiterquot = 0.075
heuristics/linesearchdiving/freq = 5
heuristics/linesearchdiving/maxlpiterofs = 1500
heuristics/linesearchdiving/maxlpiterquot = 0.075
heuristics/guideddiving/freq = 5
heuristics/guideddiving/maxlpiterofs = 1500
heuristics/guideddiving/maxlpiterquot = 0.075
heuristics/reoptsols/freq = 20
heuristics/trivialnegation/freq = 20
heuristics/trivial/freq = 20
heuristics/clique/freq = 20
heuristics/locks/freq = 20
heuristics/vbounds/freq = 20
heuristics/shiftandpropagate/freq = 20
heuristics/zeroobj/freq = 20
heuristics/repair/freq = 20
heuristics/randrounding/freq = 10
heuristics/shifting/freq = 5
heuristics/intshifting/freq = 5
heuristics/twoopt/freq = 20
heuristics/fixandinfer/freq = 20
heuristics/feaspump/freq = 10
heuristics/feaspump/maxlpiterofs = 1500
heuristics/feaspump/maxlpiterquot = 0.015
heuristics/nlpdiving/freq = 5
heuristics/intdiving/freq = 20
heuristics/actconsdiving/freq = 20
heuristics/objpscostdiving/freq = 10
heuristics/objpscostdiving/maxlpiterofs = 1500
heuristics/objpscostdiving/maxlpiterquot = 0.015
heuristics/rootsoldiving/freq = 10
heuristics/rootsoldiving/maxlpiterofs = 1500
heuristics/rootsoldiving/maxlpiterquot = 0.015
heuristics/octane/freq = 20
heuristics/rens/freq = 20
heuristics/alns/freq = 10
heuristics/rins/freq = 13
heuristics/localbranching/freq = 20
heuristics/mutation/freq = 20
heuristics/lpface/freq = 8
heuristics/crossover/freq = 15
heuristics/dins/freq = 20
heuristics/bound/freq = 20
heuristics/undercover/freq = 20
heuristics/proximity/freq = 20
heuristics/mpec/freq = 25
heuristics/multistart/freq = 20
heuristics/rens/nodesofs = 2000
heuristics/rens/minfixingrate = 0.3
heuristics/crossover/nwaitingnodes = 20
heuristics/crossover/dontwaitatroot = TRUE
heuristics/crossover/nodesquot = 0.15
heuristics/crossover/minfixingrate = 0.5
SCIP> set limits nodes 200
limits/nodes = 200
SCIP> read check/instances/MIP/stein27.fzn
read problem <check/instances/MIP/stein27.fzn>
============
original problem has 29 variables (29 bin, 0 int, 0 impl, 0 cont) and 118 constraints
SCIP> optimize
feasible solution found by trivial heuristic after 0.0 seconds, objective value 2.700000e+01
presolving:
(round 1, fast) 2 del vars, 0 del conss, 0 add conss, 0 chg bounds, 0 chg sides, 0 chg coeffs, 0 upgd conss, 0 impls, 0 clqs
(round 2, exhaustive) 2 del vars, 0 del conss, 0 add conss, 0 chg bounds, 0 chg sides, 0 chg coeffs, 118 upgd conss, 0 impls, 0 clqs
(0.0s) probing cycle finished: starting next cycle
Deactivated symmetry handling methods, since SCIP was built without symmetry detector (SYM=none).
presolving (3 rounds: 3 fast, 2 medium, 2 exhaustive):
2 deleted vars, 0 deleted constraints, 0 added constraints, 0 tightened bounds, 0 added holes, 0 changed sides, 0 changed coefficients
0 implications, 0 cliques
presolved problem has 27 variables (27 bin, 0 int, 0 impl, 0 cont) and 118 constraints
1 constraints of type <knapsack>
117 constraints of type <logicor>
transformed objective value is always integral (scale: 1)
Presolving Time: 0.01
transformed 1/1 original solutions to the transformed problem space
time | node | left |LP iter|LP it/n| mem |mdpt |frac |vars |cons |cols |rows |cuts |confs|strbr| dualbound | primalbound | gap
b 0.0s| 1 | 0 | 0 | - |8560k| 0 | - | 27 | 118 | 27 | 117 | 0 | 0 | 0 | 1.300000e+01 | 1.900000e+01 | 46.15%
0.0s| 1 | 0 | 27 | - |8560k| 0 | 27 | 27 | 118 | 27 | 117 | 0 | 0 | 0 | 1.300000e+01 | 1.900000e+01 | 46.15%
G 0.0s| 1 | 0 | 27 | - |8592k| 0 | - | 27 | 118 | 27 | 117 | 0 | 0 | 0 | 1.300000e+01 | 1.900000e+01 | 46.15%
0.0s| 1 | 0 | 68 | - |8936k| 0 | 27 | 27 | 118 | 27 | 120 | 3 | 0 | 0 | 1.300000e+01 | 1.900000e+01 | 46.15%
G 0.0s| 1 | 0 | 68 | - |8953k| 0 | - | 27 | 118 | 27 | 120 | 0 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 77 | - |8965k| 0 | 24 | 27 | 118 | 27 | 123 | 6 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
G 0.0s| 1 | 0 | 77 | - |8966k| 0 | - | 27 | 118 | 27 | 123 | 0 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 88 | - |8995k| 0 | 24 | 27 | 118 | 27 | 124 | 7 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 106 | - |9008k| 0 | 27 | 27 | 118 | 27 | 125 | 8 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 118 | - |9142k| 0 | 26 | 27 | 118 | 27 | 126 | 9 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 126 | - |9155k| 0 | 24 | 27 | 118 | 27 | 127 | 10 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 146 | - |9169k| 0 | 27 | 27 | 118 | 27 | 128 | 11 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 165 | - |9423k| 0 | 27 | 27 | 118 | 27 | 130 | 13 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 179 | - |9437k| 0 | 26 | 27 | 118 | 27 | 131 | 14 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 191 | - |9451k| 0 | 27 | 27 | 118 | 27 | 132 | 15 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
time | node | left |LP iter|LP it/n| mem |mdpt |frac |vars |cons |cols |rows |cuts |confs|strbr| dualbound | primalbound | gap
0.0s| 1 | 0 | 203 | - |9482k| 0 | 27 | 27 | 118 | 27 | 135 | 18 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.0s| 1 | 0 | 208 | - |9496k| 0 | 27 | 27 | 118 | 27 | 136 | 19 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.1s| 1 | 0 | 216 | - |9511k| 0 | 27 | 27 | 118 | 27 | 137 | 20 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.1s| 1 | 0 | 236 | - |9526k| 0 | 27 | 27 | 118 | 27 | 139 | 22 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.1s| 1 | 0 | 250 | - | 10M| 0 | 27 | 27 | 118 | 27 | 140 | 23 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.1s| 1 | 0 | 258 | - | 10M| 0 | 27 | 27 | 118 | 27 | 140 | 24 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.1s| 1 | 0 | 272 | - | 10M| 0 | 26 | 27 | 118 | 27 | 141 | 25 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.1s| 1 | 0 | 283 | - | 10M| 0 | 26 | 27 | 118 | 27 | 142 | 26 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.1s| 1 | 0 | 292 | - | 10M| 0 | 26 | 27 | 118 | 27 | 143 | 27 | 0 | 0 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.1s| 1 | 2 | 292 | - | 10M| 0 | 26 | 27 | 118 | 27 | 143 | 27 | 0 | 26 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.1s| 100 | 33 | 1029 | 7.4 | 10M| 9 | - | 27 | 118 | 27 | 127 | 27 | 3 | 168 | 1.300000e+01 | 1.800000e+01 | 38.46%
0.2s| 200 | 113 | 3150 | 14.4 | 10M| 10 | 14 | 27 | 118 | 27 | 127 | 35 | 4 | 193 | 1.352381e+01 | 1.800000e+01 | 33.10%
SCIP Status : solving was interrupted [node limit reached]
Solving Time (sec) : 0.20
Solving Nodes : 200
Primal Bound : +1.80000000000000e+01 (347 solutions)
Dual Bound : +1.35238095238095e+01
Gap : 33.10 %

Okay, what happened here? First, we reset all parameters to their default values, using "set default". Next, we loaded some meta-parameter settings (also see the FAQ), to apply primal heuristics more aggressively. SCIP shows us, which single parameters it changed therefore. Additionally, for pedagogical purposes, we set the node limit to 200. Now, the optimal solution is already found at the root node, by a heuristic which is deactivated by default. Then, after node 200, the user defined node limit is reached which interrupts the solving process, We see that now in the short status report, primal and dual bound are different, thus, the problem is not solved yet. Nevertheless, we could access statistics, see the current incumbent solution, change parameters and so on. Entering "optimize" we continue the solving process from the point on at which it has been interrupted.

Once you found a non-default parameter setting that you wish to save and use in the future, use either the command

SCIP> set save settingsfile.set
saved parameter file <settingsfile.set>

to save all parameter values to the specified file, or

SCIP> set diffsave settingsfile.set
saved non-default parameter settings to file <settingsfile.set>

in order to save only the nondefault parameters. The latter has several advantages, you can, e.g., combine parameter settings from multiple settings files stored by the latter command, as long as they only affect mutually exclusive parameter values.

For loading a previously stored settings file, use the "load" command:

SCIP> set load settingsfile.set
loaded parameter file <settingsfile.set>

Special attention should be drawn to the reserved settings file name "scip.set"; whenever the SCIP interactive shell is started from a working directory that contains a settings file with the name "scip.set", it will be automatically replace the default settings.

For using special settings for automated tests as described in How to run automated tests with SCIP, save your custom settings in a subdirectory "SCIP_HOME/settings".

We hope this tutorial gave you an overview of what is possible using the SCIP interactive shell. Please also read our Frequently Asked Questions (FAQ), in particular the section Using SCIP as a standalone MIP/MINLP-Solver.