Primal Heuristics in SCIP

Similar documents
The MIP-Solving-Framework SCIP

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

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

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

Column Generation Based Primal Heuristics

RENS. The optimal rounding. Timo Berthold

Exploiting Degeneracy in MIP

Basic Concepts of Constraint Integer Programming

Applied Mixed Integer Programming: Beyond 'The Optimum'

Exact solutions to mixed-integer linear programming problems

The Gurobi Optimizer. Bob Bixby

Motivation for Heuristics

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

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

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

Algorithms II MIP Details

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

Pure Cutting Plane Methods for ILP: a computational perspective

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

Primal Heuristics for Mixed Integer Programs with a Staircase Structure

Rounding and Propagation Heuristics for Mixed Integer Programming

Primal Heuristics for Branch-and-Price Algorithms

3 INTEGER LINEAR PROGRAMMING

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

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

Addressing degeneracy in the dual simplex algorithm using a decompositon approach

Pivot and Gomory Cut. A MIP Feasibility Heuristic NSERC

Experiments On General Disjunctions

Implementing Constraint Handlers in SCIP

Gurobi Guidelines for Numerical Issues February 2017

Optimization Methods in Management Science

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

Improved Gomory Cuts for Primal Cutting Plane Algorithms

Selected Topics in Column Generation

Solving a Challenging Quadratic 3D Assignment Problem

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

Solving lexicographic multiobjective MIPs with Branch-Cut-Price

Advanced Use of GAMS Solver Links

Integer Programming as Projection

Fundamentals of Integer Programming

Integer Programming Chapter 9

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

5.3 Cutting plane methods and Gomory fractional cuts

Unit.9 Integer Programming

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

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

Exact Algorithms for Mixed-Integer Bilevel Linear Programming

Linear Programming Duality and Algorithms

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

The Gurobi Solver V1.0

Practice Final Exam 2: Solutions

Integer Programming ISE 418. Lecture 7. Dr. Ted Ralphs

Assessing Performance of Parallel MILP Solvers

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

Welcome to the Webinar. What s New in Gurobi 7.5

Conflict Analysis in Mixed Integer Programming

Modelling of LP-problems (2WO09)

A List Heuristic for Vertex Cover

Solving Resource Allocation/Scheduling Problems with Constraint Integer Programming

56:272 Integer Programming & Network Flows Final Examination -- December 14, 1998

Implementing a B&C algorithm for Mixed-Integer Bilevel Linear Programming

A LARGE SCALE INTEGER AND COMBINATORIAL OPTIMIZER

Bayesian network model selection using integer programming

Column Generation Method for an Agent Scheduling Problem

Alternating Criteria Search: A Parallel Large Neighborhood Search Algorithm for Mixed Integer Programs

Active-Constraint Variable Ordering for Faster Feasibility of Mixed Integer Linear Programs

Integer Programming! Using linear programming to solve discrete problems

Progress in Linear Programming-Based Algorithms for Integer Programming: An Exposition

A Feasibility Pump heuristic for general Mixed-Integer Problems

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

15.083J Integer Programming and Combinatorial Optimization Fall Enumerative Methods

The Three Phases of MIP Solving

Modern Benders (in a nutshell)

Integer Optimization: Mathematics, Algorithms, and Applications

lpsymphony - Integer Linear Programming in R

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

Methods and Models for Combinatorial Optimization Exact methods for the Traveling Salesman Problem

SUBSTITUTING GOMORY CUTTING PLANE METHOD TOWARDS BALAS ALGORITHM FOR SOLVING BINARY LINEAR PROGRAMMING

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

M2 ORO: Advanced Integer Programming. Part IV. Solving MILP (1) easy IP. Outline. Sophie Demassey. October 10, 2011

Approximation Algorithms

Solving a Challenging Quadratic 3D Assignment Problem

Combinatorial Optimization - Lecture 14 - TSP EPFL

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

On the selection of Benders cuts

SUBSTITUTING GOMORY CUTTING PLANE METHOD TOWARDS BALAS ALGORITHM FOR SOLVING BINARY LINEAR PROGRAMMING

Advanced Operations Research Prof. G. Srinivasan Department of Management Studies Indian Institute of Technology, Madras

Experience with CGL in the PICO Mixed- Integer Programming Solver

Homework 2: Multi-unit combinatorial auctions (due Nov. 7 before class)

Benders in a nutshell Matteo Fischetti, University of Padova

Approximation Algorithms

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

Assignment 3b: The traveling salesman problem

Size of a problem instance: Bigger instances take

Approximation Algorithms

CS 473: Algorithms. Ruta Mehta. Spring University of Illinois, Urbana-Champaign. Ruta (UIUC) CS473 1 Spring / 36

Algorithms for Integer Programming

AM 121: Intro to Optimization Models and Methods Fall 2017

Topics. Introduction. Specific tuning/troubleshooting topics "It crashed" Gurobi parameters The tuning tool. LP tuning. MIP tuning

Introduction to Mathematical Programming IE406. Lecture 20. Dr. Ted Ralphs

Transcription:

Primal Heuristics in SCIP Timo Berthold Zuse Institute Berlin DFG Research Center MATHEON Mathematics for key technologies Berlin, 10/11/2007

Outline 1 Introduction Basics Integration Into SCIP 2 Available Heuristics Rounding Heuristics (Objective) Diving LNS & Others 3 Remarks & Results 2 / 34

Outline 1 Introduction Basics Integration Into SCIP 2 Available Heuristics Rounding Heuristics (Objective) Diving LNS & Others 3 Remarks & Results 3 / 34

Outline 1 Introduction Basics Integration Into SCIP 2 Available Heuristics Rounding Heuristics (Objective) Diving LNS & Others 3 Remarks & Results 4 / 34

How Do We Solve MIPs? Exact methods Branch-And-Bound Cutting planes Branch-And-Cut Heuristics 5 / 34

How Do We Solve MIPs? Exact methods Branch-And-Bound Cutting planes Branch-And-Cut Heuristics 5 / 34

How Do We Solve MIPs? Exact methods Branch-And-Bound Cutting planes Branch-And-Cut Heuristics 5 / 34

How Do We Solve MIPs? Exact methods Branch-And-Bound Cutting planes Branch-And-Cut Heuristics 5 / 34

How Do We Solve MIPs? Exact methods Branch-And-Bound Cutting planes Branch-And-Cut Heuristics Often find good solutions 5 / 34

How Do We Solve MIPs? Exact methods Branch-And-Bound Cutting planes Branch-And-Cut Heuristics Often find good solutions in a reasonable time 5 / 34

How Do We Solve MIPs? Exact methods Branch-And-Bound Cutting planes Branch-And-Cut Heuristics Often find good solutions in a reasonable time without any warranty! 5 / 34

How Do We Solve MIPs? Exact methods Branch-And-Bound Cutting planes Branch-And-Cut Heuristics Often find good solutions in a reasonable time without any warranty! Integrate into exact solver 5 / 34

Primal Heuristics Why use heuristics inside an exact solver? Able to prove feasibility of the model Often nearly optimal solution suffices in practice Feasible solutions guide remaining search process Characteristics 6 / 34

Primal Heuristics Why use heuristics inside an exact solver? Able to prove feasibility of the model Often nearly optimal solution suffices in practice Feasible solutions guide remaining search process Characteristics Highest priority to feasibility Keep control of effort! Use as much information as you can get 6 / 34

Outline 1 Introduction Basics Integration Into SCIP 2 Available Heuristics Rounding Heuristics (Objective) Diving LNS & Others 3 Remarks & Results 7 / 34

Adding A Primal Heuristic SCIPincludeHeur( scip, // scip "Christofides", // HEUR_NAME "Start heuristic for TSP", // HEUR_DESC X, // HEUR_DISPCHAR -15000, // HEUR_PRIORITY 0, // HEUR_FREQ 0, // HEUR_FREQOFS 0, // HEUR_MAXDEPTH SCIP_HEURTIMING_BEFORENODE // HEUR_TIMING ); 9 / 34

Heuristic Timings LP Solving Domain Propagation Solve LP Pricing Separation Constraint Enforcement Domain Propagation Primal Heuristics 10 / 34

Heuristic Timings LP Solving Domain Propagation Solve LP Pricing Separation Constraint Enforcement Domain Propagation Primal Heuristics #define HEUR_TIMING SCIP_HEURTIMING_AFTERNODE 10 / 34

Heuristic Timings Primal Heuristics Domain Propagation LP Solving Solve LP Pricing Separation Constraint Enforcement Domain Propagation Primal Heuristics #define HEUR_TIMING SCIP_HEURTIMING_BEFORENODE 10 / 34

Heuristic Timings Primal Heuristics Domain Propagation LP Solving Solve LP Pricing Heurs Separation Constraint Enforcement Domain Propagation Primal Heuristics #define HEUR_TIMING SCIP_HEURTIMING_DURINGLPLOOP 10 / 34

Categories Two main categories Start heuristics Often already at root node Mostly start from LP optimum Improvement heuristics Require feasible solution Normally at most once for each incumbent 11 / 34

Categories Two main categories Start heuristics Often already at root node Mostly start from LP optimum Improvement heuristics Require feasible solution Normally at most once for each incumbent #define HEUR_FREQOFS 0 11 / 34

Categories Two main categories Start heuristics Often already at root node Mostly start from LP optimum Improvement heuristics Require feasible solution Normally at most once for each incumbent if( SCIPgetLPSolstat(scip)!= SCIP_LPSOLSTAT_OPTIMAL ) return SCIP_OKAY; 11 / 34

Categories Two main categories Start heuristics Often already at root node Mostly start from LP optimum Improvement heuristics Require feasible solution Normally at most once for each incumbent if( SCIPgetNSols(scip) <= 0 ) return SCIP_OKAY; 11 / 34

Categories Two main categories Start heuristics Often already at root node Mostly start from LP optimum Improvement heuristics Require feasible solution Normally at most once for each incumbent struct SCIP_HeurData { SCIP_SOL* lastsol; } 11 / 34

Approaches Five main approaches Rounding assign integer values to fractional variables Diving: DFS in the Branch-And-Bound-tree Objective diving: manipulate objective function LargeNeighborhoodSearch: solve some submip Pivoting: manipulate simplex algorithm 12 / 34

Approaches Five main approaches Rounding assign integer values to fractional variables Diving: DFS in the Branch-And-Bound-tree Objective diving: manipulate objective function LargeNeighborhoodSearch: solve some submip Pivoting: manipulate simplex algorithm 12 / 34

Overview Implemented into SCIP 5 Rounding heuristics 8 Diving heuristics 3 Objective divers 4 LNS improvement heuristics 3 Others 13 / 34

Useful Information Statistics & points Variables locking numbers: Potentially violated rows Variables pseudocosts: Average objective change Special points: LP optimum at root node Current LP solution Current best solution Other known solutions 14 / 34

Useful Information Statistics & points Variables locking numbers: Potentially violated rows Variables pseudocosts: Average objective change Special points: LP optimum at root node Current LP solution Current best solution Other known solutions 14 / 34

Useful Information Statistics & points Variables locking numbers: Potentially violated rows Variables pseudocosts: Average objective change Special points: LP optimum at root node Current LP solution Current best solution Other known solutions 14 / 34

Useful Information Statistics & points Variables locking numbers: Potentially violated rows Variables pseudocosts: Average objective change Special points: LP optimum at root node Current LP solution Current best solution Other known solutions int nlocks = SCIPvarGetNLocksUp(var); 14 / 34

Useful Information Statistics & points Variables locking numbers: Potentially violated rows Variables pseudocosts: Average objective change Special points: LP optimum at root node Current LP solution Current best solution Other known solutions int nlocks = SCIPvarGetNLocksDown(var); 14 / 34

Useful Information Statistics & points Variables locking numbers: Potentially violated rows Variables pseudocosts: Average objective change Special points: LP optimum at root node Current LP solution Current best solution Other known solutions int nlocks = SCIPvarGetNLocksDown(var); 14 / 34

Useful Information Statistics & points Variables locking numbers: Potentially violated rows Variables pseudocosts: Average objective change Special points: LP optimum at root node Current LP solution Current best solution Other known solutions int nlocks = SCIPvarGetNLocksUp(var); 14 / 34

Useful Information Statistics & points Variables locking numbers: Potentially violated rows Variables pseudocosts: Average objective change Special points: LP optimum at root node Current LP solution Current best solution Other known solutions 14 / 34

Useful Information Statistics & points Variables locking numbers: Potentially violated rows Variables pseudocosts: Average objective change Special points: LP optimum at root node Current LP solution Current best solution Other known solutions 14 / 34

Useful Information Statistics & points Variables locking numbers: Potentially violated rows Variables pseudocosts: Average objective change Special points: LP optimum at root node Current LP solution Current best solution Other known solutions 14 / 34

Useful Information Statistics & points Variables locking numbers: Potentially violated rows Variables pseudocosts: Average objective change Special points: LP optimum at root node Current LP solution Current best solution Other known solutions SCIP_Real pscost = SCIPgetVarPseudocost(scip, var, delta); 14 / 34

Useful Information Statistics & points Variables locking numbers: Potentially violated rows Variables pseudocosts: Average objective change Special points: LP optimum at root node Current LP solution Current best solution Other known solutions SCIP_Real pscost = SCIPgetVarPseudocost(scip, var, delta); 14 / 34

Useful Information Statistics & points Variables locking numbers: Potentially violated rows Variables pseudocosts: Average objective change Special points: LP optimum at root node Current LP solution Current best solution Other known solutions SCIP_Real pscost = SCIPgetVarPseudocost(scip, var, delta); 14 / 34

Useful Information Statistics & points Variables locking numbers: Potentially violated rows Variables pseudocosts: Average objective change Special points: LP optimum at root node Current LP solution Current best solution Other known solutions SCIP_Real pscost = SCIPgetVarPseudocost(scip, var, delta); 14 / 34

Useful Information Statistics & points Variables locking numbers: Potentially violated rows Variables pseudocosts: Average objective change Special points: LP optimum at root node Current LP solution Current best solution Other known solutions 14 / 34

Useful Information Statistics & points Variables locking numbers: Potentially violated rows Variables pseudocosts: Average objective change Special points: LP optimum at root node Current LP solution Current best solution Other known solutions SCIP_Real rootsolval = SCIPvarGetRootSol(var); 14 / 34

Useful Information Statistics & points Variables locking numbers: Potentially violated rows Variables pseudocosts: Average objective change Special points: LP optimum at root node Current LP solution Current best solution Other known solutions SCIP_Real solval = SCIPgetSolVal(scip, NULL, var); 14 / 34

Useful Information Statistics & points Variables locking numbers: Potentially violated rows Variables pseudocosts: Average objective change Special points: LP optimum at root node Current LP solution Current best solution Other known solutions SCIP_Sol* bestsol = SCIPgetBestSol(scip); SCIP_Real solval = SCIPgetSolVal(scip, bestsol, var); 14 / 34

Useful Information Statistics & points Variables locking numbers: Potentially violated rows Variables pseudocosts: Average objective change Special points: LP optimum at root node Current LP solution Current best solution Other known solutions SCIP_Sol** sols = SCIPgetSols(scip); SCIP_Real solval = SCIPgetSolVal(scip, sols[i], var); 14 / 34

Outline 1 Introduction Basics Integration Into SCIP 2 Available Heuristics Rounding Heuristics (Objective) Diving LNS & Others 3 Remarks & Results 15 / 34

Outline 1 Introduction Basics Integration Into SCIP 2 Available Heuristics Rounding Heuristics (Objective) Diving LNS & Others 3 Remarks & Results 16 / 34

Rounding Heuristics Guideline: Stay feasible! Features Simple Rounding always stays feasible, Rounding may violate constraints, Shifting may unfix integers, Integer Shifting finally solves an LP. 17 / 34

Rounding Heuristics Guideline: Stay feasible! Features Simple Rounding always stays feasible, Rounding may violate constraints, Shifting may unfix integers, Integer Shifting finally solves an LP. 17 / 34

Rounding Heuristics Guideline: Stay feasible! Features Simple Rounding always stays feasible, Rounding may violate constraints, Shifting may unfix integers, Integer Shifting finally solves an LP. 17 / 34

Rounding Heuristics Guideline: Stay feasible! Features Simple Rounding always stays feasible, Rounding may violate constraints, Shifting may unfix integers, Integer Shifting finally solves an LP. 17 / 34

Rounding Heuristics Guideline: Stay feasible! Features Simple Rounding always stays feasible, Rounding may violate constraints, Shifting may unfix integers, Integer Shifting finally solves an LP. 17 / 34

Rounding Heuristics Guideline: Stay feasible! Features Simple Rounding always stays feasible, Rounding may violate constraints, Shifting may unfix integers, Integer Shifting finally solves an LP. 17 / 34

Rounding Heuristics Guideline: Stay feasible! Features Simple Rounding always stays feasible, Rounding may violate constraints, Shifting may unfix integers, Integer Shifting finally solves an LP. 17 / 34

Rounding Heuristics Guideline: Stay feasible! Features Simple Rounding always stays feasible, Rounding may violate constraints, Shifting may unfix integers, Integer Shifting finally solves an LP. 17 / 34

Rounding Heuristics Guideline: Stay feasible! Features Simple Rounding always stays feasible, Rounding may violate constraints, Shifting may unfix integers, Integer Shifting finally solves an LP. 17 / 34

Rounding Heuristics Guideline: Stay feasible! Features Simple Rounding always stays feasible, Rounding may violate constraints, Shifting may unfix integers, Integer Shifting finally solves an LP. 17 / 34

Rounding Heuristics Guideline: Stay feasible! Features Simple Rounding always stays feasible, Rounding may violate constraints, Shifting may unfix integers, Integer Shifting finally solves an LP. 17 / 34

Rounding Heuristics Guideline: Stay feasible! Features Simple Rounding always stays feasible, Rounding may violate constraints, Shifting may unfix integers, Integer Shifting finally solves an LP. 17 / 34

Rounding Heuristics Guideline: Stay feasible! Features Simple Rounding always stays feasible, Rounding may violate constraints, Shifting may unfix integers, Integer Shifting finally solves an LP. 17 / 34

Rens: An LNS Rounding Heuristic Algorithm 1. x LP optimum; 2. Fix all integral variables: x i := x i i : x i ; 3. Reduce domain of fractional variables: x i { x i ; x i }; 4. Solve the resulting submip 18 / 34

Rens: An LNS Rounding Heuristic Algorithm 1. x LP optimum; 2. Fix all integral variables: x i := x i i : x i ; 3. Reduce domain of fractional variables: x i { x i ; x i }; 4. Solve the resulting submip 18 / 34

Rens: An LNS Rounding Heuristic Algorithm 1. x LP optimum; 2. Fix all integral variables: x i := x i i : x i ; 3. Reduce domain of fractional variables: x i { x i ; x i }; 4. Solve the resulting submip 18 / 34

Rens: An LNS Rounding Heuristic Algorithm 1. x LP optimum; 2. Fix all integral variables: x i := x i i : x i ; 3. Reduce domain of fractional variables: x i { x i ; x i }; 4. Solve the resulting submip 18 / 34

Rens: An LNS Rounding Heuristic Algorithm 1. x LP optimum; 2. Fix all integral variables: x i := x i i : x i ; 3. Reduce domain of fractional variables: x i { x i ; x i }; 4. Solve the resulting submip 18 / 34

Rens: An LNS Rounding Heuristic Observations Solutions found by Rens are roundings of x Yields best possible rounding Yields certificate, if no rounding exists Results 19 / 34

Rens: An LNS Rounding Heuristic Observations Solutions found by Rens are roundings of x Yields best possible rounding Yields certificate, if no rounding exists Results 82 of 129 test instances are roundable Rens finds a global optimum for 23 instances! Dominates all other rounding heuristics 19 / 34

Outline 1 Introduction Basics Integration Into SCIP 2 Available Heuristics Rounding Heuristics (Objective) Diving LNS & Others 3 Remarks & Results 20 / 34

Diving Heuristics I Idea Alternately solve the LP and round a variable Simulates DFS in Branch-And-Bound-tree Complementary target for branching Backtracking possible 21 / 34

Diving Heuristics II Applied branching rules Fractional Diving: lowest fractionality Coefficient Diving: lowest locking number Linesearch Diving: highest increase since root Guided Diving: lowest difference to best known solution Pseudocost Diving: highest ratio of pseudocosts Vectorlength Diving: lowest ratio of objective change and number of rows containing the variable 22 / 34

The Feasibility Pump (Fischetti, Lodi et al.) Algorithm 1. Solve LP; 2. Round LP optimum; 3. If feasible: 4. Stop! 5. Else: 6. Change objective; 7. Go to 1; 23 / 34

The Feasibility Pump (Fischetti, Lodi et al.) Algorithm 1. Solve LP; 2. Round LP optimum; 3. If feasible: 4. Stop! 5. Else: 6. Change objective; 7. Go to 1; 23 / 34

The Feasibility Pump (Fischetti, Lodi et al.) Algorithm 1. Solve LP; 2. Round LP optimum; 3. If feasible: 4. Stop! 5. Else: 6. Change objective; 7. Go to 1; 23 / 34

The Feasibility Pump (Fischetti, Lodi et al.) Algorithm 1. Solve LP; 2. Round LP optimum; 3. If feasible: 4. Stop! 5. Else: 6. Change objective; 7. Go to 1; 23 / 34

The Feasibility Pump (Fischetti, Lodi et al.) Algorithm 1. Solve LP; 2. Round LP optimum; 3. If feasible: 4. Stop! 5. Else: 6. Change objective; 7. Go to 1; (x, x) = x j x j 23 / 34

The Feasibility Pump (Fischetti, Lodi et al.) Algorithm 1. Solve LP; 2. Round LP optimum; 3. If feasible: 4. Stop! 5. Else: 6. Change objective; 7. Go to 1; (x, x) = x j x j 23 / 34

The Feasibility Pump (Fischetti, Lodi et al.) Algorithm 1. Solve LP; 2. Round LP optimum; 3. If feasible: 4. Stop! 5. Else: 6. Change objective; 7. Go to 1; (x, x) = x j x j 23 / 34

The Feasibility Pump (Fischetti, Lodi et al.) Algorithm 1. Solve LP; 2. Round LP optimum; 3. If feasible: 4. Stop! 5. Else: 6. Change objective; 7. Go to 1; 23 / 34

The Feasibility Pump (Fischetti, Lodi et al.) Algorithm 1. Solve LP; 2. Round LP optimum; 3. If feasible: 4. Stop! 5. Else: 6. Change objective; 7. Go to 1; 23 / 34

The Feasibility Pump (Fischetti, Lodi et al.) Algorithm 1. Solve LP; 2. Round LP optimum; 3. If feasible: 4. Stop! 5. Else: 6. Change objective; 7. Go to 1; 23 / 34

Objective Feasibility Pump (Achterberg & B.) Improvements Objective c T x regarded at each step: := (1 α) (x) + αc T x, with α [0, 1] Algorithm able to resolve from cycling Quality of solutions much better Results 24 / 34

Objective Feasibility Pump (Achterberg & B.) Improvements Objective c T x regarded at each step: := (1 α) (x) + αc T x, with α [0, 1] Algorithm able to resolve from cycling Quality of solutions much better Results Finds a solution for 74% of the test instances On average 5.5 seconds running time Optimality gap decreased from 107% to 38% 24 / 34

Other Objective Divers Other objective divers Objective Pseudocost Diving analogon to Pseudocost Diving Punishment by high objective coefficients Rootsolution Diving analogon to Linesearch Diving Objective function faded out 25 / 34

Outline 1 Introduction Basics Integration Into SCIP 2 Available Heuristics Rounding Heuristics (Objective) Diving LNS & Others 3 Remarks & Results 26 / 34

LNS heuristics Idea: Create submip by fixing variables or adding constraints Approaches Rins: fix variables equal in LP optimum and incumbent Crossover: fix variables equal in different feasible solutions Mutation: fix variables randomly Local Branching: add distance constraint wrt. incumbent 27 / 34

Other Heuristics Combinatorial heuristics 1-Opt Shifts value of integer variable Solves LP afterwards 28 / 34

Other Heuristics Combinatorial heuristics 1-Opt Shifts value of integer variable Solves LP afterwards Octane Duality of cube and octahedron Ray shooting algorithm 28 / 34

Other Heuristics Combinatorial heuristics 1-Opt Shifts value of integer variable Solves LP afterwards Octane Duality of cube and octahedron Ray shooting algorithm 28 / 34

Other Heuristics Combinatorial heuristics 1-Opt Shifts value of integer variable Solves LP afterwards Octane Duality of cube and octahedron Ray shooting algorithm 28 / 34

Other Heuristics Combinatorial heuristics 1-Opt Shifts value of integer variable Solves LP afterwards Octane Duality of cube and octahedron Ray shooting algorithm 28 / 34

Other Heuristics Combinatorial heuristics 1-Opt Shifts value of integer variable Solves LP afterwards Octane Duality of cube and octahedron Ray shooting algorithm 28 / 34

Outline 1 Introduction Basics Integration Into SCIP 2 Available Heuristics Rounding Heuristics (Objective) Diving LNS & Others 3 Remarks & Results 29 / 34

Implementation Details Some tips and tricks Use limits which respect the problem size LNS: stalling node limit Diving: try simple rounding on the fly Favor binaries over general integers Avoid cycling without randomness 30 / 34

Implementation Details Some tips and tricks Use limits which respect the problem size LNS: stalling node limit Diving: try simple rounding on the fly Favor binaries over general integers Avoid cycling without randomness int nlpiterations = SCIPgetNNodeLPIterations(scip); int maxlpiterations = heurdata maxlpiterquot * nlpiterations; 30 / 34

Implementation Details Some tips and tricks Use limits which respect the problem size LNS: stalling node limit Diving: try simple rounding on the fly Favor binaries over general integers Avoid cycling without randomness SCIP_CALL( ); SCIPsetLongintParam(subscip,"limits/stallnodes",nstallnodes) 30 / 34

1500 1400 Optimal Objective Primal Bound With Heuristics Dual Bound With Heuristics Primal Bound Without Heuristics Dual Bound Without Heuristics Solution Found By: Relaxation Feaspump Crossover Rens An Example 1300 bound 1200 1100 1000 0 20 40 60 80 100 time (seconds) 31 / 34

Remarks & Conclusions Single heuristics Deactivating a single heuristic yields 1%-6% degradation No heuristic dominates the others Coordination important Overall effect (SCIP 0.82b) 32 / 34

Remarks & Conclusions Single heuristics Deactivating a single heuristic yields 1%-6% degradation No heuristic dominates the others Coordination important Overall effect (SCIP 0.82b) Better pruning, earlier fixing 7% less instances without any solution 5% more instances solved within one hour only half of the branch-and-bound-nodes only half of the solving time 32 / 34

Remarks & Conclusions Single heuristics Deactivating a single heuristic yields 1%-6% degradation No heuristic dominates the others Coordination important Overall effect (SCIP 0.82b) Better pruning, earlier fixing 7% less instances without any solution 5% more instances solved within one hour only half of the branch-and-bound-nodes Not this much only half of the solving time in SCIP 1.00 32 / 34

Perspective & Further Research To be implemented DINS heuristic k-opt for k > 1 probing heuristics Known problems Coordination could be strengthened Often poor for pure combinatorial problems 33 / 34

Primal Heuristics in SCIP Timo Berthold Zuse Institute Berlin DFG Research Center MATHEON Mathematics for key technologies Berlin, 10/11/2007