Using SCIP to Solve Your Favorite Integer Optimization Problem - - PowerPoint PPT Presentation

using scip to solve your favorite integer optimization
SMART_READER_LITE
LIVE PREVIEW

Using SCIP to Solve Your Favorite Integer Optimization Problem - - PowerPoint PPT Presentation

Using SCIP to Solve Your Favorite Integer Optimization Problem Gregor Hendel, hendel@zib.de, www.zib.de/hendel Monash University, Melbourne March 12, 2019 Gregor Hendel Using SCIP 1/78 Zuse Institute Berlin Fast Algorithms, Fast


slide-1
SLIDE 1

Using SCIP to Solve Your Favorite Integer Optimization Problem

Gregor Hendel, hendel@zib.de, www.zib.de/hendel Monash University, Melbourne March 12, 2019

Gregor Hendel – Using SCIP 1/78

slide-2
SLIDE 2

Zuse Institute Berlin – Fast Algorithms, Fast Computers

A research institute and computing center of the State of Berlin with research units:

  • Numerical Analysis and Modeling
  • Visualization and Data Analysis
  • Optimization:

Energy – Transportation – Health – Mathematical Optimization Methods

  • Scientific Information Systems
  • Computer Science and High Performance Computing

Gregor Hendel – Using SCIP 2/78

slide-3
SLIDE 3

What is SCIP?

SCIP (Solving Constraint Integer Programs) . . .

  • provides a full-scale MIP and MINLP solver,
  • is constraint based,
  • incorporates
  • MIP features (cutting planes, LP relaxation), and
  • MINLP features (spatial branch-and-bound, OBBT)
  • CP features (domain propagation),
  • SAT-solving features (conflict analysis, restarts),
  • is a branch-cut-and-price framework,
  • has a modular structure via plugins,
  • is free for academic purposes,
  • and is available in source-code under http://scip.zib.de !

Gregor Hendel – Using SCIP 3/78

slide-4
SLIDE 4

Meet the SCIP Team

31 active developers

  • 7 running Bachelor and Master projects
  • 16 running PhD projects
  • 8 postdocs and professors

4 development centers in Germany

  • ZIB: SCIP, SoPlex, UG, ZIMPL
  • TU Darmstadt: SCIP and SCIP-SDP
  • FAU Erlangen-N¨

urnberg: SCIP

  • RWTH Aachen: GCG

Many international contributors and users

  • more than 10 000 downloads per year from 100+ countries

Careers

  • 10 awards for Masters and PhD theses: MOS, EURO, GOR, DMV
  • 7 former developers are now building commercial optimization software at

CPLEX, FICO Xpress, Gurobi, MOSEK, and GAMS

Gregor Hendel – Using SCIP 4/78

slide-5
SLIDE 5

Outline

SCIP – Solving Constraint Integer Programs

The SCIP Optimization Suite (Mixed-) Integer Programs Constraint Integer Programming The Solving Process of SCIP Extending SCIP by Plugins http://scip.zib.de

Gregor Hendel – Using SCIP 5/78

slide-6
SLIDE 6

Outline

SCIP – Solving Constraint Integer Programs

The SCIP Optimization Suite (Mixed-) Integer Programs Constraint Integer Programming The Solving Process of SCIP Extending SCIP by Plugins http://scip.zib.de

Gregor Hendel – Using SCIP 6/78

slide-7
SLIDE 7

SCIP Optimization Suite

  • Toolbox for generating and solving constraint integer programs, in

particular Mixed Integer (Non-)Linear Programs.

  • free for academic use, available in source code

Gregor Hendel – Using SCIP 7/78

slide-8
SLIDE 8

SCIP Optimization Suite

  • Toolbox for generating and solving constraint integer programs, in

particular Mixed Integer (Non-)Linear Programs.

  • free for academic use, available in source code

ZIMPL

  • model and generate LPs, MIPs, and MINLPs

SCIP

  • MIP, MINLP and CIP solver, branch-cut-and-price framework

SoPlex

  • revised primal and dual simplex algorithm

GCG

  • generic branch-cut-and-price solver

UG

  • framework for parallelization of MIP and MINLP solvers

Gregor Hendel – Using SCIP 7/78

slide-9
SLIDE 9

The SCIP C API

  • C code and documentation
  • more than 800 000 lines of C code, 20% documentation
  • over 50 000 assertions and 5 000 debug messages
  • HowTos: plugins types, debugging, automatic testing
  • 10 examples illustrating the use of SCIP
  • 5 problem specific SCIP applications to solve Coloring, Steiner Tree, or

Multiobjective problems.

  • Interface and usability
  • Cross-platform availability due to CMake
  • user-friendly interactive shell
  • C++ wrapper classes
  • LP solvers: SoPlex, CPLEX, Gurobi, Xpress, CLP, MOSEK, QSopt
  • NLP solvers: IPOPT, FilterSQP, WORHP
  • over 2 300 parameters and 15 emphasis settings

Gregor Hendel – Using SCIP 8/78

slide-10
SLIDE 10

Interfaces to SCIP

  • interactive shell supports 11 different input formats

→ cip, cnf, flatzinc, rlp, lp, mps, opb, pip, wbo, zimpl, smps

  • C API/callable library
  • C++ wrapper classes
  • Python interface
  • Java JNI interface
  • AMPL
  • GAMS
  • Matlab (see also OPTI toolbox,

http://www.i2c2.aut.ac.nz/Wiki/OPTI/)

Gregor Hendel – Using SCIP 9/78

slide-11
SLIDE 11

Getting help

If you should ever get stuck, you can . . .

  • 1. type help in the interactive shell
  • 2. read the documentation http://scip.zib.de/doc/html

→ FAQ, HowTos for each plugin type, debugging, automatic testing, . . .

  • 3. search or post on Stack Overflow using the tag scip (more than 100

questions already answered)

  • 4. active mailing list scip@zib.de (350+ members)
  • search the mailing list archive (append site:listserv/pipermail/scip)
  • register http://listserv.zib.de/mailman/listinfo/scip/ and post

Gregor Hendel – Using SCIP 10/78

slide-12
SLIDE 12

Outline

SCIP – Solving Constraint Integer Programs

The SCIP Optimization Suite (Mixed-) Integer Programs Constraint Integer Programming The Solving Process of SCIP Extending SCIP by Plugins http://scip.zib.de

Gregor Hendel – Using SCIP 11/78

slide-13
SLIDE 13

What is a good diet?

Product Servings Energy(kj) Protein(g) Calcium(g) Price(ct) Oatmeal 4 110 4 2 3 Chicken 3 205 32 12 24 Eggs 2 160 13 54 13 Milk 8 160 8 284 9 Pie 2 420 4 22 20 Pork 2 260 14 80 19 Needed per day:

  • Energy: 2000 kj
  • Protein: 55g
  • Calcium: 800 mg

Gregor Hendel – Using SCIP 12/78

slide-14
SLIDE 14

What is a good diet?

Product Servings Energy(kj) Protein(g) Calcium(g) Price(ct) Oatmeal 4 110 4 2 3 Chicken 3 205 32 12 24 Eggs 2 160 13 54 13 Milk 8 160 8 284 9 Pie 2 420 4 22 20 Pork 2 260 14 80 19 Needed per day:

  • Energy: 2000 kj
  • Protein: 55g
  • Calcium: 800 mg

Task: Find a diet satisfying all nutritional requirements at minimum cost!

Gregor Hendel – Using SCIP 12/78

slide-15
SLIDE 15

The Diet LP

Find a diet satisfying all nutritional requirements at minimum cost! Our nutrition plan should be expressed as x ∈ R6

≥0.

  • Energy: 2000 kj
  • Protein: 55g
  • Calcium: 800 mg

Gregor Hendel – Using SCIP 13/78

slide-16
SLIDE 16

The Diet LP

Find a diet satisfying all nutritional requirements at minimum cost! Our nutrition plan should be expressed as x ∈ R6

≥0.

min 3xoat + 24xChi + 13xEgg + 9xMil + 20xPie + 19xPor

  • Energy: 2000 kj
  • Protein: 55g
  • Calcium: 800 mg

Gregor Hendel – Using SCIP 13/78

slide-17
SLIDE 17

The Diet LP

Find a diet satisfying all nutritional requirements at minimum cost! Our nutrition plan should be expressed as x ∈ R6

≥0.

min 3xoat + 24xChi + 13xEgg + 9xMil + 20xPie + 19xPor

  • Energy: 2000 kj

110xoat + 205xChi + 160xEgg + 160xMil + 420xPie + 260xPor ≥ 2000

  • Protein: 55g
  • Calcium: 800 mg

Gregor Hendel – Using SCIP 13/78

slide-18
SLIDE 18

The Diet LP

Find a diet satisfying all nutritional requirements at minimum cost! Our nutrition plan should be expressed as x ∈ R6

≥0.

min 3xoat + 24xChi + 13xEgg + 9xMil + 20xPie + 19xPor

  • Energy: 2000 kj

110xoat + 205xChi + 160xEgg + 160xMil + 420xPie + 260xPor ≥ 2000

  • Protein: 55g

4xoat + 32xChi + 13xEgg + 8xMil + 4xPie + 14xPor ≥ 55

  • Calcium: 800 mg

2xoat + 12xChi + 54xEgg + 284xMil + 22xPie + 80xPor ≥ 800

Gregor Hendel – Using SCIP 13/78

slide-19
SLIDE 19

Diet → MIP

Diet Problem Only an integer vector x ∈ Z6

≥0 is truly feasible, because food such as eggs are

unsplittable. min (3 24 13 9 20 19) x s.t.    110 205 160 160 420 260 4 32 13 8 4 14 2 12 54 284 22 80   x ≥    2000 55 800    x ≥ 0 xi ∈ Z ∀i ∈ {1, . . . , 6}

Gregor Hendel – Using SCIP 14/78

slide-20
SLIDE 20

Diet → MIP

Diet Problem Only an integer vector x ∈ Z6

≥0 is truly feasible, because food such as eggs are

unsplittable. min (3 24 13 9 20 19) x s.t.    110 205 160 160 420 260 4 32 13 8 4 14 2 12 54 284 22 80   x ≥    2000 55 800    x ≥ 0 xi ∈ Z ∀i ∈ {1, . . . , 6} General MIP min cTx s.t. Ax ≥ b x ≥ xi ∈ Z ∀i ∈ I ⊆ {1, . . . , n} (Mixed Integer Program)

Gregor Hendel – Using SCIP 14/78

slide-21
SLIDE 21

Simple graphs

  • A simple graph G is a tuple (V , E) of
  • |V | = n nodes and
  • m = |E| edges connecting pairs of nodes, i.e. E ⊆

V

2

  • .
  • nodes may have weights/demands w : V → R
  • edges may have associated costs c : E → R

v1 v2 v3 v4 v1,1 v1,2 v1,3 v2,1 v2,2 v2,3

Gregor Hendel – Using SCIP 15/78

slide-22
SLIDE 22

Classical Optimization Problems On Graphs

Most of the classical optimization problems on graphs can be formulated as Mixed Integer Programs.

  • Max. stable set
  • Min. vertex cover
  • Max. matching
  • Graph coloring
  • Traveling salesman

problem

  • Steiner tree problem
  • . . .

Gregor Hendel – Using SCIP 16/78

slide-23
SLIDE 23

Classical Optimization Problems On Graphs

Most of the classical optimization problems on graphs can be formulated as Mixed Integer Programs.

  • Max. stable set
  • Min. vertex cover
  • Max. matching
  • Graph coloring
  • Traveling salesman

problem

  • Steiner tree problem
  • . . .

Maximum stable set: Find a set of vertices of maximum cardinality without a connecting edge.

Gregor Hendel – Using SCIP 16/78

slide-24
SLIDE 24

Classical Optimization Problems On Graphs

Most of the classical optimization problems on graphs can be formulated as Mixed Integer Programs.

  • Max. stable set
  • Min. vertex cover
  • Max. matching
  • Graph coloring
  • Traveling salesman

problem

  • Steiner tree problem
  • . . .

Maximum stable set: Find a set of vertices of maximum cardinality without a connecting edge. Integer Program: max 1Tx s.t. xv + xw ≤ 1 ∀ {v, w} ∈ E s.t. xv ∈ {0, 1} ∀ v ∈ V

Gregor Hendel – Using SCIP 16/78

slide-25
SLIDE 25

Outline

SCIP – Solving Constraint Integer Programs

The SCIP Optimization Suite (Mixed-) Integer Programs Constraint Integer Programming The Solving Process of SCIP Extending SCIP by Plugins http://scip.zib.de

Gregor Hendel – Using SCIP 17/78

slide-26
SLIDE 26

An Example: the Traveling Salesman Problem

Definition (TSP) Given a complete graph G = (V , E) and distances de for all e ∈ E: Find a Hamiltonian cycle (cycle containing all nodes, tour) of minimum length. K8

Gregor Hendel – Using SCIP 18/78

slide-27
SLIDE 27

An Example: the Traveling Salesman Problem

Definition (TSP) Given a complete graph G = (V , E) and distances de for all e ∈ E: Find a Hamiltonian cycle (cycle containing all nodes, tour) of minimum length. K8

Gregor Hendel – Using SCIP 18/78

slide-28
SLIDE 28

An Example: the Traveling Salesman Problem

Definition (TSP) Given a complete graph G = (V , E) and distances de for all e ∈ E: Find a Hamiltonian cycle (cycle containing all nodes, tour) of minimum length.

Gregor Hendel – Using SCIP 18/78

slide-29
SLIDE 29

What is a Constraint Integer Program?

Mixed Integer Program Objective function: ⊲ linear function Feasible set: ⊲ described by linear constraints Variable domains: ⊲ real or integer values

min cT x s.t. Ax ≤ b (xI , xC ) ∈ ❩I × ❘C

Constraint Program Objective function: ⊲ arbitrary function Feasible set: ⊲ given by arbitrary constraints Variable domains: ⊲ arbitrary (usually finite)

min c(x) s.t. x ∈ F (xI , xN) ∈ ❩I × X

Gregor Hendel – Using SCIP 19/78

slide-30
SLIDE 30

TSP – Integer Programming Formulation

Given

  • complete graph G = (V , E)
  • distances de > 0 for all e ∈ E

Binary variables

  • xe = 1 if edge e is used

xe K8

Gregor Hendel – Using SCIP 20/78

slide-31
SLIDE 31

TSP – Integer Programming Formulation

Given

  • complete graph G = (V , E)
  • distances de > 0 for all e ∈ E

Binary variables

  • xe = 1 if edge e is used

xe K8 min

  • e∈E

de xe subject to

  • e∈δ(v)

xe = 2 ∀v ∈ V

  • e∈δ(S)

xe ≥ 2 ∀S ⊂ V , S = ∅ xe ∈ {0, 1} ∀e ∈ E

Gregor Hendel – Using SCIP 20/78

slide-32
SLIDE 32

TSP – Integer Programming Formulation

Given

  • complete graph G = (V , E)
  • distances de > 0 for all e ∈ E

Binary variables

  • xe = 1 if edge e is used

xe K8 min

  • e∈E

de xe subject to

  • e∈δ(v)

xe = 2 ∀v ∈ V

  • e∈δ(S)

xe ≥ 2 ∀S ⊂ V , S = ∅ xe ∈ {0, 1} ∀e ∈ E node degree

Gregor Hendel – Using SCIP 20/78

slide-33
SLIDE 33

TSP – Integer Programming Formulation

Given

  • complete graph G = (V , E)
  • distances de > 0 for all e ∈ E

Binary variables

  • xe = 1 if edge e is used

xe K8 min

  • e∈E

de xe subject to

  • e∈δ(v)

xe = 2 ∀v ∈ V

  • e∈δ(S)

xe ≥ 2 ∀S ⊂ V , S = ∅ xe ∈ {0, 1} ∀e ∈ E subtour elimination

Gregor Hendel – Using SCIP 20/78

slide-34
SLIDE 34

TSP – Integer Programming Formulation

Given

  • complete graph G = (V , E)
  • distances de > 0 for all e ∈ E

Binary variables

  • xe = 1 if edge e is used

xe K8 min

  • e∈E

de xe subject to

  • e∈δ(v)

xe = 2 ∀v ∈ V

  • e∈δ(S)

xe ≥ 2 ∀S ⊂ V , S = ∅ xe ∈ {0, 1} ∀e ∈ E distance

Gregor Hendel – Using SCIP 20/78

slide-35
SLIDE 35

TSP – Constraint Programming Formulation

Given

  • complete graph G = (V , E)
  • for each e ∈ E a distance de > 0

Integer variables

  • xv position of v ∈ V in tour

xv K8

Gregor Hendel – Using SCIP 21/78

slide-36
SLIDE 36

TSP – Constraint Programming Formulation

Given

  • complete graph G = (V , E)
  • for each e ∈ E a distance de > 0

Integer variables

  • xv position of v ∈ V in tour

1 2 3 4 5 6 7 8 min length(x1, . . . , xn) subject to alldifferent(x1, . . . , xn) xv ∈ {1, . . . , n} ∀v ∈ V

Gregor Hendel – Using SCIP 21/78

slide-37
SLIDE 37

What is a Constraint Integer Program?

Constraint Integer Program Objective function: ⊲ linear function Feasible set: ⊲ described by arbitrary constraints Variable domains: ⊲ real or integer values

min cT x s.t. x ∈ F (xI , xC ) ∈ ❩I × ❘C

Remark:

  • arbitrary objective or variables

modeled by constraints

Gregor Hendel – Using SCIP 22/78

slide-38
SLIDE 38

What is a Constraint Integer Program?

Constraint Integer Program Objective function: ⊲ linear function Feasible set: ⊲ described by arbitrary constraints Variable domains: ⊲ real or integer values

min

  • e∈E

de xe s.t.

  • e∈δ(v)

xe = 2 ∀ v ∈ V nosubtour(x) xe ∈ {0, 1} ∀ e ∈ E (CIP formulation of TSP)

Single nosubtour constraint rules

  • ut subtours (e.g. by domain prop-

agation). It may also separate sub- tour elimination inequalities.

Gregor Hendel – Using SCIP 22/78

slide-39
SLIDE 39

Mixed-Integer Nonlinear Programs (MINLPs)

min cTx s.t. gk(x) ≤ 0 ∀k ∈ [m] xi ∈ Z ∀i ∈ I ⊆ [n] xi ∈ [ℓi, ui] ∀i ∈ [n] The functions gk ∈ C 1([ℓ, u], R) can be

−1 1 −1 1 5 10

convex or

100 200 300 200 −200 200

nonconvex

Gregor Hendel – Using SCIP 23/78

slide-40
SLIDE 40

Application: Data Classification

Support Vector Machine, e.g., with ramp loss. min w Tw 2 + C n

n

  • i=1

(ξi + 2(1 − zi)) s.t. zi(yi(w Txi + b) − 1 + ξi) ≥ 0 ∀i ξi ∈ [0, 2], zi ∈ {0, 1} ∀i w ∈ Rd, b ∈ R

Gregor Hendel – Using SCIP 24/78

slide-41
SLIDE 41

Constraint Integer Programming

  • Mixed Integer Programs

MIP

Gregor Hendel – Using SCIP 25/78

slide-42
SLIDE 42

Constraint Integer Programming

  • Mixed Integer Programs
  • SATisfiability problems

MIP SAT

Gregor Hendel – Using SCIP 25/78

slide-43
SLIDE 43

Constraint Integer Programming

  • Mixed Integer Programs
  • SATisfiability problems
  • Pseudo-Boolean Optimization

PBO MIP SAT

Gregor Hendel – Using SCIP 25/78

slide-44
SLIDE 44

Constraint Integer Programming

  • Mixed Integer Programs
  • SATisfiability problems
  • Pseudo-Boolean Optimization
  • Mixed Integer Nonlinear Programs

MINLP PBO MIP SAT

Gregor Hendel – Using SCIP 25/78

slide-45
SLIDE 45

Constraint Integer Programming

  • Mixed Integer Programs
  • SATisfiability problems
  • Pseudo-Boolean Optimization
  • Mixed Integer Nonlinear Programs
  • Constraint Programming

CP MINLP PBO MIP SAT

Gregor Hendel – Using SCIP 25/78

slide-46
SLIDE 46

Constraint Integer Programming

  • Mixed Integer Programs
  • SATisfiability problems
  • Pseudo-Boolean Optimization
  • Mixed Integer Nonlinear Programs
  • Constraint Programming
  • Constraint Integer Programming

CP CIP MINLP PBO MIP SAT

Gregor Hendel – Using SCIP 25/78

slide-47
SLIDE 47

Constraint Integer Programming

  • Mixed Integer Programs
  • SATisfiability problems
  • Pseudo-Boolean Optimization
  • Mixed Integer Nonlinear Programs
  • Constraint Programming
  • Constraint Integer Programming

CP CIP MINLP PBO MIP SAT Relation to CP and MIP

  • Every MIP is a CIP. “MIP CIP”
  • Every CP over a finite domain space is a CIP. “FD CIP”

Gregor Hendel – Using SCIP 25/78

slide-48
SLIDE 48

Outline

SCIP – Solving Constraint Integer Programs

The SCIP Optimization Suite (Mixed-) Integer Programs Constraint Integer Programming The Solving Process of SCIP Extending SCIP by Plugins http://scip.zib.de

Gregor Hendel – Using SCIP 26/78

slide-49
SLIDE 49

Branch-and-bound

min cTx s.t. Ax ≥ b x ≥ xi ∈ Z ∀i ∈ I ⊆ {1, . . . , n} (Mixed Integer Program)

Gregor Hendel – Using SCIP 27/78

slide-50
SLIDE 50

SCIP Interactive Shell Basics

Basic Workflow read . . / check / i n s t a n c e s /MIP/ b e l l 5 . mps

  • ptimize

w r i t e s o l u t i o n mysolution . s o l q u i t Displaying information Use the display ... command to enter the menu and

  • obtain solution information
  • print the current transproblem to the console
  • display plugin information, e.g., list all available branching rules

Changing Settings Use the set ... command to list the settings menu.

Gregor Hendel – Using SCIP 28/78

slide-51
SLIDE 51

Important Parameters

Numerical parameters These must be set before reading a problem.

  • numerics/feastol, default 10−6
  • numerics/epsilon, default 10−9
  • numerics/infinity, default 1020

Limits

  • limits/time
  • limits/nodes
  • limits/gap
  • . . .

Randomization

  • randomization/randomseedshift
  • randomization/lpseed
  • randomization/permutationseed

Gregor Hendel – Using SCIP 29/78

slide-52
SLIDE 52

Operational Stages

Init Problem Transforming Free Transform Presolving Init Solve Solving Free Solve

Gregor Hendel – Using SCIP 30/78

slide-53
SLIDE 53

Operational Stages

Init Problem Transforming Free Transform Presolving Init Solve Solving Free Solve

  • Basic data structures are allocated and initialized.
  • User includes required plugins (or just takes default plugins).

Gregor Hendel – Using SCIP 30/78

slide-54
SLIDE 54

Problem Specification

Init Problem Transforming Free Transform Presolving Init Solve Solving Free Solve

  • User creates and modifies the original problem instance.
  • Problem creation is usually done in file readers.

Gregor Hendel – Using SCIP 31/78

slide-55
SLIDE 55

Define Variables (Binary Example)

SCIP_VAR* var; SCIP_CALL( // return value macro SCIPcreateVar ( scip , // SCIP pointer &var , // save in variable "x_1", // pass variable name 0.0, // lower bound 1.0, // upper bound 100.0 , // obj. value SCIP_VARTYPE_BINARY , // type TRUE , // initial FALSE , // removable NULL , NULL , NULL , // no callback functions NULL // no variable data ) ); SCIP_CALL( SCIPaddVar(scip , var) ); // add var.

Gregor Hendel – Using SCIP 32/78

slide-56
SLIDE 56

Diet Problem Constraint

SCIP_CALL( SCIPcreateConsLinear ( scip , // SCIP pointer &cons , // save in cons "energy", // name 6, // number of variables vars , // array of variables vals , // array of values ( coefficients ) 2000 , // left hand side SCIPinfinity (scip), // no right hand side (use for equation) TRUE , // initial? FALSE , // separate? TRUE , // enforce? TRUE , // check? TRUE , // propagate? FALSE , // local? FALSE , // modifable? FALSE , // dynamic? FALSE , // removable? FALSE // stick at node? )); SCIP_CALL( SCIPaddCons (scip , cons) ); // add constraint SCIP_CALL( SCIPreleaseCons (scip , &cons) ); // free

  • cons. space

MIPs are specified using linear constraints only (may be “upgraded”).

Gregor Hendel – Using SCIP 33/78

slide-57
SLIDE 57

Transformation

Init Problem Transforming Free Transform Presolving Init Solve Solving Free Solve

  • Creates a working copy of the original problem.

Gregor Hendel – Using SCIP 34/78

slide-58
SLIDE 58

Original and Transformed Problem Original CIP

Original variables Original constraints

Transformed CIP

Transformed variables Transformed constraints

  • data is copied into separate memory area
  • presolving and solving operate on transformed problem
  • original data can only be modified in problem modification stage

Gregor Hendel – Using SCIP 35/78

slide-59
SLIDE 59

Presolving

Init Problem Transforming Free Transform Presolving Init Solve Solving Free Solve

Gregor Hendel – Using SCIP 36/78

slide-60
SLIDE 60

Presolving

Task

  • reduce size of model by

removing irrelevant information

  • strengthen LP relaxation by

exploiting integrality information

  • make the LP relaxation

numerically more stable

  • extract useful information

Primal Reductions:

  • based on feasibility reasoning
  • no feasible solution is cut off

Dual Reductions:

  • consider objective function
  • at least one optimal solution remains

Gregor Hendel – Using SCIP 37/78

slide-61
SLIDE 61

Presolving Tips and Parameters

Use display presolvers to list all presolvers of SCIP. Disable Presolving Disable all presolving for a model s e t p r e s o l v i n g emphasis

  • f f

Deactivate single techniques s e t p r e s o l v i n g tworowbnd maxrounds 0 s e t propagating probing maxprerounds 0 s e t c o n s t r a i n t s components advanced maxprerounds 0 Aggressive Presolving s e t p r e s o l v i n g emphasis a g g r e s s i v e General Rule of Thumb Only deactivate single presolving techniques if you encounter performance problems.

Gregor Hendel – Using SCIP 38/78

slide-62
SLIDE 62

Solving

Init Problem Transforming Free Transform Presolving Init Solve Solving Free Solve

Gregor Hendel – Using SCIP 39/78

slide-63
SLIDE 63

Flow Chart SCIP

Processing Presolving Stop Node selection Processing Branching

Conflict analysis Primal heuristics Domain propagation

Solve LP Pricing Cuts

Enforce constraints Gregor Hendel – Using SCIP 40/78

slide-64
SLIDE 64

Flow Chart SCIP

Processing Presolving Stop Node selection Processing Branching

Conflict analysis Primal heuristics Domain propagation

Solve LP Pricing Cuts

Enforce constraints

Node selection

Gregor Hendel – Using SCIP 40/78

slide-65
SLIDE 65

Node Selection

Task

  • improve primal bound
  • keep comp. effort small
  • improve global dual bound

Techniques

  • basic rules
  • depth first search (DFS)

→ early feasible solutions

  • best bound search (BBS)

→ improve dual bound

  • best estimate search (BES)

→ improve primal bound

  • combinations
  • BBS or BES with plunging
  • hybrid BES/BBS
  • interleaved BES/BBS

Gregor Hendel – Using SCIP 41/78

slide-66
SLIDE 66

Node Selection Tips and Parameters

Available Node Selectors

d i s p l a y n o d e s e l e c t o r s node s e l e c t o r std p r i o r i t y memsave p r i o d e s c r i p t i o n − − − − − − − − − − − − −− − − − − − − − − − − −− − − − − − − − − − − − − − − − − − − − − − − e s t i m a t e 200000 100 best e s t i m a t e s e a r c h b f s 100000 best f i r s t s e a r c h . . . d f s 100000 depth f i r s t s e a r c h

Switching Node Selectors Only the node selector with highest standard priority is active. Use s e t n o d e s e l e c t i o n d f s s t d p r i o r i t y 1000000 to activate depth first search also in non-memsave mode.

Gregor Hendel – Using SCIP 42/78

slide-67
SLIDE 67

Flow Chart SCIP

Processing Presolving Stop Node selection Processing Branching

Conflict analysis Primal heuristics Domain propagation

Solve LP Pricing Cuts

Enforce constraints

Processing

Gregor Hendel – Using SCIP 43/78

slide-68
SLIDE 68

Flow Chart SCIP

Processing Presolving Stop Node selection Processing Branching

Conflict analysis Primal heuristics Domain propagation

Solve LP Pricing Cuts

Enforce constraints

Processing

Domain propagation Gregor Hendel – Using SCIP 43/78

slide-69
SLIDE 69

Domain Propagation

x1 x2 x3 x4

x1 x2 x3 x4

Task

  • simplify model locally
  • improve local dual bound
  • detect infeasibility

Techniques

  • constraint specific
  • each cons handler may provide a

propagation routine

  • reduced presolving (usually)
  • dual propagation
  • root reduced cost strengthening
  • objective function
  • special structures
  • variable bounds

Gregor Hendel – Using SCIP 44/78

slide-70
SLIDE 70

Flow Chart SCIP

Processing Presolving Stop Node selection Processing Branching

Conflict analysis Primal heuristics Domain propagation

Solve LP Pricing Cuts

Enforce constraints

Processing Solve LP

Gregor Hendel – Using SCIP 45/78

slide-71
SLIDE 71

LP Solving

  • LP solver is a black box
  • interface to different LP solvers:

SoPlex, CPLEX, XPress, Gurobi, CLP, . . .

  • primal/dual simplex
  • barrier with/without crossover
  • feasibility double-checked by SCIP
  • condition number check
  • resolution by changing parameters:

scaling, tolerances, solving from scratch, other simplex

Gregor Hendel – Using SCIP 46/78

slide-72
SLIDE 72

LP Solving Tips and Parameters

Most Important LP Parameters

  • lp/initalgorithm, lp/resolvealgorithm
  • Primal/Dual Simplex Algorithm
  • Barrier w and w/o crossover
  • lp/pricing
  • normally LP solver specific default
  • Devex
  • Steepest edge
  • Quick start steepest edge
  • lp/threads

Slow LP performance is a blocker for the solving process and can sometimes be manually tuned significantly.

Gregor Hendel – Using SCIP 47/78

slide-73
SLIDE 73

Flow Chart SCIP

Processing Presolving Stop Node selection Processing Branching

Conflict analysis Primal heuristics Domain propagation

Solve LP Pricing Cuts

Enforce constraints

Processing Pricing

Gregor Hendel – Using SCIP 48/78

slide-74
SLIDE 74

Flow Chart SCIP

Processing Presolving Stop Node selection Processing Branching

Conflict analysis Primal heuristics Domain propagation

Solve LP Pricing Cuts

Enforce constraints

Processing Cuts

Gregor Hendel – Using SCIP 49/78

slide-75
SLIDE 75

Cutting Plane Separation

Task

  • strengthen relaxation
  • add valid constraints
  • generate on demand

Techniques

  • general cuts
  • complemented MIR cuts
  • Gomory mixed integer cuts
  • strong Chv´

atal-Gomory cuts

  • implied bound cuts
  • reduced cost strengthening
  • problem specific cuts
  • 0-1 knapsack problem
  • stable set problem
  • 0-1 single node flow problem

Gregor Hendel – Using SCIP 50/78

slide-76
SLIDE 76

Cuts for the 0-1 Knapsack Problem

Feasible region: (b ∈ ❩+, aj ∈ ❩+ ∀ j ∈ N) X BK := { x ∈ {0, 1}n :

  • j∈N

ajxj ≤ b } Minimal Cover: C ⊆ N

j∈C

aj > b

j∈C\{i} aj ≤ b

∀ i ∈ C

Minimal Cover Inequality

  • j∈C

xj ≤ |C| − 1 5x1 + 6x2 + 2x3 + 2x4 ≤ 8 Minimal cover: C = {2, 3, 4} Minimal cover inequality: x2 + x3 + x4 ≤ 2

Gregor Hendel – Using SCIP 51/78

slide-77
SLIDE 77

Separation Tips and Parameters

Disable/Speed up/Emphasize All Separation s e t s e p a r a t i n g emphasis

  • f f / f a s t / a g g r e s s i v e

Disable Single Separation Techniques s e t s e p a r a t i n g c l i q u e f r e q −1 s e t c o n s t r a i n t s c a r d i n a l i t y s e p a f r e q −1 Some Important Parameters

  • separating/maxcuts, separating/maxcutsroot
  • separating/maxrounds, separating/maxroundsroot
  • separating/maxstallrounds, separating/maxstallroundsroot

Gregor Hendel – Using SCIP 52/78

slide-78
SLIDE 78

Flow Chart SCIP

Processing Presolving Stop Node selection Processing Branching

Conflict analysis Primal heuristics Domain propagation

Solve LP Pricing Cuts

Enforce constraints

Processing

Enforce constraints Gregor Hendel – Using SCIP 53/78

slide-79
SLIDE 79

Constraint Enforcement

LP solution may violate a constraint not contained in the relaxation. Enforcing is necessary for a correct implementation! Constraint handler resolves the infeasibility by ...

  • Reducing a variable’s domain,
  • Separating a cutting plane (may use integrality),
  • Adding a (local) constraint,
  • Creating a branching,
  • Concluding that the subproblem is infeasible and can be cut off, or
  • Just saying “solution infeasible”.

Gregor Hendel – Using SCIP 54/78

slide-80
SLIDE 80

Constraint Enforcement

Processing Presolving Stop Node selection Processing Branching

Conflict analysis Primal heuristics Domain propagation

Solve LP Pricing Cuts

Enforce constraints Enforce constraints

  • Reduced domain
  • Added constraint
  • Added cut
  • Branched
  • Cutoff
  • Infeasible
  • Feasible

Gregor Hendel – Using SCIP 55/78

slide-81
SLIDE 81

Constraint Enforcement

Processing Presolving Stop Node selection Processing Branching

Conflict analysis Primal heuristics Domain propagation

Solve LP Pricing Cuts

Enforce constraints Enforce constraints

  • Reduced domain
  • Added constraint
  • Added cut
  • Branched
  • Cutoff
  • Infeasible
  • Feasible

Gregor Hendel – Using SCIP 55/78

slide-82
SLIDE 82

Constraint Enforcement

Processing Presolving Stop Node selection Processing Branching

Conflict analysis Primal heuristics Domain propagation

Solve LP Pricing Cuts

Enforce constraints Enforce constraints

  • Reduced domain
  • Added constraint
  • Added cut
  • Branched
  • Cutoff
  • Infeasible
  • Feasible

Gregor Hendel – Using SCIP 55/78

slide-83
SLIDE 83

Constraint Enforcement

Processing Presolving Stop Node selection Processing Branching

Conflict analysis Primal heuristics Domain propagation

Solve LP Pricing Cuts

Enforce constraints Enforce constraints

  • Reduced domain
  • Added constraint
  • Added cut
  • Branched
  • Cutoff
  • Infeasible
  • Feasible

Gregor Hendel – Using SCIP 55/78

slide-84
SLIDE 84

Constraint Enforcement

Processing Presolving Stop Node selection Processing Branching

Conflict analysis Primal heuristics Domain propagation

Solve LP Pricing Cuts

Enforce constraints Enforce constraints

  • Reduced domain
  • Added constraint
  • Added cut
  • Branched
  • Cutoff
  • Infeasible
  • Feasible

Gregor Hendel – Using SCIP 55/78

slide-85
SLIDE 85

Constraint Enforcement

Processing Presolving Stop Node selection Processing Branching

Conflict analysis Primal heuristics Domain propagation

Solve LP Pricing Cuts

Enforce constraints Enforce constraints Enforce constraints

  • Reduced domain
  • Added constraint
  • Added cut
  • Branched
  • Cutoff
  • Infeasible
  • Feasible

Gregor Hendel – Using SCIP 55/78

slide-86
SLIDE 86

Constraint Enforcement

Processing Presolving Stop Node selection Processing Branching

Conflict analysis Primal heuristics Domain propagation

Solve LP Pricing Cuts

Enforce constraints Enforce constraints

  • Reduced domain
  • Added constraint
  • Added cut
  • Branched
  • Cutoff
  • Infeasible
  • Feasible

Gregor Hendel – Using SCIP 55/78

slide-87
SLIDE 87

Constraint Enforcement

Processing Presolving Stop Node selection Processing Branching

Conflict analysis Primal heuristics Domain propagation

Solve LP Pricing Cuts

Enforce constraints Enforce constraints

  • Reduced domain
  • Added constraint
  • Added cut
  • Branched
  • Cutoff
  • Infeasible
  • Feasible

Gregor Hendel – Using SCIP 55/78

slide-88
SLIDE 88

Flow Chart SCIP

Processing Presolving Stop Node selection Processing Branching

Conflict analysis Primal heuristics Domain propagation

Solve LP Pricing Cuts

Enforce constraints

Branching

Gregor Hendel – Using SCIP 56/78

slide-89
SLIDE 89

Branching Rules

Task

  • divide into (disjoint)

subproblems

  • improve local bounds

Techniques

  • branching on variables
  • most infeasible
  • least infeasible
  • random branching
  • strong branching
  • pseudocost
  • reliability
  • VSIDS
  • hybrid reliability/inference
  • branching on constraints
  • SOS1
  • SOS2

Gregor Hendel – Using SCIP 57/78

slide-90
SLIDE 90

Branching Rule Tips and Parameters

Branching Rule Selection Branching rules are applied in decreasing order of priority. SCIP> d i s p l a y branching branching r u l e p r i o r i t y maxdepth maxbddist − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − r e l p s c o s t 10000 −1 100.0% pscost 2000 −1 100.0% i n f e r e n c e 1000 −1 100.0% mostinf 100 −1 100.0% Reliability Branching Parameters All parameters prefixed with branching/relpscost/

  • sbiterquot, sbiterofs to increase the budget for strong branching
  • minreliable (= 1), maxreliable (= 5) to increase threshold to consider

pseudo costs as reliable

Gregor Hendel – Using SCIP 58/78

slide-91
SLIDE 91

Flow Chart SCIP

Processing Presolving Stop Node selection Processing Branching

Conflict analysis Primal heuristics Domain propagation

Solve LP Pricing Cuts

Enforce constraints Primal heuristics Gregor Hendel – Using SCIP 59/78

slide-92
SLIDE 92

Primal Heuristics

Task

  • improve primal bound
  • effective on average
  • guide remaining search

Techniques

  • structure-based
  • clique
  • variable bounds
  • rounding
  • possibly solve final LP
  • diving
  • least infeasible
  • guided
  • objective diving
  • objective feasibility pump
  • Large Neighborhood Search
  • RINS, local branching
  • RENS
  • Adaptive LNS
  • Completion of partial solutions

Gregor Hendel – Using SCIP 60/78

slide-93
SLIDE 93

Primal Heuristics Tips and Parameters

Disable/Speed Up/Emphasize Heuristics s e t h e u r i s t i c s emphasis

  • f f / f a s t / a g g r e s s i v e

Disable an individual heuristic via s e t h e u r i s t i c s feaspump f r e q −1 Important Parameters

  • heuristics/alns/nodesofs, heuristics/alns/nodesquot to increase

the computational budget of this LNS technique

  • heuristics/guideddiving/... lpsolvefreq, maxlpiterofs

maxlpiterquot to control the LP solving during this diving technique Advice Use emphasis settings. Do not attempt to individually tune heuristics by hand.

Gregor Hendel – Using SCIP 61/78

slide-94
SLIDE 94

Flow Chart SCIP

Processing Presolving Stop Node selection Processing Branching

Conflict analysis Primal heuristics Domain propagation

Solve LP Pricing Cuts

Enforce constraints Conflict analysis Gregor Hendel – Using SCIP 62/78

slide-95
SLIDE 95

Conflict Analysis

Task

  • Analyze infeasibility
  • Derive valid constraints
  • Help to prune other nodes

Techniques

  • Analyze:
  • Propagation conflicts
  • Infeasible LPs
  • Bound-exceeding LPs
  • Strong branching conflicts
  • Detection:
  • Cut in conflict graph
  • LP: Dual ray heuristic
  • Use conflicts:
  • Only for propagation
  • As cutting planes

Gregor Hendel – Using SCIP 63/78

slide-96
SLIDE 96

Operational Stages

Init Problem Transforming Free Transform Presolving Init Solve Solving Free Solve

Gregor Hendel – Using SCIP 64/78

slide-97
SLIDE 97

Outline

SCIP – Solving Constraint Integer Programs

The SCIP Optimization Suite (Mixed-) Integer Programs Constraint Integer Programming The Solving Process of SCIP Extending SCIP by Plugins http://scip.zib.de

Gregor Hendel – Using SCIP 65/78

slide-98
SLIDE 98

Different Tasks – Different Plugins

Different plugin classes are responsible of the following tasks.

  • 1. Presolving and node propagation
  • Constraint handlers
  • Presolvers
  • Propagators
  • 2. Separation
  • Constraint handlers
  • Separators
  • 3. Improving solutions
  • Primal heuristics
  • 4. Branching
  • Constraint handlers
  • Branching rules
  • 5. Node selection
  • Node selectors

Gregor Hendel – Using SCIP 66/78

slide-99
SLIDE 99

Structure of SCIP

SCIP

Primal Heuristic actcons diving coef diving cross

  • ver

dins feaspump fixand infer fracdiving guided diving intdiving int shifting linesearch diving local branching mutation subnlp

  • bjpscost

diving

  • ctane
  • neopt

pscost diving rens rins rootsol diving rounding shifting shift& prop simple rounding trivial trysol twoopt under cover veclen diving zi round Variable Event default Branch allfull strong full strong infer ence leastinf mostinf pscost random relps cost Conflict Constraint Handler and bound disjunc. count sols cumu lative indi cator integral knap sack linear linking logicor

  • r
  • rbi

tope quadr atic setppc soc sos1 sos2 var bound xor Cutpool LP clp cpx msk none qso spx xprs Dialog default Display default Node selector bfs dfs estimate hybrid estim restart dfs · · · Presolver bound shift dualfix implics intto binary probing trivial Impli cations Tree Reader ccg cip cnf fix lp mps

  • pb

ppm rlp sol sos zpl Pricer Separator clique cmir flow cover gomory implied bounds intobj mcf

  • dd

cycle rapid learn redcost strong cg zero half Propa gator pseudo

  • bj

root redcost vbound Relax

Gregor Hendel – Using SCIP 67/78

slide-100
SLIDE 100

Structure of SCIP

SCIP

Primal Heuristic actcons diving coef diving cross

  • ver

dins feaspump fixand infer fracdiving guided diving intdiving int shifting linesearch diving local branching mutation subnlp

  • bjpscost

diving

  • ctane
  • neopt

pscost diving rens rins rootsol diving rounding shifting shift& prop simple rounding trivial trysol twoopt under cover veclen diving zi round Variable Event default Branch allfull strong full strong infer ence leastinf mostinf pscost random relps cost Conflict Constraint Handler and bound disjunc. count sols cumu lative indi cator integral knap sack linear linking logicor

  • r
  • rbi

tope quadr atic setppc soc sos1 sos2 var bound xor Cutpool LP clp cpx msk none qso spx xprs Dialog default Display default Node selector bfs dfs estimate hybrid estim restart dfs · · · Presolver bound shift dualfix implics intto binary probing trivial Impli cations Tree Reader ccg cip cnf fix lp mps

  • pb

ppm rlp sol sos zpl Pricer Separator clique cmir flow cover gomory implied bounds intobj mcf

  • dd

cycle rapid learn redcost strong cg zero half Propa gator pseudo

  • bj

root redcost vbound Relax

Gregor Hendel – Using SCIP 67/78

slide-101
SLIDE 101

Structure of SCIP

SCIP

Primal Heuristic actcons diving coef diving cross

  • ver

dins feaspump fixand infer fracdiving guided diving intdiving int shifting linesearch diving local branching mutation subnlp

  • bjpscost

diving

  • ctane
  • neopt

pscost diving rens rins rootsol diving rounding shifting shift& prop simple rounding trivial trysol twoopt under cover veclen diving zi round Variable Event default Branch allfull strong full strong infer ence leastinf mostinf pscost random relps cost Conflict Constraint Handler and bound disjunc. count sols cumu lative indi cator integral knap sack linear linking logicor

  • r
  • rbi

tope quadr atic setppc soc sos1 sos2 var bound xor Cutpool LP clp cpx msk none qso spx xprs Dialog default Display default Node selector bfs dfs estimate hybrid estim restart dfs · · · Presolver bound shift dualfix implics intto binary probing trivial Impli cations Tree Reader ccg cip cnf fix lp mps

  • pb

ppm rlp sol sos zpl Pricer Separator clique cmir flow cover gomory implied bounds intobj mcf

  • dd

cycle rapid learn redcost strong cg zero half Propa gator pseudo

  • bj

root redcost vbound Relax

Gregor Hendel – Using SCIP 67/78

slide-102
SLIDE 102

Plugin based design

SCIP core

  • branching tree
  • variables
  • conflict analysis
  • solution pool
  • cut pool
  • statistics
  • clique table
  • implication graph
  • . . .

Gregor Hendel – Using SCIP 68/78

slide-103
SLIDE 103

Plugin based design

SCIP core

  • branching tree
  • variables
  • conflict analysis
  • solution pool
  • cut pool
  • statistics
  • clique table
  • implication graph
  • . . .

Plugins

  • external callback objects
  • interact with the framework through a very detailed interface

Gregor Hendel – Using SCIP 68/78

slide-104
SLIDE 104

Plugin based design

SCIP core

  • branching tree
  • variables
  • conflict analysis
  • solution pool
  • cut pool
  • statistics
  • clique table
  • implication graph
  • . . .

Plugins

  • external callback objects
  • interact with the framework through a very detailed interface
  • SCIP knows for each plugin type:
  • the number of available plugins
  • priority defining the calling order (usually)
  • SCIP does not know any structure behind a plugin

⇒ plugins are black boxes for the SCIP core

Gregor Hendel – Using SCIP 68/78

slide-105
SLIDE 105

Plugin based design

SCIP core

  • branching tree
  • variables
  • conflict analysis
  • solution pool
  • cut pool
  • statistics
  • clique table
  • implication graph
  • . . .

Plugins

  • external callback objects
  • interact with the framework through a very detailed interface
  • SCIP knows for each plugin type:
  • the number of available plugins
  • priority defining the calling order (usually)
  • SCIP does not know any structure behind a plugin

⇒ plugins are black boxes for the SCIP core ⇒ Very flexible branch-and-bound based search algorithm

Gregor Hendel – Using SCIP 68/78

slide-106
SLIDE 106

Types of Plugins

  • Constraint handler: assures feasibility, strengthens formulation
  • Separator: adds cuts, improves dual bound
  • Pricer: allows dynamic generation of variables
  • Heuristic: searches solutions, improves primal bound
  • Branching rule: how to divide the problem?
  • Node selection: which subproblem should be regarded next?
  • Presolver: simplifies the problem in advance, strengthens structure
  • Propagator: simplifies problem, improves dual bound locally
  • Reader: reads problems from different formats
  • Event handler: catches events (e.g., bound changes, new solutions)
  • Display: allows modification of output
  • . . .

Gregor Hendel – Using SCIP 69/78

slide-107
SLIDE 107

A closer look: branching rules

SCIP

Primal Heuristic actcons diving coef diving cross

  • ver

dins feaspump fixand infer fracdiving guided diving intdiving int shifting linesearch diving local branching mutation subnlp

  • bjpscost

diving

  • ctane
  • neopt

pscost diving rens rins rootsol diving rounding shifting shift& prop simple rounding trivial trysol twoopt under cover veclen diving zi round Variable Event default Branch allfull strong full strong infer ence leastinf mostinf pscost random relps cost Conflict Constraint Handler and bound disjunc. count sols cumu lative indi cator integral knap sack linear linking logicor

  • r
  • rbi

tope quadr atic setppc soc sos1 sos2 var bound xor Cutpool LP clp cpx msk none qso spx xprs Dialog default Display default Node selector bfs dfs estimate hybrid estim restart dfs · · · Presolver bound shift dualfix implics intto binary probing trivial Impli cations Tree Reader ccg cip cnf fix lp mps

  • pb

ppm rlp sol sos zpl Pricer Separator clique cmir flow cover gomory implied bounds intobj mcf

  • dd

cycle rapid learn redcost strong cg zero half Propa gator pseudo

  • bj

root redcost vbound Relax

Gregor Hendel – Using SCIP 70/78

slide-108
SLIDE 108

A closer look: branching rules

Branch allfull strong full strong infer ence leastinf mostinf pscost random relps cost u lative tegral Gregor Hendel – Using SCIP 70/78

slide-109
SLIDE 109

What does SCIP know about branching rules?

  • SCIP knows the number of available branching rules
  • each branching rule has a priority
  • SCIP calls the branching rule in decreasing order of priority
  • the interface defines the possible results of a call:
  • branched
  • reduced domains
  • added constraints
  • detected cutoff
  • did not run

Gregor Hendel – Using SCIP 71/78

slide-110
SLIDE 110

How does SCIP call a branching rule?

/* start timing */ SCIPclockStart (branchrule ->branchclock , set ); /* call external method */ SCIP_CALL( branchrule -> branchexeclp (set ->scip , branchrule , allowaddcons , result) ); /* stop timing */ SCIPclockStop (branchrule ->branchclock , set ); /* evaluate result */ if( *result != SCIP_CUTOFF && *result != SCIP_CONSADDED && *result != SCIP_REDUCEDDOM && *result != SCIP_SEPARATED && *result != SCIP_BRANCHED && *result != SCIP_DIDNOTRUN ) { SCIPerrorMessage ( "branchingrule <%s>returnedinvalidresultcode <%d>fromLP\ solutionbranching\n", branchrule ->name , *result ); return SCIP_INVALIDRESULT ; } Gregor Hendel – Using SCIP 72/78

slide-111
SLIDE 111

What can a plugin access?

Plugins are allowed to access all global (core) information

  • branching tree
  • variables
  • conflict analysis
  • solution pool
  • cut pool
  • statistics
  • clique table
  • implication graph
  • . . .

Gregor Hendel – Using SCIP 73/78

slide-112
SLIDE 112

What can a plugin access?

Plugins are allowed to access all global (core) information

  • branching tree
  • variables
  • conflict analysis
  • solution pool
  • cut pool
  • statistics
  • clique table
  • implication graph
  • . . .

Ideally, plugins should not access data of other plugins!!!

Gregor Hendel – Using SCIP 73/78

slide-113
SLIDE 113

What can a plugin access?

Plugins are allowed to access all global (core) information

  • branching tree
  • variables
  • conflict analysis
  • solution pool
  • cut pool
  • statistics
  • clique table
  • implication graph
  • . . .

Ideally, plugins should not access data of other plugins!!! Branching Rules

  • LP solution
  • variables
  • statistics

Gregor Hendel – Using SCIP 73/78

slide-114
SLIDE 114

Constraint Handlers

Constraint handlers

  • most powerful plugins in SCIP
  • define the feasible region
  • a single constraint may represent a whole set of inequalities

Functions

  • check and enforce feasibility of solutions
  • can add linear representation to LP relaxation
  • constraint-specific presolving, domain propagation, separation

Result

  • SCIP is constraint based
  • Advantage: flexibility
  • Disadvantage: limited global view

Gregor Hendel – Using SCIP 74/78

slide-115
SLIDE 115

Default Plugins

SCIP

Primal Heuristic actcons diving coef diving cross

  • ver

dins feaspump fixand infer fracdiving guided diving intdiving int shifting linesearch diving local branching mutation subnlp

  • bjpscost

diving

  • ctane
  • neopt

pscost diving rens rins rootsol diving rounding shifting shift& prop simple rounding trivial trysol twoopt under cover veclen diving zi round Variable Event default Branch allfull strong full strong infer ence leastinf mostinf pscost random relps cost Conflict Constraint Handler and bound disjunc. count sols cumu lative indi cator integral knap sack linear linking logicor

  • r
  • rbi

tope quadr atic setppc soc sos1 sos2 var bound xor Cutpool LP clp cpx msk none qso spx xprs Dialog default Display default Node selector bfs dfs estimate hybrid estim restart dfs · · · Presolver bound shift dualfix implics intto binary probing trivial Impli cations Tree Reader ccg cip cnf fix lp mps

  • pb

ppm rlp sol sos zpl Pricer Separator clique cmir flow cover gomory implied bounds intobj mcf

  • dd

cycle rapid learn redcost strong cg zero half Propa gator pseudo

  • bj

root redcost vbound Relax

Gregor Hendel – Using SCIP 75/78

slide-116
SLIDE 116

Extending SCIP

SCIP

Primal Heuristic actcons diving coef diving cross

  • ver

dins feaspump fixand infer fracdiving guided diving intdiving int shifting linesearch diving local branching mutation subnlp

  • bjpscost

diving

  • ctane
  • neopt

pscost diving rens rins rootsol diving rounding shifting shift& prop simple rounding trivial trysol twoopt under cover veclen diving zi round Variable Event default Branch allfull strong full strong infer ence leastinf mostinf pscost random relps cost Conflict Constraint Handler and bound disjunc. count sols cumu lative indi cator integral knap sack linear linking logicor

  • r
  • rbi

tope quadr atic setppc soc sos1 sos2 var bound xor Cutpool LP clp cpx msk none qso spx xprs Dialog default Display default Node selector bfs dfs estimate hybrid estim restart dfs · · · Presolver bound shift dualfix implics intto binary probing trivial Impli cations Tree Reader ccg cip cnf fix lp mps

  • pb

ppm rlp sol sos zpl Pricer Separator clique cmir flow cover gomory implied bounds intobj mcf

  • dd

cycle rapid learn redcost strong cg zero half Propa gator pseudo

  • bj

root redcost vbound Relax

Gregor Hendel – Using SCIP 76/78

slide-117
SLIDE 117

Extending SCIP

SCIP

Primal Heuristic actcons diving coef diving cross

  • ver

dins feaspump fixand infer fracdiving guided diving intdiving int shifting linesearch diving local branching mutation subnlp

  • bjpscost

diving

  • ctane
  • neopt

pscost diving rens rins rootsol diving rounding shifting shift& prop simple rounding trivial trysol twoopt under cover veclen diving default Variable Event default Branch allfull strong full strong infer ence leastinf mostinf pscost random relps cost Conflict Constraint Handler and bound disjunc. count sols cumu lative indi cator integral knap sack linear linking logicor

  • r
  • rbi

tope quadr atic setppc soc sos1 sos2 var bound default Cutpool LP clp cpx msk none qso spx default Dialog default Display default Node selector bfs dfs estimate hybrid estim default · · · Presolver bound shift dualfix implics intto binary probing default Impli cations Tree Reader ccg cip cnf fix lp mps

  • pb

ppm rlp sol sos default Pricer Separator clique cmir flow cover gomory implied bounds intobj mcf

  • dd

cycle rapid learn redcost strong cg default Propa gator pseudo

  • bj

root redcost default Relax

Gregor Hendel – Using SCIP 76/78

slide-118
SLIDE 118

Extending SCIP: TSP

SCIP

Primal Heuristic farthest insert coef diving 2-Opt dins feaspump fixand infer fracdiving guided diving intdiving int shifting linesearch diving local branching mutation subnlp

  • bjpscost

diving

  • ctane
  • neopt

pscost diving rens rins rootsol diving rounding shifting shift& prop simple rounding trivial trysol twoopt under cover veclen diving default Variable Event default sol found Branch allfull strong full strong infer ence leastinf mostinf pscost random relps cost Conflict Constraint Handler subtour bound disjunc. count sols cumu lative indi cator integral knap sack linear linking logicor

  • r
  • rbi

tope quadr atic setppc soc sos1 sos2 var bound default Cutpool LP clp cpx msk none qso spx default Dialog default Display default Node selector bfs dfs estimate hybrid estim default · · · Presolver bound shift dualfix implics intto binary probing default Impli cations Tree Reader tsp cip cnf fix lp mps

  • pb

ppm rlp sol sos default Pricer Separator clique cmir flow cover gomory implied bounds intobj mcf

  • dd

cycle rapid learn redcost strong cg default Propa gator pseudo

  • bj

root redcost default Relax

Gregor Hendel – Using SCIP 76/78

slide-119
SLIDE 119

Extending SCIP: Coloring

SCIP

Primal Heuristic init coef diving 2-Opt dins feaspump fixand infer fracdiving guided diving intdiving int shifting linesearch diving local branching mutation subnlp

  • bjpscost

diving

  • ctane
  • neopt

pscost diving rens rins rootsol diving rounding shifting shift& prop simple rounding trivial trysol twoopt under cover veclen diving default Variable Event default Branch Ryan& Foster strong Ryan& Foster infer ence leastinf mostinf pscost random relps cost Conflict Constraint Handler store Graph bound disjunc. count sols cumu lative indi cator integral knap sack linear linking logicor

  • r
  • rbi

tope quadr atic setppc soc sos1 sos2 var bound default Cutpool LP clp cpx msk none qso spx default Dialog default Display default Node selector bfs dfs estimate hybrid estim default · · · Presolver bound shift dualfix implics intto binary probing default Impli cations Tree Reader col csol cnf fix lp mps

  • pb

ppm rlp sol sos default Pricer coloring Separator clique cmir flow cover gomory implied bounds intobj mcf

  • dd

cycle rapid learn redcost strong cg default Propa gator pseudo

  • bj

root redcost default Relax

Gregor Hendel – Using SCIP 76/78

slide-120
SLIDE 120

Advanced Topics And Further Reading

Important SCIP topics not covered in this workshop:

  • branch-and-price: SCIP can be extended to a problem-specific

branch-cut-and-price solver

  • see The Bin Packing Example in C
  • see also GCG
  • allows for Benders decomposition since version 6.0, see Technical Report
  • browse older technical reports for details on recently added cutting plane

selection, primal heuristics, symmetry breaking, and much more

Gregor Hendel – Using SCIP 77/78

slide-121
SLIDE 121

Wrap-up

How to solve your MINLP optimization problem:

  • write down the mathematical description
  • modeling language, e.g., ZIMPL, generates input for MINLP solver
  • SCIP can even read ZIMPL files directly

MIP and MINLP solving

  • . . . is a bag of tricks
  • new tricks are introduced almost every day
  • advantages of SCIP
  • open source, you can see everything that happens
  • hundreds of parameters to play with
  • broad scope
  • easily extendable

Gregor Hendel – Using SCIP 78/78