+353-1-416-8900REST OF WORLD
+44-20-3973-8888REST OF WORLD
1-917-300-0470EAST COAST U.S
1-800-526-8630U.S. (TOLL FREE)

Integer Programming. Edition No. 2

  • Book

  • 336 Pages
  • November 2020
  • John Wiley and Sons Ltd
  • ID: 5836282

A PRACTICAL GUIDE TO OPTIMIZATION PROBLEMS WITH DISCRETE OR INTEGER VARIABLES, REVISED AND UPDATED

The revised second edition of Integer Programming explains in clear and simple terms how to construct custom-made algorithms or use existing commercial software to obtain optimal or near-optimal solutions for a variety of real-world problems. The second edition also includes information on the remarkable progress in the development of mixed integer programming solvers in the 22 years since the first edition of the book appeared. The updated text includes information on the most recent developments in the field such as the much improved preprocessing/presolving and the many new ideas for primal heuristics included in the solvers. The result has been a speed-up of several orders of magnitude. The other major change reflected in the text is the widespread use of decomposition algorithms, in particular column generation (branch-(cut)-and-price) and Benders’ decomposition. The revised second edition:

  • Contains new developments on column generation
  • Offers a new chapter on Benders’ algorithm
  • Includes expanded information on preprocessing, heuristics, and branch-and-cut
  • Presents several basic and extended formulations, for example for fixed cost
  • network flows
  • Also touches on and briefly introduces topics such as non-bipartite matching, the complexity of extended formulations or a good linear program for the implementation of lift-and-project 

Written for students of integer/mathematical programming in operations research, mathematics, engineering, or computer science, Integer Programming offers an updated edition of the basic text that reflects the most recent developments in the field.

Table of Contents

Preface to the Second Edition xii

Preface to the First Edition xiii

Abbreviations and Notation xvii

About the Companion Website xix

1 Formulations 1

1.1 Introduction 1

1.2 What Is an Integer Program? 3

1.3 Formulating IPs and BIPs 5

1.4 The Combinatorial Explosion 8

1.5 Mixed Integer Formulations 9

1.6 Alternative Formulations 12

1.7 Good and Ideal Formulations 15

1.8 Notes 18

1.9 Exercises 19

2 Optimality, Relaxation, and Bounds 25

2.1 Optimality and Relaxation 25

2.2 Linear Programming Relaxations 27

2.3 Combinatorial Relaxations 28

2.4 Lagrangian Relaxation 29

2.5 Duality 30

2.6 Linear Programming and Polyhedra 32

2.7 Primal Bounds: Greedy and Local Search 34

2.8 Notes 38

2.9 Exercises 38

3 Well-Solved Problems 43

3.1 Properties of Easy Problems 43

3.2 IPs with Totally Unimodular Matrices 44

3.3 Minimum Cost Network Flows 46

3.4 Special Minimum Cost Flows 48

3.4.1 Shortest Path 48

3.4.2 Maximum s - t Flow 49

3.5 Optimal Trees 50

3.6 Submodularity and Matroids 54

3.7 Two Harder Network Flow Problems 57

3.8 Notes 59

3.9 Exercises 60

4 Matchings and Assignments 63

4.1 Augmenting Paths and Optimality 63

4.2 Bipartite Maximum Cardinality Matching 65

4.3 The Assignment Problem 67

4.4 Matchings in Nonbipartite Graphs 73

4.5 Notes 74

4.6 Exercises 75

5 Dynamic Programming 79

5.1 Some Motivation: Shortest Paths 79

5.2 Uncapacitated Lot-Sizing 80

5.3 An Optimal Subtree of a Tree 83

5.4 Knapsack Problems 84

5.4.1 0-1 Knapsack Problems 85

5.4.2 Integer Knapsack Problems 86

5.5 The Cutting Stock Problem 89

5.6 Notes 91

5.7 Exercises 92

6 Complexity and Problem Reductions 95

6.1 Complexity 95

6.2 Decision Problems, and Classes NP and P 96

6.3 Polynomial Reduction and the Class NPC 98

6.4 Consequences of P =NP orP ≠NP 103

6.5 Optimization and Separation 104

6.6 The Complexity of Extended Formulations 105

6.7 Worst-Case Analysis of Heuristics 106

6.8 Notes 109

6.9 Exercises 110

7 Branch and Bound 113

7.1 Divide and Conquer 113

7.2 Implicit Enumeration 114

7.3 Branch and Bound: an Example 116

7.4 LP-Based Branch and Bound 120

7.5 Using a Branch-and-Bound/Cut System 123

7.6 Preprocessing or Presolve 129

7.7 Notes 134

7.8 Exercises 135

8 Cutting Plane Algorithms 139

8.1 Introduction 139

8.2 Some Simple Valid Inequalities 140

8.3 Valid Inequalities 143

8.4 A Priori Addition of Constraints 147

8.5 Automatic Reformulation or Cutting Plane Algorithms 149

8.6 Gomory’s Fractional Cutting Plane Algorithm 150

8.7 Mixed Integer Cuts 153

8.7.1 The Basic Mixed Integer Inequality 153

8.7.2 The Mixed Integer Rounding (MIR) Inequality 155

8.7.3 The Gomory Mixed Integer Cut 155

8.7.4 Split Cuts 156

8.8 Disjunctive Inequalities and Lift-and-Project 158

8.9 Notes 161

8.10 Exercises 162

9 Strong Valid Inequalities 167

9.1 Introduction 167

9.2 Strong Inequalities 168

9.3 0-1 Knapsack Inequalities 175

9.3.1 Cover Inequalities 175

9.3.2 Strengthening Cover Inequalities 176

9.3.3 Separation for Cover Inequalities 178

9.4 Mixed 0-1 Inequalities 179

9.4.1 Flow Cover Inequalities 179

9.4.2 Separation for Flow Cover Inequalities 181

9.5 The Optimal Subtour Problem 183

9.5.1 Separation for Generalized Subtour Constraints 183

9.6 Branch-and-Cut 186

9.7 Notes 189

9.8 Exercises 190

10 Lagrangian Duality 195

10.1 Lagrangian Relaxation 195

10.2 The Strength of the Lagrangian Dual 200

10.3 Solving the Lagrangian Dual 202

10.4 Lagrangian Heuristics 205

10.5 Choosing a Lagrangian Dual 207

10.6 Notes 209

10.7 Exercises 210

11 Column (and Row) Generation Algorithms 213

11.1 Introduction 213

11.2 The Dantzig-Wolfe Reformulation of an IP 215

11.3 Solving the LP Master Problem: Column Generation 216

11.4 Solving the Master Problem: Branch-and-Price 219

11.5 Problem Variants 222

11.5.1 Handling Multiple Subproblems 222

11.5.2 Partitioning/Packing Problems with Additional Variables 223

11.5.3 Partitioning/Packing Problems with Identical Subsets 224

11.6 Computational Issues 225

11.7 Branch-Cut-and-Price: An Example 226

11.7.1 A Capacitated Vehicle Routing Problem 226

11.7.2 Solving the Subproblems 229

11.7.3 The Load Formulation 230

11.8 Notes 231

11.9 Exercises 232

12 Benders’ Algorithm 235

12.1 Introduction 235

12.2 Benders’ Reformulation 236

12.3 Benders’ with Multiple Subproblems 240

12.4 Solving the Linear Programming Subproblems 242

12.5 Integer Subproblems: Basic Algorithms 244

12.5.1 Branching in the (x, 𝜂, y)-Space 244

12.5.2 Branching in (x, 𝜂)-Space and “No-Good” Cuts 246

12.6 Notes 247

12.7 Exercises 248

13 Primal Heuristics 251

13.1 Introduction 251

13.2 Greedy and Local Search Revisited 252

13.3 Improved Local Search Heuristics 255

13.3.1 Tabu Search 255

13.3.2 Simulated Annealing 256

13.3.3 Genetic Algorithms 257

13.4 Heuristics Inside MIP Solvers 259

13.4.1 Construction Heuristics 259

13.4.2 Improvement Heuristics 261

13.5 User-Defined MIP heuristics 262

13.6 Notes 265

13.7 Exercises 266

14 From Theory to Solutions 269

14.1 Introduction 269

14.2 Software for Solving Integer Programs 269

14.3 How Do We Find an Improved Formulation? 272

14.4 Multi-item Single Machine Lot-Sizing 277

14.5 A Multiplexer Assignment Problem 282

14.6 Integer Programming and Machine Learning 285

14.7 Notes 287

14.8 Exercises 287

References 291

Index 311

Authors

Laurence A. Wolsey L'Universite Catholique de Louvain.