Basic Concepts of Constraint Integer Programming

Similar documents
SCIP Workshop 2014, Berlin, September 30, Introduction to SCIP

Introduction to SCIP. Gregor Hendel, SCIP Introduction Day September 26, rd IMI-ISM-ZIB MODAL Workshop

SCIP Workshop Visit scip.zib.de/workshop2018 for all information. Tomorrow and on Thursday: Scientific Talks

Large neighbourhood Benders' search

The MIP-Solving-Framework SCIP

SCIP. 1 Introduction. 2 Model requirements. Contents. Stefan Vigerske, Humboldt University Berlin, Germany

Primal Heuristics in SCIP

Implementing Constraint Handlers in SCIP

Cloud Branching MIP workshop, Ohio State University, 23/Jul/2014

The Gurobi Optimizer. Bob Bixby

Motivation for Heuristics

The Gurobi Solver V1.0

Applied Mixed Integer Programming: Beyond 'The Optimum'

Welcome to the Webinar. What s New in Gurobi 7.5

Exploiting Degeneracy in MIP

Heuristics in Commercial MIP Solvers Part I (Heuristics in IBM CPLEX)

Advanced Use of GAMS Solver Links

Exact solutions to mixed-integer linear programming problems

Addressing degeneracy in the dual simplex algorithm using a decompositon approach

RENS. The optimal rounding. Timo Berthold

Solving Resource Allocation/Scheduling Problems with Constraint Integer Programming

Heuristics in MILP. Group 1 D. Assouline, N. Molyneaux, B. Morén. Supervisors: Michel Bierlaire, Andrea Lodi. Zinal 2017 Winter School

How to use your favorite MIP Solver: modeling, solving, cannibalizing. Andrea Lodi University of Bologna, Italy

Outline. Modeling. Outline DMP204 SCHEDULING, TIMETABLING AND ROUTING. 1. Models Lecture 5 Mixed Integer Programming Models and Exercises

Conflict Analysis in Mixed Integer Programming

The SCIP Optimization Suite 3.2

Algorithms II MIP Details

LaGO - A solver for mixed integer nonlinear programming

The Heuristic (Dark) Side of MIP Solvers. Asja Derviskadic, EPFL Vit Prochazka, NHH Christoph Schaefer, EPFL

On Mixed-Integer (Linear) Programming and its connection with Data Science

Benders in a nutshell Matteo Fischetti, University of Padova

The SCIP Optimization Suite 4.0

Solving lexicographic multiobjective MIPs with Branch-Cut-Price

Integer Optimization: Mathematics, Algorithms, and Applications

Restrict-and-relax search for 0-1 mixed-integer programs

Mixed Integer Programming Class Library (MIPCL)

Linear & Integer Programming: A Decade of Computation

MVE165/MMG630, Applied Optimization Lecture 8 Integer linear programming algorithms. Ann-Brith Strömberg

Introduction to Mathematical Programming IE496. Final Review. Dr. Ted Ralphs

Handling first-order linear constraints with SCIP

MVE165/MMG631 Linear and integer optimization with applications Lecture 9 Discrete optimization: theory and algorithms

Computational Integer Programming. Lecture 12: Branch and Cut. Dr. Ted Ralphs

State-of-the-Optimization using Xpress-MP v2006

Column Generation Based Primal Heuristics

Gurobi Guidelines for Numerical Issues February 2017

2. Modeling AEA 2018/2019. Based on Algorithm Engineering: Bridging the Gap Between Algorithm Theory and Practice - ch. 2

Integer Programming Chapter 9

Fundamentals of Integer Programming

Parallel Branch & Bound

Noncommercial Software for Mixed-Integer Linear Programming

Review of Mixed-Integer Nonlinear and Generalized Disjunctive Programming Methods

February 19, Integer programming. Outline. Problem formulation. Branch-andbound

3 INTEGER LINEAR PROGRAMMING

Penalty Alternating Direction Methods for Mixed- Integer Optimization: A New View on Feasibility Pumps

Primal Heuristics for Branch-and-Price Algorithms

Integrating Mixed-Integer Optimisation & Satisfiability Modulo Theories

The AIMMS Outer Approximation Algorithm for MINLP

Assessing Performance of Parallel MILP Solvers

Discrete Optimization with Decision Diagrams

Parallel and Distributed Optimization with Gurobi Optimizer

Rounding and Propagation Heuristics for Mixed Integer Programming

The AIMMS Outer Approximation Algorithm for MINLP

Wireless frequency auctions: Mixed Integer Programs and Dantzig-Wolfe decomposition

Branch-and-cut implementation of Benders decomposition Matteo Fischetti, University of Padova

Experiments with a Generic Dantzig-Wolfe Decomposition for Integer Programs

Modern Benders (in a nutshell)

Linear Programming. Course review MS-E2140. v. 1.1

SBB: A New Solver for Mixed Integer Nonlinear Programming

Algorithms for Decision Support. Integer linear programming models

5.3 Cutting plane methods and Gomory fractional cuts

SAS/OR 14.1 User s Guide: Mathematical Programming. The Mixed Integer Linear Programming Solver

Pivot and Gomory Cut. A MIP Feasibility Heuristic NSERC

A hybrid branch-and-bound approach for exact rational mixed-integer programming

Improving the heuristic performance of Benders decomposition

A Parallel Macro Partitioning Framework for Solving Mixed Integer Programs

The Mixed Integer Linear Programming Solver

Two-layer Network Design by Branch-and-Cut featuring MIP-based Heuristics

IBM ILOG CPLEX Optimization Studio CPLEX Parameters Reference. Version 12 Release 7 IBM

A. Atamturk. G.L. Nemhauser. M.W.P. Savelsbergh. Georgia Institute of Technology. School of Industrial and Systems Engineering.

Branching rules revisited

The Supporting Hyperplane Optimization Toolkit A Polyhedral Outer Approximation Based Convex MINLP Solver Utilizing a Single Branching Tree Approach

Using Multiple Machines to Solve Models Faster with Gurobi 6.0

A Lifted Linear Programming Branch-and-Bound Algorithm for Mixed Integer Conic Quadratic Programs

12/7/2006. Outline. Generalized Conflict Learning for Hybrid Discrete/Linear Optimization. Forward Conflict-Directed Search

A Nonlinear Presolve Algorithm in AIMMS

Course Summary! What have we learned and what are we expected to know?

Column Generation and its applications

On Applying Cutting Planes in DLL-Based Algorithms for Pseudo-Boolean Optimization

Constraint Branching and Disjunctive Cuts for Mixed Integer Programs

Pure Cutting Plane Methods for ILP: a computational perspective

A LARGE SCALE INTEGER AND COMBINATORIAL OPTIMIZER

lpsymphony - Integer Linear Programming in R

George Reloaded. M. Monaci (University of Padova, Italy) joint work with M. Fischetti. MIP Workshop, July 2010

Comparisons of Commercial MIP Solvers and an Adaptive Memory (Tabu Search) Procedure for a Class of 0-1 Integer Programming Problems

Large-Scale Optimization and Logical Inference

Solving the Euclidean Steiner Tree Problem in n-space

sbb COIN-OR Simple Branch-and-Cut

A Generic Separation Algorithm and Its Application to the Vehicle Routing Problem

Cutting Planes for Some Nonconvex Combinatorial Optimization Problems

The Three Phases of MIP Solving

Transcription:

Basic Concepts of Constraint Integer Programming Ambros Gleixner Zuse Institute Berlin September 30, 2015

Outline SCIP Solving Constraint Integer Programs 4 methodologies in optimization An integrated method SCIP: Solving Constraint Integer Programs The Solving Process of SCIP Ambros Gleixner Basic Concepts of Constraint Integer Programming 1 / 39

Outline SCIP Solving Constraint Integer Programs 4 methodologies in optimization An integrated method SCIP: Solving Constraint Integer Programs The Solving Process of SCIP Ambros Gleixner Basic Concepts of Constraint Integer Programming 2 / 39

Mixed-Integer Linear Programming: MIP Problem class min s.t. c T x Ax b (x I, x C ) Z I R C continuous and integer variables linear objective function linear constraints Ambros Gleixner Basic Concepts of Constraint Integer Programming 3 / 39

Mixed-Integer Linear Programming: MIP Problem class min s.t. c T x Ax b (x I, x C ) Z I R C continuous and integer variables linear objective function linear constraints x2 3 x 2 F 1 conv(f IP ) 1 2 3 4 min{c T x : x conv(f IP )} x1 Methods LP relaxation cutting planes branch-and-bound x IP More details: Tobias Achterberg and Bob Bixby, Oct. 5 Ambros Gleixner Basic Concepts of Constraint Integer Programming 3 / 39

Satisability Solving: SAT Problem class x {0, 1} n s.t. x i x i for k = 1,..., m, i Y k i N k Y k, N k {1,..., n} binary variables and their negation (linear) clauses feasible assignment? Ambros Gleixner Basic Concepts of Constraint Integer Programming 4 / 39

Satisability Solving: SAT Problem class x {0, 1} n s.t. x i x i for k = 1,..., m, i Y k i N k Y k, N k {1,..., n} binary variables and their negation (linear) clauses feasible assignment? Methods unit propagation x 1 x 3 x 1 x 2 x 4 x 3 Ambros Gleixner Basic Concepts of Constraint Integer Programming 4 / 39

Satisability Solving: SAT Problem class x {0, 1} n s.t. x i x i for k = 1,..., m, i Y k i N k Y k, N k {1,..., n} binary variables and their negation (linear) clauses feasible assignment? Methods unit propagation x 1 x 3 x 1 x 2 x 4 x 3 x 1 x 1 x 2 x 4 x 3 Ambros Gleixner Basic Concepts of Constraint Integer Programming 4 / 39

Satisability Solving: SAT Problem class x {0, 1} n s.t. x i x i for k = 1,..., m, i Y k i N k Y k, N k {1,..., n} binary variables and their negation (linear) clauses feasible assignment? Methods unit propagation x 1 x 3 x 1 x 2 x 4 x 3 x 1 x 1 x 2 x 4 x 3 x 1 x 3 Ambros Gleixner Basic Concepts of Constraint Integer Programming 4 / 39

Satisability Solving: SAT Problem class x {0, 1} n s.t. x i x i for k = 1,..., m, i Y k i N k Y k, N k {1,..., n} binary variables and their negation (linear) clauses feasible assignment? Methods unit propagation tree search clause learning x 1 x 3 x 1 x 2 x 4 x 3 x 1 x 1 x 2 x 4 x 3 x 1 x 3 Ambros Gleixner Basic Concepts of Constraint Integer Programming 4 / 39

Satisability Solving: SAT Problem class x {0, 1} n s.t. x i x i for k = 1,..., m, i Y k i N k Y k, N k {1,..., n} binary variables and their negation (linear) clauses feasible assignment? Methods unit propagation tree search clause learning restarts x 1 x 3 x 1 x 2 x 4 x 3 x 1 x 1 x 2 x 4 x 3 x 1 x 3 Ambros Gleixner Basic Concepts of Constraint Integer Programming 4 / 39

Constraint Programming: CP Problem class min c(x) s.t. x F k for k = 1,..., m (x I, x N ) Z I X x 1 x 2 x 3 alldi (x) arbitrary variable domains (usually nite: FD) arbitrary constraints arbitrary objective function x 4 Ambros Gleixner Basic Concepts of Constraint Integer Programming 5 / 39

Constraint Programming: CP Problem class min c(x) s.t. x F k for k = 1,..., m (x I, x N ) Z I X x 1 x 2 x 3 alldi (x) x 1 x 2 x 3 arbitrary variable domains (usually nite: FD) arbitrary constraints arbitrary objective function x 4 x 4 Methods constraint propagation Ambros Gleixner Basic Concepts of Constraint Integer Programming 5 / 39

Constraint Programming: CP Problem class min c(x) s.t. x F k for k = 1,..., m (x I, x N ) Z I X x 1 x 2 x 3 alldi (x) x 1 x 2 x 3 arbitrary variable domains (usually nite: FD) arbitrary constraints arbitrary objective function x 4 x 4 Methods constraint propagation tree search conict analysis/no-good learning Ambros Gleixner Basic Concepts of Constraint Integer Programming 5 / 39

Mixed-Integer Nonlinear Programming: MINLP Problem class min s.t. f (x) g(x) b (x I, x C ) Z I R C continuous and integer variables nonlinear objective function nonlinear constraint functions 5 g x 6 4 2 2 4 5 g c 10 x 15 More details: Ralf Lenz, Jesco Humpola, Pierre Bonami, Oct. 1 & 8 Ambros Gleixner Basic Concepts of Constraint Integer Programming 6 / 39

Mixed-Integer Nonlinear Programming: MINLP Problem class min s.t. f (x) g(x) b (x I, x C ) Z I R C continuous and integer variables nonlinear objective function nonlinear constraint functions 5 g x 6 4 2 2 4 5 g c 10 x 15 Methods outer approximation convex relaxation bound tightening More details: Ralf Lenz, Jesco Humpola, Pierre Bonami, Oct. 1 & 8 Ambros Gleixner Basic Concepts of Constraint Integer Programming 6 / 39

Mixed-Integer Nonlinear Programming: MINLP Problem class min s.t. f (x) g(x) b (x I, x C ) Z I R C continuous and integer variables nonlinear objective function nonlinear constraint functions 5 g x 6 4 2 2 4 5 g c 10 x 15 5 Methods outer approximation convex relaxation bound tightening spatial branch-and-bound 6 4 2 2 4 5 10 More details: Ralf Lenz, Jesco Humpola, Pierre Bonami, Oct. 1 & 8 Ambros Gleixner Basic Concepts of Constraint Integer Programming 6 / 39

Outline SCIP Solving Constraint Integer Programs 4 methodologies in optimization An integrated method SCIP: Solving Constraint Integer Programs The Solving Process of SCIP Ambros Gleixner Basic Concepts of Constraint Integer Programming 7 / 39

Integrating CP, MIP, SAT, and MINLP Search: in MIP in SAT in CP in MINLP Ambros Gleixner Basic Concepts of Constraint Integer Programming 8 / 39

Integrating CP, MIP, SAT, and MINLP Search: in MIP + LP relaxation in SAT in CP in MINLP Ambros Gleixner Basic Concepts of Constraint Integer Programming 8 / 39

Integrating CP, MIP, SAT, and MINLP Search: in MIP + LP relaxation + cutting planes in SAT in CP in MINLP Ambros Gleixner Basic Concepts of Constraint Integer Programming 8 / 39

Integrating CP, MIP, SAT, and MINLP Search: in MIP + LP relaxation + cutting planes in SAT + clause learning in CP in MINLP Ambros Gleixner Basic Concepts of Constraint Integer Programming 8 / 39

Integrating CP, MIP, SAT, and MINLP Search: in MIP + LP relaxation + cutting planes in SAT + clause learning + restarts in CP in MINLP Ambros Gleixner Basic Concepts of Constraint Integer Programming 8 / 39

Integrating CP, MIP, SAT, and MINLP Search: in MIP + LP relaxation + cutting planes in SAT + clause learning + restarts in CP + propagation in MINLP Ambros Gleixner Basic Concepts of Constraint Integer Programming 8 / 39

Integrating CP, MIP, SAT, and MINLP Search: in MIP + LP relaxation + cutting planes in SAT + clause learning + restarts in CP + propagation + conict analysis in MINLP Ambros Gleixner Basic Concepts of Constraint Integer Programming 8 / 39

Integrating CP, MIP, SAT, and MINLP Search: in MIP + LP relaxation + cutting planes in SAT + clause learning + restarts in CP + propagation + conict analysis in MINLP + outer approximation Ambros Gleixner Basic Concepts of Constraint Integer Programming 8 / 39

Integrating CP, MIP, SAT, and MINLP Search: in MIP + LP relaxation + cutting planes in SAT + clause learning + restarts in CP + propagation + conict analysis in MINLP + outer approximation + bound tightening Ambros Gleixner Basic Concepts of Constraint Integer Programming 8 / 39

Integrating CP, MIP, SAT, and MINLP Search: in MIP + LP relaxation + cutting planes in SAT + clause learning + restarts in CP + propagation + conict analysis in MINLP + outer approximation + bound tightening + spatial branching Ambros Gleixner Basic Concepts of Constraint Integer Programming 8 / 39

Integrating CP, MIP, SAT, and MINLP Search: in MIP + LP relaxation + cutting planes in SAT + clause learning + restarts in CP + propagation + conict analysis in MINLP + outer approximation + bound tightening + spatial branching } High-level and low-level integration interaction of dierent algorithms combination of algorithmic techniques e.g., Althaus, Bockmayr, Elf, Jünger, Kasper, Mehlhorn 2002; Hooker 2007; Achterberg 2007; Berthold, Heinz, Vigerske 2010; Vigerske 2013;... Ambros Gleixner Basic Concepts of Constraint Integer Programming 8 / 39

Constraint Integer Programming: CIP Low-level integration of solving techniques into one algorithm CP+SAT+MIP [Achterberg 2007, 2009] +MINLP [Berthold, Heinz, Vigerske 2010; Vigerske 2013] implemented in the solver SCIP Ambros Gleixner Basic Concepts of Constraint Integer Programming 9 / 39

Constraint Integer Programming: CIP Low-level integration of solving techniques into one algorithm CP+SAT+MIP [Achterberg 2007, 2009] +MINLP [Berthold, Heinz, Vigerske 2010; Vigerske 2013] implemented in the solver SCIP MIP SAT Ambros Gleixner Basic Concepts of Constraint Integer Programming 9 / 39

Constraint Integer Programming: CIP Low-level integration of solving techniques into one algorithm CP+SAT+MIP [Achterberg 2007, 2009] +MINLP [Berthold, Heinz, Vigerske 2010; Vigerske 2013] implemented in the solver SCIP CP MIP SAT Ambros Gleixner Basic Concepts of Constraint Integer Programming 9 / 39

Constraint Integer Programming: CIP Low-level integration of solving techniques into one algorithm CP+SAT+MIP [Achterberg 2007, 2009] +MINLP [Berthold, Heinz, Vigerske 2010; Vigerske 2013] implemented in the solver SCIP CP MIP SAT FD Ambros Gleixner Basic Concepts of Constraint Integer Programming 9 / 39

Constraint Integer Programming: CIP Low-level integration of solving techniques into one algorithm CP+SAT+MIP [Achterberg 2007, 2009] +MINLP [Berthold, Heinz, Vigerske 2010; Vigerske 2013] implemented in the solver SCIP CP MIP MINLP SAT FD Ambros Gleixner Basic Concepts of Constraint Integer Programming 9 / 39

Constraint Integer Programming: CIP Low-level integration of solving techniques into one algorithm CP+SAT+MIP [Achterberg 2007, 2009] +MINLP [Berthold, Heinz, Vigerske 2010; Vigerske 2013] implemented in the solver SCIP Problem class continuous and integer variables linear objective function arbitrary constraints condition: after xing all integers, CIP can be solved as an LP or NLP MIP SAT CP CIP MINLP FD Ambros Gleixner Basic Concepts of Constraint Integer Programming 9 / 39

Constraint Integer Programming: CIP Low-level integration of solving techniques into one algorithm CP+SAT+MIP [Achterberg 2007, 2009] +MINLP [Berthold, Heinz, Vigerske 2010; Vigerske 2013] implemented in the solver SCIP Problem class continuous and integer variables linear objective function arbitrary constraints condition: after xing all integers, CIP can be solved as an LP or NLP MIP SAT CP CIP MINLP PBO FD Ambros Gleixner Basic Concepts of Constraint Integer Programming 9 / 39

Example: Pseudoboolean Optimization The AND constraint y = i J x i y {0, 1}: resultant x i {0, 1}: operand variables Ambros Gleixner Basic Concepts of Constraint Integer Programming 10 / 39

Example: Pseudoboolean Optimization The AND constraint y = i J x i y {0, 1}: resultant x i {0, 1}: operand variables Propagation rules i : x i = 0 y = 0 Ambros Gleixner Basic Concepts of Constraint Integer Programming 10 / 39

Example: Pseudoboolean Optimization The AND constraint y = i J x i y {0, 1}: resultant x i {0, 1}: operand variables Propagation rules i : x i = 0 y = 0 x i = 1 i J y = 1 Ambros Gleixner Basic Concepts of Constraint Integer Programming 10 / 39

Example: Pseudoboolean Optimization The AND constraint y = i J x i y {0, 1}: resultant x i {0, 1}: operand variables Propagation rules i : x i = 0 y = 0 x i = 1 i J y = 1 y = 1 x i = 1 i J Ambros Gleixner Basic Concepts of Constraint Integer Programming 10 / 39

Example: Pseudoboolean Optimization The AND constraint y = i J x i y {0, 1}: resultant x i {0, 1}: operand variables Propagation rules i : x i = 0 y = 0 x i = 1 i J y = 1 y = 1 x i = 1 i J y = 0 k : x i = 1 i J \ {k} x k = 0 Ambros Gleixner Basic Concepts of Constraint Integer Programming 10 / 39

Linearization of y = x 1 x n n x i y n 1 i=1 n x i n y 0 i=1 n x i y n 1 i=1 x i y 0 for i = 1,..., n 2 constraints contains fractional vertices n + 1 constraints only integer vertices Ambros Gleixner Basic Concepts of Constraint Integer Programming 11 / 39

Algorithms Only propagation good: fast subproblem processing bad: LP relaxation has no knowledge about the nonlinear structure Ambros Gleixner Basic Concepts of Constraint Integer Programming 12 / 39

Algorithms Only propagation good: fast subproblem processing bad: LP relaxation has no knowledge about the nonlinear structure Only relaxation put the complete linearization into the LP good: LP relaxation contains complete problem bad: can blow up the LP Ambros Gleixner Basic Concepts of Constraint Integer Programming 12 / 39

Algorithms Only propagation good: fast subproblem processing bad: LP relaxation has no knowledge about the nonlinear structure Only relaxation put the complete linearization into the LP good: LP relaxation contains complete problem bad: can blow up the LP Only separation generate the linearization as they are needed good: the LP only is fed with the import constraint (cuts) bad: LP relaxation has partial knowledge about the nonlinearities Ambros Gleixner Basic Concepts of Constraint Integer Programming 12 / 39

Algorithms Only propagation good: fast subproblem processing bad: LP relaxation has no knowledge about the nonlinear structure Only relaxation put the complete linearization into the LP good: LP relaxation contains complete problem bad: can blow up the LP Only separation generate the linearization as they are needed good: the LP only is fed with the import constraint (cuts) bad: LP relaxation has partial knowledge about the nonlinearities SCIP can implement all strategies default: propagation + weak linearization + separation Ambros Gleixner Basic Concepts of Constraint Integer Programming 12 / 39

Outline SCIP Solving Constraint Integer Programs 4 methodologies in optimization An integrated method SCIP: Solving Constraint Integer Programs The Solving Process of SCIP Ambros Gleixner Basic Concepts of Constraint Integer Programming 13 / 39

estimate implics dualfix dfs bound shift hybrid estim intto binary restart dfs bfs spx qso xprs none probing Presolver Node selector default msk trivial default LP cpx Display Dialog clp Impli cations sos1 setppc fix cnf soc cip sos2 lp Tree Cutpool var bound quadr atic orbi tope ccg mps xor or Reader and Constraint Handler logicor opb zpl linking ppm sos Pricer Conflict rlp bound disjunc. count sols knap sack linear sol indi cator cumu lative integral flow cover cmir clique Propa gator Event Variable relps cost gomory Relax random implied bounds Separator zero half pseudo obj root redcost default Branch allfull strong pscost intobj strong cg vbound actcons mcf redcost zi round full strong mostinf odd cycle rapid learn cross over under cover infer ence leastinf coef feaspump veclen dins twoopt trysol frac fixand infer trivial simple rounding guided Primal Heuristic shift& prop int int shifting rounding shifting linesearch local branching rins rootsol subnlp mutation octane pscost rens objpscost oneopt Why use SCIP? SCIP: Solving Constraint Integer Programs... provides a full-scale MIP and MINLP solver SCIP Ambros Gleixner Basic Concepts of Constraint Integer Programming 14 / 39

estimate implics dualfix dfs bound shift hybrid estim intto binary restart dfs bfs spx qso xprs none probing Presolver Node selector default msk trivial default LP cpx Display Dialog clp Impli cations sos1 setppc fix cnf soc cip sos2 lp Tree Cutpool var bound quadr atic orbi tope ccg mps xor or Reader and Constraint Handler logicor opb zpl linking ppm sos Pricer Conflict rlp bound disjunc. count sols knap sack linear sol indi cator cumu lative integral flow cover cmir clique Propa gator Event Variable relps cost gomory Relax random implied bounds Separator zero half pseudo obj root redcost default Branch allfull strong pscost intobj strong cg vbound actcons mcf redcost zi round full strong mostinf odd cycle rapid learn cross over under cover infer ence leastinf coef feaspump veclen dins twoopt trysol frac fixand infer trivial simple rounding guided Primal Heuristic shift& prop int int shifting rounding shifting linesearch local branching rins rootsol subnlp mutation octane pscost rens objpscost oneopt Why use SCIP? SCIP: Solving Constraint Integer Programs... provides a full-scale MIP and MINLP solver can solve general CIPs: constraint-based design SCIP Ambros Gleixner Basic Concepts of Constraint Integer Programming 14 / 39

estimate implics dualfix dfs bound shift hybrid estim intto binary restart dfs bfs spx qso xprs none probing Presolver Node selector default msk trivial default LP cpx Display Dialog clp Impli cations sos1 setppc fix cnf soc cip sos2 lp Tree Cutpool var bound quadr atic orbi tope ccg mps xor or Reader and Constraint Handler logicor opb zpl linking ppm sos Pricer Conflict rlp bound disjunc. count sols knap sack linear sol indi cator cumu lative integral flow cover cmir clique Propa gator Event Variable relps cost gomory Relax random implied bounds Separator zero half pseudo obj root redcost default Branch allfull strong pscost intobj strong cg vbound actcons mcf redcost zi round full strong mostinf odd cycle rapid learn cross over under cover infer ence leastinf coef feaspump veclen dins twoopt trysol frac fixand infer trivial simple rounding guided Primal Heuristic shift& prop int int shifting rounding shifting linesearch local branching rins rootsol subnlp mutation octane pscost rens objpscost oneopt Why use SCIP? SCIP: Solving Constraint Integer Programs... provides a full-scale MIP and MINLP solver can solve general CIPs: constraint-based design can be extended: plugin-based design SCIP Ambros Gleixner Basic Concepts of Constraint Integer Programming 14 / 39

estimate implics dualfix dfs bound shift hybrid estim intto binary restart dfs bfs spx qso xprs none probing Presolver Node selector default msk trivial default LP cpx Display Dialog clp Impli cations sos1 setppc fix cnf soc cip sos2 lp Tree Cutpool var bound quadr atic orbi tope ccg mps xor or Reader and Constraint Handler logicor opb zpl linking ppm sos Pricer Conflict rlp bound disjunc. count sols knap sack linear sol indi cator cumu lative integral flow cover cmir clique Propa gator Event Variable relps cost gomory Relax random implied bounds Separator zero half pseudo obj root redcost default Branch allfull strong pscost intobj strong cg vbound actcons mcf redcost zi round full strong mostinf odd cycle rapid learn cross over under cover infer ence leastinf coef feaspump veclen dins twoopt trysol frac fixand infer trivial simple rounding guided Primal Heuristic shift& prop int int shifting rounding shifting linesearch local branching rins rootsol subnlp mutation octane pscost rens objpscost oneopt Why use SCIP? SCIP: Solving Constraint Integer Programs... provides a full-scale MIP and MINLP solver can solve general CIPs: constraint-based design can be extended: plugin-based design SCIP Ambros Gleixner Basic Concepts of Constraint Integer Programming 14 / 39

estimate implics dualfix dfs bound shift hybrid estim intto binary restart dfs bfs spx qso xprs none probing Presolver Node selector default msk trivial default LP cpx Display Dialog clp Impli cations sos1 setppc fix cnf soc cip sos2 lp Tree Cutpool var bound quadr atic orbi tope ccg mps xor or Reader and Constraint Handler logicor opb zpl linking ppm sos Pricer Conflict rlp bound disjunc. count sols knap sack linear sol indi cator cumu lative integral flow cover cmir clique Propa gator Event Variable relps cost gomory Relax random implied bounds Separator zero half pseudo obj root redcost default Branch allfull strong pscost intobj strong cg vbound actcons mcf redcost zi round full strong mostinf odd cycle rapid learn cross over under cover infer ence leastinf coef feaspump veclen dins twoopt trysol frac fixand infer trivial simple rounding guided Primal Heuristic shift& prop int int shifting rounding shifting linesearch local branching rins rootsol subnlp mutation octane pscost rens objpscost oneopt Why use SCIP? SCIP: Solving Constraint Integer Programs... provides a full-scale MIP and MINLP solver can solve general CIPs: constraint-based design can be extended: plugin-based design SCIP Ambros Gleixner Basic Concepts of Constraint Integer Programming 14 / 39

estimate implics dualfix dfs bound shift hybrid estim intto binary restart dfs bfs spx qso xprs none probing Presolver Node selector default msk trivial default LP cpx Display Dialog clp Impli cations sos1 setppc fix cnf soc cip sos2 lp Tree Cutpool var bound quadr atic orbi tope ccg mps xor or Reader Constraint Handler logicor opb and zpl linking ppm sos Pricer Conflict rlp bound disjunc. count sols knap sack linear sol indi cator cumu lative integral flow cover cmir clique Propa gator Event Variable relps cost gomory Relax random implied bounds Separator zero half pseudo obj root redcost default Branch allfull strong pscost intobj strong cg vbound actcons mcf redcost zi round full strong mostinf odd cycle rapid learn cross over under cover infer ence leastinf coef feaspump veclen dins twoopt trysol frac fixand infer trivial simple rounding guided Primal Heuristic shift& prop int int shifting rounding shifting linesearch local branching rins rootsol subnlp mutation octane pscost rens objpscost oneopt Why use SCIP? SCIP: Solving Constraint Integer Programs... provides a full-scale MIP and MINLP solver can solve general CIPs: constraint-based design can be extended: plugin-based design supports column generation and branch-cut-and-price SCIP Ambros Gleixner Basic Concepts of Constraint Integer Programming 14 / 39

estimate implics dualfix dfs bound shift hybrid estim intto binary restart dfs bfs spx qso xprs none probing Presolver Node selector default msk trivial default LP cpx Display Dialog clp Impli cations sos1 setppc fix cnf soc cip sos2 lp Tree Cutpool var bound quadr atic orbi tope ccg mps xor or Reader Constraint Handler logicor opb and zpl linking ppm sos Pricer Conflict rlp bound disjunc. count sols knap sack linear sol indi cator cumu lative integral flow cover cmir clique Propa gator Event Variable relps cost gomory Relax random implied bounds Separator zero half pseudo obj root redcost default Branch allfull strong pscost intobj strong cg vbound actcons mcf redcost zi round full strong mostinf odd cycle rapid learn cross over under cover infer ence leastinf coef feaspump veclen dins twoopt trysol frac fixand infer trivial simple rounding guided Primal Heuristic shift& prop int int shifting rounding shifting linesearch local branching rins rootsol subnlp mutation octane pscost rens objpscost oneopt Why use SCIP? SCIP: Solving Constraint Integer Programs... provides a full-scale MIP and MINLP solver can solve general CIPs: constraint-based design can be extended: plugin-based design supports column generation and branch-cut-and-price is free for academic research SCIP Ambros Gleixner Basic Concepts of Constraint Integer Programming 14 / 39

estimate implics dualfix dfs bound shift hybrid estim intto binary restart dfs bfs spx qso xprs none probing Presolver Node selector default msk trivial default LP cpx Display Dialog clp Impli cations sos1 setppc fix cnf soc cip sos2 lp Tree Cutpool var bound quadr atic orbi tope ccg mps xor or Reader Constraint Handler logicor opb and zpl linking ppm sos Pricer Conflict rlp bound disjunc. count sols knap sack linear sol indi cator cumu lative integral flow cover cmir clique Propa gator Event Variable relps cost gomory Relax random implied bounds Separator zero half pseudo obj root redcost default Branch allfull strong pscost intobj strong cg vbound actcons mcf redcost zi round full strong mostinf odd cycle rapid learn cross over under cover infer ence leastinf coef feaspump veclen dins twoopt trysol frac fixand infer trivial simple rounding guided Primal Heuristic shift& prop int int shifting rounding shifting linesearch local branching rins rootsol subnlp mutation octane pscost rens objpscost oneopt Why use SCIP? SCIP: Solving Constraint Integer Programs... provides a full-scale MIP and MINLP solver can solve general CIPs: constraint-based design can be extended: plugin-based design supports column generation and branch-cut-and-price is free for academic research is open: available in source code SCIP Ambros Gleixner Basic Concepts of Constraint Integer Programming 14 / 39

Plugin-based design SCIP core branching tree variables conict analysis solution pool cut pool statistics clique table implication graph... Ambros Gleixner Basic Concepts of Constraint Integer Programming 15 / 39

Plugin-based design SCIP core branching tree variables conict analysis solution pool cut pool statistics clique table implication graph... Plugins external callback objects interact with the framework through a very detailed interface Ambros Gleixner Basic Concepts of Constraint Integer Programming 15 / 39

Plugin-based design SCIP core branching tree variables conict 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 dening the calling order (usually) SCIP does not know any structure behind a plugin plugins are black boxes for the SCIP core Ambros Gleixner Basic Concepts of Constraint Integer Programming 15 / 39

Plugin-based design SCIP core branching tree variables conict 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 dening the calling order (usually) SCIP does not know any structure behind a plugin plugins are black boxes for the SCIP core Very exible branch-and-bound based search algorithm Ambros Gleixner Basic Concepts of Constraint Integer Programming 15 / 39

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: simplies the problem in advance, strengthens structure Propagator: simplies problem, improves dual bound locally Reader: reads problems from dierent formats Event handler: catches events (e.g., bound changes, new solutions) Display: allows modication of output... Ambros Gleixner Basic Concepts of Constraint Integer Programming 16 / 39

A closer look: branching rules lp mps opb ppm implied bounds gomory intobj fix rlp flow cover mcf cnf Reader sol cmir Separator odd cycle probing intto binary trivial implics cip ccg zpl sos clique zero half rapid learn redcost strong cg dualfix bound shift Presolver Impli cations Tree Pricer Propa gator pseudo obj root redcost vbound frac int linesearch feaspump guided fixand int infer shifting cross local mutation over dins branching restart dfs hybrid estim Node estimate selector SCIP Relax actcons coef Primal Heuristic subnlp objpscost octane dfs Display Variable zi round veclen pscost oneopt bfs default Dialog Event under cover twoopt rins rens default Cutpool Conflict default trysol trivial rounding shift& prop rootsol simple shifting rounding xprs var bound xor and bound disjunc. allfull strong full strong spx LP sos1 sos2 count sols cumu lative Branch infer ence qso soc Constraint Handler indi cator leastinf none msk cpx clp setppc quadr atic knap sack integral relps cost mostinf random pscost orbi tope or linking linear logicor Ambros Gleixner Basic Concepts of Constraint Integer Programming 17 / 39

t default A closer look: branching rules trysol simple rounding shif nd unc. allfull strong full strong nt ls cumu lative Branch infer ence indi cator leastinf ap ck integral relps cost random pscost mostinf ar Ambros Gleixner Basic Concepts of Constraint Integer Programming 17 / 39

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 denes the possible results of a call: branched reduced domains added constraints detected cuto did not run Ambros Gleixner Basic Concepts of Constraint Integer Programming 18 / 39

Outline SCIP Solving Constraint Integer Programs 4 methodologies in optimization An integrated method SCIP: Solving Constraint Integer Programs The Solving Process of SCIP Ambros Gleixner Basic Concepts of Constraint Integer Programming 19 / 39

Operational Stages Init Init Solve Problem Transforming Presolving Solving Free Transform Free Solve Ambros Gleixner Basic Concepts of Constraint Integer Programming 20 / 39

Operational Stages Init Init Solve Problem Transforming Presolving Solving Free Transform Free Solve Basic data structures are allocated and initialized. User includes required plugins (or just takes default plugins). Ambros Gleixner Basic Concepts of Constraint Integer Programming 20 / 39

Problem Specication Init Init Solve Problem Transforming Presolving Solving Free Transform Free Solve User creates and modies the original problem instance. Problem creation is usually done in le readers. Ambros Gleixner Basic Concepts of Constraint Integer Programming 21 / 39

Transformation Init Init Solve Problem Transforming Presolving Solving Free Transform Free Solve Creates a working copy of the original problem. Ambros Gleixner Basic Concepts of Constraint Integer Programming 22 / 39

Original and Transformed Problem Original CIP Transformed CIP Original variables Transformed variables Original constraints Transformed constraints data is copied into separate memory area presolving and solving operate on transformed problem original data can only be modied in problem modication stage Ambros Gleixner Basic Concepts of Constraint Integer Programming 23 / 39

Presolving Init Init Solve Problem Transforming Presolving Solving Free Transform Free Solve Ambros Gleixner Basic Concepts of Constraint Integer Programming 24 / 39

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: Dual Reductions: based on feasibility reasoning no feasible solution is cut o consider objective function at least one optimal solution remains Ambros Gleixner Basic Concepts of Constraint Integer Programming 25 / 39

Solving Init Init Solve Problem Transforming Presolving Solving Free Transform Free Solve Ambros Gleixner Basic Concepts of Constraint Integer Programming 26 / 39

Flow Chart SCIP Presolving Stop Domain propagation Conict analysis Node selection Solve LP Pricing Primal heuristics Processing Branching Enforce constraints Cuts Ambros Gleixner Basic Concepts of Constraint Integer Programming 27 / 39

Flow Chart SCIP Presolving Stop Domain propagation Conict analysis Node selection Solve LP Pricing Primal heuristics Processing Branching Enforce constraints Cuts Ambros Gleixner Basic Concepts of Constraint Integer Programming 27 / 39

Node Selection Techniques basic rules Task improve primal bound keep comp. eort small improve global dual bound depth rst 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 Ambros Gleixner Basic Concepts of Constraint Integer Programming 28 / 39

Flow Chart SCIP Presolving Stop Domain propagation Conict analysis Node selection Solve LP Pricing Primal heuristics Processing Branching Enforce constraints Cuts Ambros Gleixner Basic Concepts of Constraint Integer Programming 29 / 39

Flow Chart SCIP Presolving Stop Domain propagation Conict analysis Node selection Solve LP Pricing Primal heuristics Processing Branching Enforce constraints Cuts Ambros Gleixner Basic Concepts of Constraint Integer Programming 29 / 39

Flow Chart SCIP Presolving Stop Domain propagation Conict analysis Node selection Solve LP Pricing Primal heuristics Processing Branching Enforce constraints Cuts Ambros Gleixner Basic Concepts of Constraint Integer Programming 30 / 39

LP Solving LP solver is a black box interface to dierent LP solvers: SoPlex, CPLEX, XPress, Gurobi, CLP,... primal/dual simplex barrier with/without crossover double-check feasibility check condition number address numerical troubles by changing parameters: scaling, tolerances, solving from scratch, other simplex Ambros Gleixner Basic Concepts of Constraint Integer Programming 31 / 39

Flow Chart SCIP Presolving Stop Domain propagation Conict analysis Node selection Solve LP Pricing Primal heuristics Processing Branching Enforce constraints Cuts Ambros Gleixner Basic Concepts of Constraint Integer Programming 32 / 39

Flow Chart SCIP Presolving Stop Domain propagation Conict analysis Node selection Solve LP Pricing Primal heuristics Processing Branching Enforce constraints Cuts Ambros Gleixner Basic Concepts of Constraint Integer Programming 33 / 39

Flow Chart SCIP Presolving Stop Domain propagation Conict analysis Node selection Solve LP Pricing Primal heuristics Processing Branching Enforce constraints Cuts Ambros Gleixner Basic Concepts of Constraint Integer Programming 34 / 39

Flow Chart SCIP Presolving Stop Domain propagation Conict analysis Node selection Solve LP Pricing Primal heuristics Processing Branching Enforce constraints Cuts Ambros Gleixner Basic Concepts of Constraint Integer Programming 35 / 39

Flow Chart SCIP Presolving Stop Domain propagation Conict analysis Node selection Solve LP Pricing Primal heuristics Processing Branching Enforce constraints Cuts Ambros Gleixner Basic Concepts of Constraint Integer Programming 36 / 39

Conict Analysis Techniques Analyze: Task Analyze infeasibility Derive valid constraints Help to prune other nodes Propagation conicts Infeasible LPs Bound-exceeding LPs Strong branching conicts Detection: Cut in conict graph LP: Dual ray heuristic Use conicts: Only for propagation As cutting planes Ambros Gleixner Basic Concepts of Constraint Integer Programming 37 / 39

Flow Chart SCIP Presolving Stop Domain propagation Conict analysis Node selection Solve LP Pricing Primal heuristics Processing Branching Enforce constraints Cuts Ambros Gleixner Basic Concepts of Constraint Integer Programming 38 / 39

Summary Take-away messages optimization paradigms: CP, SAT, MIP, MINLP CIP: an algorithmic, solution-driven integration SCIP: a exible tool for computational research in optimization Next The most powerful plugin: constraint handlers Ambros Gleixner Basic Concepts of Constraint Integer Programming 39 / 39