sbb COIN-OR Simple Branch-and-Cut

Similar documents
sbb COIN-OR Simple Branch-and-Cut

Using COIN-OR to Solve the Uncapacitated Facility Location Problem

Modeling with COIN-OR Tools

Experience with CGL in the PICO Mixed- Integer Programming Solver

Fundamentals of Integer Programming

15.083J Integer Programming and Combinatorial Optimization Fall Enumerative Methods

The SYMPHONY Callable Library for Mixed-Integer Linear Programming

Integer Programming Chapter 9

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

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

The Gurobi Solver V1.0

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

The MIP-Solving-Framework SCIP

Algorithms for Decision Support. Integer linear programming models

A Computational Study of Conflict Graphs and Aggressive Cut Separation in Integer Programming

Crash-Starting the Simplex Method

Column Generation Based Primal Heuristics

DETERMINISTIC OPERATIONS RESEARCH

A Verification Based Method to Generate Cutting Planes for IPs

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

Noncommercial Software for Mixed-Integer Linear Programming

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

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

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

Solving lexicographic multiobjective MIPs with Branch-Cut-Price

Integer Programming as Projection

Building a Custom Solver with the COIN-OR Branch, Cut, and Price Frameworks

Algorithms II MIP Details

3 INTEGER LINEAR PROGRAMMING

Advanced Use of GAMS Solver Links

Optimization Methods in Management Science

COIN-OR: Software Tools for Implementing Custom Solvers

UNIT 4 Branch and Bound

lpsymphony - Integer Linear Programming in R

Exploiting Degeneracy in MIP

Motivation for Heuristics

2 is not feasible if rounded. x =0,x 2

Improved Gomory Cuts for Primal Cutting Plane Algorithms

An Open Source Solver for Bicriteria Mixed Integer Programs

Approximation Algorithms

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

yaposib Documentation

The SYMPHONY Callable Library for Mixed-Integer Linear Programming

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

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

Towards Efficient Higher-Order Semidefinite Relaxations for Max-Cut

Pivot and Gomory Cut. A MIP Feasibility Heuristic NSERC

Bi-Objective Optimization for Scheduling in Heterogeneous Computing Systems

Facility Location-Routing-Scheduling Problem: LRS

Minimum Weight Constrained Forest Problems. Problem Definition

L2: Algorithms: Knapsack Problem & BnB

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

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

Modern Benders (in a nutshell)

Unit.9 Integer Programming

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

Benders in a nutshell Matteo Fischetti, University of Padova

Lagrangean relaxation - exercises

Parallel Branch & Bound

Primal Heuristics in SCIP

Implementing Constraint Handlers in SCIP

The Gurobi Optimizer. Bob Bixby

5.3 Cutting plane methods and Gomory fractional cuts

Controlling Open Stacks and Flow Time in a Cutting Process

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

Welcome to the Webinar. What s New in Gurobi 7.5

GENERAL ASSIGNMENT PROBLEM via Branch and Price JOHN AND LEI

Benders Decomposition

THEORY OF LINEAR AND INTEGER PROGRAMMING

Outline. Column Generation: Cutting Stock A very applied method. Introduction to Column Generation. Given an LP problem

Column Generation: Cutting Stock

Outline of the module

Chronological Backtracking Conflict Directed Backjumping Dynamic Backtracking Branching Strategies Branching Heuristics Heavy Tail Behavior

Basic Concepts of Constraint Integer Programming

Exact Algorithms for Mixed-Integer Bilevel Linear Programming

Implementing Scalable Parallel Search Algorithms for Data-Intensive Applications

Cuts from Proofs: A Complete and Practical Technique for Solving Linear Inequalities over Integers

Gurobi Guidelines for Numerical Issues February 2017

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

Integer Programming: Algorithms - 2

Graph Theory and Optimization Approximation Algorithms

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

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

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

The University of Jordan Department of Mathematics. Branch and Cut

LECTURE NOTES Non-Linear Programming

Lecture 14: Linear Programming II

Using Speculative Computation and Parallelizing techniques to improve Scheduling of Control based Designs

STSM Report. December 24, Improving preparedness of networks to disaster based failures

Conditional Elimination through Code Duplication

OPTIMIZAÇÃO E DECISÃO 09/10

/ Approximation Algorithms Lecturer: Michael Dinitz Topic: Linear Programming Date: 2/24/15 Scribe: Runze Tang

NOTATION AND TERMINOLOGY

Gomory Reloaded. Matteo Fischetti, DEI, University of Padova (joint work with Domenico Salvagnin) 1 MIP 2010

Search Algorithms. IE 496 Lecture 17

Integer and Combinatorial Optimization

The Mixed Integer Linear Programming Solver

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

An SDP Approach to Multi-level Crossing Minimization

CSE 417 Branch & Bound (pt 4) Branch & Bound

Transcription:

sbb COIN-OR Simple Branch-and-Cut John Forrest Lou Hafer lou@cs.sfu.ca CORS/INFORMS Joint Meeting Banff, May 2004 p.1/12

Outline Basic Branch-and-Bound Branching Node Selection Cuts and Heuristics Using sbb CORS/INFORMS Joint Meeting Banff, May 2004 p.2/12

Basic Branch-and-Bound solve initial LP relaxation ; prep relaxation for branching ; add node to search tree ; while (search tree is not empty) { pop a node and rebuild relaxation ; execute branch actions to restrict relaxation ; reoptimise restricted relaxation ; if (solution) { remember solution ; } else { prep relaxation for branching ; add node to search tree ; } } extract solution ; CORS/INFORMS Joint Meeting Banff, May 2004 p.3/12

Branching Concepts Branching in sbb is based on the notion of a branching object. In the abstract, a branching object Has a set of feasible regions. Has a method to evaluate the infeasibility of a solution to a relaxation. Has a method to execute branching actions to restrict a relaxation. Has a method to rank the desirability of a given branch alternative vs. other branch alternatives. Sbb provides several common branching methods. CORS/INFORMS Joint Meeting Banff, May 2004 p.4/12

Custom Branching Strategies Custom branching strategies can be created: A custom branch object class is derived from SbbObject. It provides methods to evaluate the infeasibility of a relaxed solution, enforce a feasible solution, and construct a branching object. A class to execute branching actions is derived from SbbBranchingObject. It provides a method to execute actions that modify a relaxation to produce a restricted relaxation. A class to rank branch alternatives is derived from SbbBranchDecision. Given two branch alternatives, it must indicate which is the preferred alternative. CORS/INFORMS Joint Meeting Banff, May 2004 p.5/12

Node Selection Concepts A ranking function is used to order the search tree as a heap of relaxations requiring further evaluation. The ranking function is an attribute of the tree. An opportunity is provided to modify the ranking function every 1000 nodes and whenever a new solution is discovered. Sbb provides several common ranking functions. CORS/INFORMS Joint Meeting Banff, May 2004 p.6/12

Custom Node Selection Custom node selection functions can be created. A custom ranking function is derived from SbbCompareBase. It should provide A method for ranking two nodes. A method which is called each time a new solution is discovered. A method which is called every 1000 nodes. CORS/INFORMS Joint Meeting Banff, May 2004 p.7/12

Cut and Hueristic Concepts Sbb provides facilities for the use of cut generation and heuristic methods. Sbb maintains a vector of cut generators and a vector of heuristics. Each generator and heuristic carries information about when and how often it should be invoked. Cut generators and heuristics can be called as part of a loop which evaluates a relaxation. Each iteration generates cuts, applies heuristics, and reoptimises. In addition, cut generators can be called when a new solution is found. Heuristics can be called immediately before a relaxation is added to the search tree. CORS/INFORMS Joint Meeting Banff, May 2004 p.8/12

Custom Cuts and Heuristics Custom cut generators and heuristics should conform to a standard interface. A cut generator is called with a pointer to an OsiSolverInterface, which contains the solution to the current relaxation. It is expected to return a collection of cuts in an OsiCuts object. A heuristic has access to the entire SbbModel, including the solver and search tree. It is expected to return a solution, or an estimate of the best possible objective. Notionally, cut generators are external, independent of sbb, while heuristics can be more tightly coupled. CORS/INFORMS Joint Meeting Banff, May 2004 p.9/12

The COIN-OR Cut Generation Library The COIN-OR Cgl is a library of cut generators. It includes Cut generators for simple rounding, clique, odd hole, Gomory, knapsack, and lift-and-project cuts. A probing method which investigates the effect of forcing unsatisfied integer variables to integer values. It can tighten bounds on integer and continuous variables. All cut generators provide a standard interface. CORS/INFORMS Joint Meeting Banff, May 2004 p.10/12

sbb the program COIN-OR provides a branch-and-cut application, also called sbb. Created by make unittest in the Sbb directory. By default, includes probing, Gomory, knapsack, and odd hole cut methods from the Cgl, and a rounding heuristic. Supports solvers through the OSI. Can be built to allow choice of underlying solver at runtime. CORS/INFORMS Joint Meeting Banff, May 2004 p.11/12

Branch-and-Cut in Your Application Here s a minimal branch-and-bound solver: { OsiSolverInterface *osi = new OsiDylpSolverInterface ; SbbModel *model = new SbbModel(*osi) ; model->solver()->readmps("p0033") ; model->initialsolve() ; model->branchandbound() ; std::cout << "Best solution " << model->solver()->getobjvalue() << std::endl ; return ; } CORS/INFORMS Joint Meeting Banff, May 2004 p.12/12