Classical Optimization Problems On Graphs Most of the classical optimization problems on graphs can be formulated as Mixed Integer Programs. • Max. stable set Maximum stable set: Find a set of vertices of maximum cardinality without a connecting • Min. vertex cover edge. • Max. matching Integer Program: • Graph coloring 1 T x max • Traveling salesman problem s.t. x v + x w ≤ 1 ∀ { v , w } ∈ E • Steiner tree problem s.t. x v ∈ { 0 , 1 } ∀ v ∈ V • . . . Gregor Hendel – Using SCIP 16/78
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
An Example: the Traveling Salesman Problem Definition (TSP) Given a complete graph G = ( V , E ) and distances d e for all e ∈ E : Find a Hamiltonian cycle (cycle containing all nodes, tour) of minimum length. K 8 Gregor Hendel – Using SCIP 18/78
An Example: the Traveling Salesman Problem Definition (TSP) Given a complete graph G = ( V , E ) and distances d e for all e ∈ E : Find a Hamiltonian cycle (cycle containing all nodes, tour) of minimum length. K 8 Gregor Hendel – Using SCIP 18/78
An Example: the Traveling Salesman Problem Definition (TSP) Given a complete graph G = ( V , E ) and distances d e for all e ∈ E : Find a Hamiltonian cycle (cycle containing all nodes, tour) of minimum length. Gregor Hendel – Using SCIP 18/78
What is a Constraint Integer Program? Mixed Integer Program Constraint Program Objective function: Objective function: ⊲ linear function ⊲ arbitrary function Feasible set: Feasible set: ⊲ described by linear constraints ⊲ given by arbitrary constraints Variable domains: Variable domains: ⊲ real or integer values ⊲ arbitrary (usually finite) c T x min min c ( x ) s . t . Ax ≤ b x ∈ F s . t . ( x I , x C ) ∈ ❩ I × ❘ C ( x I , x N ) ∈ ❩ I × X Gregor Hendel – Using SCIP 19/78
TSP – Integer Programming Formulation Given x e • complete graph G = ( V , E ) • distances d e > 0 for all e ∈ E Binary variables • x e = 1 if edge e is used K 8 Gregor Hendel – Using SCIP 20/78
TSP – Integer Programming Formulation Given x e • complete graph G = ( V , E ) • distances d e > 0 for all e ∈ E Binary variables • x e = 1 if edge e is used K 8 � min d e x e e ∈ E � subject to x e = 2 ∀ v ∈ V e ∈ δ ( v ) � x e ≥ 2 ∀ S ⊂ V , S � = ∅ e ∈ δ ( S ) x e ∈ { 0 , 1 } ∀ e ∈ E Gregor Hendel – Using SCIP 20/78
TSP – Integer Programming Formulation Given x e • complete graph G = ( V , E ) • distances d e > 0 for all e ∈ E Binary variables • x e = 1 if edge e is used K 8 � min d e x e e ∈ E � node degree subject to x e = 2 ∀ v ∈ V e ∈ δ ( v ) � x e ≥ 2 ∀ S ⊂ V , S � = ∅ e ∈ δ ( S ) x e ∈ { 0 , 1 } ∀ e ∈ E Gregor Hendel – Using SCIP 20/78
TSP – Integer Programming Formulation Given x e • complete graph G = ( V , E ) • distances d e > 0 for all e ∈ E Binary variables • x e = 1 if edge e is used K 8 � min d e x e e ∈ E � subject to x e = 2 ∀ v ∈ V e ∈ δ ( v ) � x e ≥ 2 ∀ S ⊂ V , S � = ∅ subtour elimination e ∈ δ ( S ) x e ∈ { 0 , 1 } ∀ e ∈ E Gregor Hendel – Using SCIP 20/78
TSP – Integer Programming Formulation Given x e • complete graph G = ( V , E ) • distances d e > 0 for all e ∈ E Binary variables • x e = 1 if edge e is used K 8 � min d e x e distance e ∈ E � subject to x e = 2 ∀ v ∈ V e ∈ δ ( v ) � x e ≥ 2 ∀ S ⊂ V , S � = ∅ e ∈ δ ( S ) x e ∈ { 0 , 1 } ∀ e ∈ E Gregor Hendel – Using SCIP 20/78
TSP – Constraint Programming Formulation Given • complete graph G = ( V , E ) x v • for each e ∈ E a distance d e > 0 Integer variables • x v position of v ∈ V in tour K 8 Gregor Hendel – Using SCIP 21/78
TSP – Constraint Programming Formulation 8 7 2 Given • complete graph G = ( V , E ) 3 1 • for each e ∈ E a distance d e > 0 Integer variables 4 6 • x v position of v ∈ V in tour 5 min length( x 1 , . . . , x n ) subject to alldifferent( x 1 , . . . , x n ) x v ∈ { 1 , . . . , n } ∀ v ∈ V Gregor Hendel – Using SCIP 21/78
What is a Constraint Integer Program? Constraint Integer Program c T x min Objective function: s . t . x ∈ F ( x I , x C ) ∈ ❩ I × ❘ C ⊲ linear function Remark: Feasible set: • arbitrary objective or variables ⊲ described by arbitrary constraints modeled by constraints Variable domains: ⊲ real or integer values Gregor Hendel – Using SCIP 22/78
What is a Constraint Integer Program? Constraint Integer Program � min d e x e e ∈ E Objective function: � s . t . x e = 2 ∀ v ∈ V e ∈ δ ( v ) nosubtour( x ) ⊲ linear function x e ∈ { 0 , 1 } ∀ e ∈ E Feasible set: (CIP formulation of TSP) ⊲ described by arbitrary constraints Single nosubtour constraint rules out subtours (e.g. by domain prop- Variable domains: agation). It may also separate sub- tour elimination inequalities. ⊲ real or integer values Gregor Hendel – Using SCIP 22/78
Mixed-Integer Nonlinear Programs (MINLPs) min c T x s.t. g k ( x ) ≤ 0 ∀ k ∈ [ m ] x i ∈ Z ∀ i ∈ I ⊆ [ n ] x i ∈ [ ℓ i , u i ] ∀ i ∈ [ n ] The functions g k ∈ C 1 ([ ℓ, u ] , R ) can be 0 100 200 10 200 300 200 0 5 0 − 200 − 1 1 − 1 1 convex or nonconvex Gregor Hendel – Using SCIP 23/78
Application: Data Classification Support Vector Machine , e.g., with ramp loss. n min w T w + C � ( ξ i + 2(1 − z i )) 2 n i =1 s.t. z i ( y i ( w T x i + b ) − 1 + ξ i ) ≥ 0 ∀ i ξ i ∈ [0 , 2] , z i ∈ { 0 , 1 } ∀ i w ∈ R d , b ∈ R Gregor Hendel – Using SCIP 24/78
Constraint Integer Programming • M ixed I nteger P rograms MIP Gregor Hendel – Using SCIP 25/78
Constraint Integer Programming • M ixed I nteger P rograms • SAT isfiability problems MIP SAT Gregor Hendel – Using SCIP 25/78
Constraint Integer Programming • M ixed I nteger P rograms • SAT isfiability problems MIP • P seudo- B oolean O ptimization SAT PBO Gregor Hendel – Using SCIP 25/78
Constraint Integer Programming • M ixed I nteger P rograms • SAT isfiability problems MIP • P seudo- B oolean O ptimization • M ixed I nteger N on l inear P rograms SAT PBO MINLP Gregor Hendel – Using SCIP 25/78
Constraint Integer Programming • M ixed I nteger P rograms • SAT isfiability problems MIP • P seudo- B oolean O ptimization • M ixed I nteger N on l inear P rograms SAT PBO MINLP CP • C onstraint P rogramming Gregor Hendel – Using SCIP 25/78
Constraint Integer Programming CIP • M ixed I nteger P rograms • SAT isfiability problems MIP • P seudo- B oolean O ptimization • M ixed I nteger N on l inear P rograms SAT PBO MINLP CP • C onstraint P rogramming • C onstraint I nteger P rogramming Gregor Hendel – Using SCIP 25/78
Constraint Integer Programming CIP • M ixed I nteger P rograms • SAT isfiability problems MIP • P seudo- B oolean O ptimization • M ixed I nteger N on l inear P rograms SAT PBO MINLP CP • C onstraint P rogramming • C onstraint I nteger P rogramming 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
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
Branch-and-bound c T x min s.t. Ax ≥ b (Mixed Integer Program) x ≥ 0 x i ∈ ∀ i ∈ I ⊆ { 1 , . . . , n } Z Gregor Hendel – Using SCIP 27/78
SCIP Interactive Shell Basics Basic Workflow read . . / check / i n s t a n c e s /MIP/ b e l l 5 . mps optimize 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
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 10 20 Limits • limits/time • limits/nodes • limits/gap • . . . Randomization • randomization/randomseedshift • randomization/lpseed • randomization/permutationseed Gregor Hendel – Using SCIP 29/78
Operational Stages Init Init Solve Transforming Presolving Solving Problem Free Transform Free Solve Gregor Hendel – Using SCIP 30/78
Operational Stages Init Init Solve Transforming Presolving Solving Problem Free Transform Free Solve • Basic data structures are allocated and initialized. • User includes required plugins (or just takes default plugins). Gregor Hendel – Using SCIP 30/78
Problem Specification Init Init Solve Transforming Presolving Solving Problem Free Transform Free Solve • User creates and modifies the original problem instance. • Problem creation is usually done in file readers. Gregor Hendel – Using SCIP 31/78
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
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
Transformation Init Init Solve Transforming Presolving Solving Problem Free Transform Free Solve • Creates a working copy of the original problem. Gregor Hendel – Using SCIP 34/78
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 modified in problem modification stage Gregor Hendel – Using SCIP 35/78
Presolving Init Init Solve Transforming Presolving Solving Problem Free Transform Free Solve Gregor Hendel – Using SCIP 36/78
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
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 o 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
Solving Init Init Solve Transforming Presolving Solving Problem Free Transform Free Solve Gregor Hendel – Using SCIP 39/78
Flow Chart SCIP Presolving Stop Domain propagation Node selection Solve LP Pricing Conflict analysis Cuts Processing Processing Enforce constraints Primal heuristics Branching Gregor Hendel – Using SCIP 40/78
Flow Chart SCIP Presolving Stop Domain propagation Node selection Node selection Solve LP Pricing Conflict analysis Cuts Processing Processing Enforce constraints Primal heuristics Branching Gregor Hendel – Using SCIP 40/78
Node Selection Techniques • basic rules • depth first search (DFS) → early feasible solutions • best bound search (BBS) → improve dual bound • best estimate search (BES) → improve primal bound Task • combinations • BBS or BES with plunging • improve primal bound • hybrid BES/BBS • keep comp. effort small • interleaved BES/BBS • improve global dual bound Gregor Hendel – Using SCIP 41/78
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 0 best f i r s t s e a r c h . . . d f s 0 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
Flow Chart SCIP Presolving Stop Domain propagation Node selection Solve LP Pricing Conflict analysis Cuts Processing Processing Processing Enforce constraints Primal heuristics Branching Gregor Hendel – Using SCIP 43/78
Flow Chart SCIP Presolving Stop Domain propagation Domain propagation Node selection Solve LP Pricing Conflict analysis Cuts Processing Processing Processing Enforce constraints Primal heuristics Branching Gregor Hendel – Using SCIP 43/78
Domain Propagation x 1 x 1 Techniques x 2 x 2 • constraint specific ⇒ • each cons handler may provide a x 3 x 3 propagation routine • reduced presolving (usually) x 4 x 4 • dual propagation • root reduced cost strengthening Task • objective function • simplify model locally • special structures • variable bounds • improve local dual bound • detect infeasibility Gregor Hendel – Using SCIP 44/78
Flow Chart SCIP Presolving Stop Domain propagation Node selection Solve LP Solve LP Pricing Conflict analysis Cuts Processing Processing Processing Enforce constraints Primal heuristics Branching Gregor Hendel – Using SCIP 45/78
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
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
Flow Chart SCIP Presolving Stop Domain propagation Node selection Solve LP Pricing Pricing Conflict analysis Cuts Processing Processing Processing Enforce constraints Primal heuristics Branching Gregor Hendel – Using SCIP 48/78
Flow Chart SCIP Presolving Stop Domain propagation Node selection Solve LP Pricing Conflict analysis Cuts Cuts Processing Processing Processing Enforce constraints Primal heuristics Branching Gregor Hendel – Using SCIP 49/78
Cutting Plane Separation Techniques • general cuts • complemented MIR cuts • Gomory mixed integer cuts • strong Chv´ atal-Gomory cuts • implied bound cuts • reduced cost strengthening • problem specific cuts Task • 0-1 knapsack problem • stable set problem • strengthen relaxation • 0-1 single node flow problem • add valid constraints • generate on demand Gregor Hendel – Using SCIP 50/78
Cuts for the 0-1 Knapsack Problem Feasible region: ( b ∈ ❩ + , a j ∈ ❩ + ∀ j ∈ N ) X BK := { x ∈ { 0 , 1 } n : � a j x j ≤ b } j ∈ N Minimal Cover: C ⊆ N 5 x 1 + 6 x 2 + 2 x 3 + 2 x 4 ≤ 8 • � a j > b j ∈ C • � j ∈ C \{ i } a j ≤ b ∀ i ∈ C Minimal cover: C = { 2 , 3 , 4 } Minimal cover inequality: Minimal Cover Inequality x 2 + x 3 + x 4 ≤ 2 � x j ≤ | C | − 1 j ∈ C Gregor Hendel – Using SCIP 51/78
Separation Tips and Parameters Disable/Speed up/Emphasize All Separation s e t s e p a r a t i n g emphasis o 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
Flow Chart SCIP Presolving Stop Domain propagation Node selection Solve LP Pricing Conflict analysis Cuts Processing Processing Processing Enforce constraints Enforce constraints Primal heuristics Branching Gregor Hendel – Using SCIP 53/78
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
Constraint Enforcement Presolving Stop Domain propagation Node selection Solve LP Pricing Conflict analysis Cuts Processing Processing Enforce constraints Enforce constraints Primal heuristics Branching • Reduced domain • Added cut • Cutoff • Infeasible • Added constraint • Branched • Feasible Gregor Hendel – Using SCIP 55/78
Constraint Enforcement Presolving Stop Domain propagation Node selection Solve LP Pricing Conflict analysis Cuts Processing Processing Enforce constraints Enforce constraints Primal heuristics Branching • Reduced domain • Added cut • Cutoff • Infeasible • Added constraint • Branched • Feasible Gregor Hendel – Using SCIP 55/78
Constraint Enforcement Presolving Stop Domain propagation Node selection Solve LP Pricing Conflict analysis Cuts Processing Processing Enforce constraints Enforce constraints Primal heuristics Branching • Reduced domain • Added cut • Cutoff • Infeasible • Added constraint • Branched • Feasible Gregor Hendel – Using SCIP 55/78
Constraint Enforcement Presolving Stop Domain propagation Node selection Solve LP Pricing Conflict analysis Cuts Processing Processing Enforce constraints Enforce constraints Primal heuristics Branching • Reduced domain • Added cut • Cutoff • Infeasible • Added constraint • Branched • Feasible Gregor Hendel – Using SCIP 55/78
Constraint Enforcement Presolving Stop Domain propagation Node selection Solve LP Pricing Conflict analysis Cuts Processing Processing Enforce constraints Enforce constraints Primal heuristics Branching • Reduced domain • Added cut • Cutoff • Infeasible • Added constraint • Branched • Feasible Gregor Hendel – Using SCIP 55/78
Constraint Enforcement Presolving Stop Domain propagation Node selection Solve LP Pricing Conflict analysis Cuts Processing Processing Enforce constraints Enforce constraints Enforce constraints Primal heuristics Branching • Reduced domain • Added cut • Cutoff • Infeasible • Added constraint • Branched • Feasible Gregor Hendel – Using SCIP 55/78
Constraint Enforcement Presolving Stop Domain propagation Node selection Solve LP Pricing Conflict analysis Cuts Processing Processing Enforce constraints Enforce constraints Primal heuristics Branching • Reduced domain • Added cut • Cutoff • Infeasible • Added constraint • Branched • Feasible Gregor Hendel – Using SCIP 55/78
Constraint Enforcement Presolving Stop Domain propagation Node selection Solve LP Pricing Conflict analysis Cuts Processing Processing Enforce constraints Enforce constraints Primal heuristics Branching • Reduced domain • Added cut • Cutoff • Infeasible • Added constraint • Branched • Feasible Gregor Hendel – Using SCIP 55/78
Flow Chart SCIP Presolving Stop Domain propagation Node selection Solve LP Pricing Conflict analysis Cuts Processing Processing Enforce constraints Primal heuristics Branching Branching Gregor Hendel – Using SCIP 56/78
Branching Rules Techniques • branching on variables • most infeasible • least infeasible • random branching • strong branching • pseudocost • reliability • VSIDS • hybrid reliability/inference Task • branching on constraints • divide into (disjoint) • SOS1 subproblems • SOS2 • improve local bounds Gregor Hendel – Using SCIP 57/78
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
Flow Chart SCIP Presolving Stop Domain propagation Node selection Solve LP Pricing Conflict analysis Cuts Processing Processing Enforce constraints Primal heuristics Primal heuristics Branching Gregor Hendel – Using SCIP 59/78
Primal Heuristics Techniques • structure-based • clique • variable bounds • rounding • possibly solve final LP • diving • least infeasible • guided • objective diving Task • objective feasibility pump • Large Neighborhood Search • improve primal bound • RINS, local branching • effective on average • RENS • Adaptive LNS • guide remaining search • Completion of partial solutions Gregor Hendel – Using SCIP 60/78
Primal Heuristics Tips and Parameters Disable/Speed Up/Emphasize Heuristics s e t h e u r i s t i c s emphasis o 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
Flow Chart SCIP Presolving Stop Domain propagation Node selection Solve LP Pricing Conflict analysis Conflict analysis Cuts Processing Processing Enforce constraints Primal heuristics Branching Gregor Hendel – Using SCIP 62/78
Conflict Analysis Techniques • Analyze: • Propagation conflicts • Infeasible LPs • Bound-exceeding LPs • Strong branching conflicts • Detection: • Cut in conflict graph Task • LP: Dual ray heuristic • Analyze infeasibility • Use conflicts: • Derive valid constraints • Only for propagation • As cutting planes • Help to prune other nodes Gregor Hendel – Using SCIP 63/78
Operational Stages Init Init Solve Transforming Presolving Solving Problem Free Transform Free Solve Gregor Hendel – Using SCIP 64/78
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
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
Structure of SCIP mps opb implied bounds intobj gomory ppm lp flow mcf cover rlp fix odd cycle Reader cmir Separator cnf sol rapid learn clique probing sos cip intto trivial binary redcost ccg zpl zero strong implics cg half dualfix Presolver pseudo fracdiving intdiving Tree Pricer obj linesearch Impli bound feaspump diving cations root guided shift redcost fixand diving int shifting infer Propa cross gator local mutation vbound over dins branching restart dfs · · · Relax coef subnlp hybrid diving objpscost estim actcons diving diving SCIP Node Primal octane estimate selector Heuristic oneopt zi round dfs pscost veclen Display Variable diving diving bfs under twoopt rins rens cover Dialog Event default trivial rounding shift& prop rootsol trysol default diving default Cutpool Conflict simple shifting rounding allfull bound strong var xprs bound disjunc. full xor and strong count spx sos2 sols infer cumu sos1 ence lative LP Branch qso Constraint indi soc cator leastinf Handler relps none clp integral cost setppc mostinf quadr knap msk cpx atic sack random pscost or linking orbi linear tope logicor Gregor Hendel – Using SCIP 67/78
Structure of SCIP mps opb implied bounds intobj gomory ppm lp flow mcf cover rlp fix odd cycle Reader cmir Separator cnf sol rapid learn clique probing sos cip intto trivial binary redcost ccg zpl zero strong implics cg half dualfix Presolver pseudo fracdiving intdiving Tree Pricer obj linesearch Impli bound feaspump diving cations root guided shift redcost fixand diving int shifting infer Propa cross gator local mutation vbound over dins branching restart dfs · · · Relax coef subnlp hybrid diving objpscost estim actcons diving diving SCIP Node Primal octane estimate selector Heuristic oneopt zi round dfs pscost veclen Display Variable diving diving bfs under twoopt rins rens cover Dialog Event default trivial rounding shift& prop rootsol trysol default diving default Cutpool Conflict simple shifting rounding allfull bound strong var xprs bound disjunc. full xor and strong count spx sos2 sols infer cumu sos1 ence lative LP Branch qso Constraint indi soc cator leastinf Handler relps none clp integral cost setppc mostinf quadr knap msk cpx atic sack random pscost or linking orbi linear tope logicor Gregor Hendel – Using SCIP 67/78
Recommend
More recommend