Welcome to the Webinar. What s New in Gurobi 7.5

Similar documents
What's New in Gurobi 7.0

Parallel and Distributed Optimization with Gurobi Optimizer

Exploiting Degeneracy in MIP

The Gurobi Optimizer. Bob Bixby

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

Using Multiple Machines to Solve Models Faster with Gurobi 6.0

The MIP-Solving-Framework SCIP

What's New In Gurobi 5.0. Dr. Edward Rothberg

The Gurobi Solver V1.0

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

Recent Developments in the Gurobi Optimizer

What s New in CPLEX Optimization Studio ?

Motivation for Heuristics

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

Advanced Use of GAMS Solver Links

Algorithms II MIP Details

Major New Features in Gurobi 7.0

Solving a Challenging Quadratic 3D Assignment Problem

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

Mixed Integer Programming Class Library (MIPCL)

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

Applied Mixed Integer Programming: Beyond 'The Optimum'

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

ILOG CPLEX 10.0 Interactive Optimizer January 2006

Gurobi Guidelines for Numerical Issues February 2017

Parallelizing the dual revised simplex method

Solving a Challenging Quadratic 3D Assignment Problem

LP SCIP NEOS URL. example1.lp 2.1 LP 1. minimize. subject to, bounds, free, general, binary, end. .lp 1 2.2

Primal Heuristics in SCIP

Basic Concepts of Constraint Integer Programming

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

Gurobi Implementation

Exact solutions to mixed-integer linear programming problems

Addressing degeneracy in the dual simplex algorithm using a decompositon approach

An Introduction to ODH CPLEX. Alkis Vazacopoulos Robert Ashford Optimization Direct Inc. April 2018

Using ODHeuristics To Solve Hard Mixed Integer Programming Problems. Alkis Vazacopoulos Robert Ashford Optimization Direct Inc.

Linear & Integer Programming: A Decade of Computation

Fundamentals of Integer Programming

Constraint Branching and Disjunctive Cuts for Mixed Integer Programs

Conflict Analysis in Mixed Integer Programming

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

Integer Optimization: Mathematics, Algorithms, and Applications

Recent Advances In The New Mosek 8

Algorithms for Decision Support. Integer linear programming models

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

The AIMMS Outer Approximation Algorithm for MINLP

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

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

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

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

Assessing Performance of Parallel MILP Solvers

Discrete Optimization with Decision Diagrams

Agenda. Understanding advanced modeling techniques takes some time and experience No exercises today Ask questions!

Implementing Constraint Handlers in SCIP

Solving Large-Scale Energy System Models

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

The AIMMS Outer Approximation Algorithm for MINLP

Noncommercial Software for Mixed-Integer Linear Programming

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

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

3 INTEGER LINEAR PROGRAMMING

The Mixed Integer Linear Programming Solver

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

Solving lexicographic multiobjective MIPs with Branch-Cut-Price

GAMS and High-Performance Computing

Benders in a nutshell Matteo Fischetti, University of Padova

optlang Documentation

Package Rcplex. June 12, 2016

RENS. The optimal rounding. Timo Berthold

High performance computing and the simplex method

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

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

COMP9334: Capacity Planning of Computer Systems and Networks

The Decomposition Algorithm

Pivot and Gomory Cut. A MIP Feasibility Heuristic NSERC

Recent enhancements in. GAMS Development Corporation

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

A Nonlinear Presolve Algorithm in AIMMS

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

SAS/OR 14.2 User s Guide: Mathematical Programming. The OPTMILP Procedure

On the Optimization of CPLEX Models

AIMMS Function Reference - GMPInstance Procedures and Functions

Modern Benders (in a nutshell)

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

11th DIMACS Implementation Challenge in Collaboration with ICERM: Steiner Tree Problems

GUROBI 1 GUROBI Installation 2 GUROBI Using the Matlab Interface 3 GUROBI Features 4 GUROBI Appendix A 5 GUROBI Appendix B 13 GUROBI Appendix C 19

Primal Heuristics for Branch-and-Price Algorithms

Package Rcplex. February 15, 2013

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

LaGO. Ivo Nowak and Stefan Vigerske. Humboldt-University Berlin, Department of Mathematics

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

A Feasibility Pump heuristic for general Mixed-Integer Problems

A hard integer program made easy by lexicography

Introduction to CPLEX. Some very convenient solvers for most students include those with Excel and Matlab.

Multiple-choice Vector Bin Packing: Arc-flow Formulation with Graph Compression

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

Computational Experience with Parallel Integer Programming using the CHiPPS Framework. INFORMS Annual Conference, San Diego, CA October 12, 2009

Pseudo-polynomial formulations for bin packing and cutting stock problems

Strategies for Using Algebraic Modeling Languages to Formulate Second-Order Cone Programs

The Ascendance of the Dual Simplex Method: A Geometric View

Transcription:

Welcome to the Webinar What s New in Gurobi 7.5

Speaker Introduction Dr. Tobias Achterberg Director of R&D at Gurobi Optimization Formerly a developer at ILOG, where he worked on CPLEX 11.0 to 12.6 Obtained his degree in mathematics and computer science from the Technical University of Berlin and the Zuse Institute Berlin, then finished doctorate in mathematics with Prof. Martin Grötschel in 2007 Dr. Achterberg is the author of SCIP which is regarded as the best academic MIP solver 2

What's New? New features in Gurobi 7.5 Improved Python interface Multi-objective improvements JavaDoc documentation Support new versions of Python, R, Visual Studio Compute Server communication statistics New parameters Additional minor enhancements Performance improvements 3

Python Modeling Enhancements 4

Python Modeling Enhancements Significant simplification of our Python API Simpler implementation of mathematical models Model.addConstr: handles general constraints, range constraints and indicator constraints Model.addConstrs: allows you to use Python generator expressions over all constraint types GCHelper: helper functions for handling general constraints Python models become more concise and easier to read 5

Python Modeling Enhancements addconstr() Integrated algebraic interface for adding constraints Old: model.addqconstr( x*x + y*y <= 2.0, c1 ) model.addrange( x+y, 1.0, 2.0, c2 ) model.addgenconstrindicator( x, True, y+z == 1.0, c3 ) model.addgenconstrmax( x, [y,z], 2.0, c4 ) New: model.addconstr( x*y + y*y <= 2.0, c1 ) model.addconstr( x+y == [1.0,2.0], c2 ) model.addconstr((x == 1) >> (y+z == 1.0), c3 ) model.addconstr( x == max_(y,z,2.0), c4 ) 6

Python Modeling Enhancements Helper Functions General constraint helper functions: We introduced functions max_(), min_(), abs_(), and_(), or_() to simplify construction of general constraints model.addconstr(x == abs_(y)) model.addconstr(x == or_(y,z,w)) Note: any_() can be used as a synonym for or_() Integrate general constraints with addconstrs() The new syntax allows you to add sets of general constraints in batches Old: X, Y, Gcons = model.addvars(10), model.addvars(10), {} for i in X: Gcons[i] = model.addgenconstrmin(x[i], [Y[i], 10], name= Gc ) New: X, Y = model.addvars(10), model.addvars(10) Gcons = model.addconstrs((x[i] == min_(y[i],10) for i in X), name= Gc ) 7

Python Modeling Enhancements remove() We extended model.remove() to handle lists, tuples and dictionaries of objects Old: for i in model.getconstrs(): model.remove(i) New: model.remove(model.getconstrs()) 8

Enhanced Multi-Objective API 9

Enhanced Multi-Objective API Easier definition of multiple objectives We introduced model.setobjectiven(linexpr, index,...) Old (Gurobi 7.0): coef1 = [0, 1, 2, 3, 4] coef2 = [4, 3, 2, 1, 0] x = model.addvars(5) model.numobj = 2 model.params.objnumber = 0 model.objnpriority = 2 model.objnweight = 1 model.setattr(grb.attr.objn, x, coef1) model.params.objnumber = 1 model.objnpriority = 1 model.objnweight = 1 model.setattr(grb.attr.objn, x, coef2) New (Gurobi 7.5): coef1 = [0, 1, 2, 3, 4] coef2 = [4, 3, 2, 1, 0] x = model.addvars(5) model.setobjectiven(x.prod(coef1), 0, priority=2, weight=1) model.setobjectiven(x.prod(coef2), 1, priority=1, weight=1) Or equivalently: x = model.addvars(5) model.setobjectiven(x[1]+2*x[2]+3*x[3]+4*x[4], 0, priority=2, weight=1) model.setobjectiven(4*x[0]+3*x[1]+2*x[2]+x[3], 1, priority=1, weight=1) 10

Enhanced Multi-Objective API Enhanced termination control for multi-objective optimization We introduced model.getmultiobjenv(): env0 = model.getmultiobjenv(0) env1 = model.getmultiobjenv(1) env0.setparam( TimeLimit,100) env1.setparam( TimeLimit,10) model.optimize() model.discardmultiobjenvs() Allows for fine-grained control of each multi-objective optimization pass Algorithmic choices Termination criteria One optimization pass per objective priority level Settings for additional objectives of same priority level are ignored Use MIP starts for first priority level objective solve 11

Other Enhancements 12

JavaDoc Documentation Contains our full documentation Can be used in any IDE that supports JavaDoc, e.g. Eclipse Provided as gurobi-javadoc.jar 13

Platforms Added support for Python 3.6 Plus a Mac Anaconda 3.6 package Added support for Visual Studio 2017 on Windows Added support for R 3.4 14

Compute Server Statistics When remote environment is freed, we print communication statistics to the log: Compute Server communication statistics: Sent: 8.3 MBytes in 244 msgs and 0.76s (10.92 MB/s) Received: 7.2 MBytes in 304603 msgs and 1.53s (4.71 MB/s) Useful to assess overhead of Compute Server or cloud communication 15

New Parameters We added two additional parameters: IgnoreNames: Discard all user-provided names: constraint, variable and problem names User request to satisfy security concern when application is deployed in the cloud or using Compute Server Also useful to generate recording file to send to Gurobi support if sending names is a security concern StartNodeLimit: Provides additional control over how much work is performed to complete a partial MIP start 16

Additional Enhancements Improved performance of.net expression building No longer use "using" keyword in C++ header files Python: Raise AttributeError instead of GurobiError if attributes are used incorrectly printquality() also shows which variable/constraint is the maximally violated one Added Callback.useSolution() add solution immediately, and check if it is feasible Automatically flush pending changes when GRBpresolvemodel() is called Well-defined meaning of setting NodeLimit to 0 Support file compression for recording files Improved numerics in piece-wise linear simplex presolve aggregator presolve fixing of variables with almost identical bounds min/max calculation of constraint activities in presolve Gomory cuts reduced number of cases where solution exhibits small constraint violations Setting user cutoff equal to optimal value will always lead to finding such solution instead of a cutoff status 17

Performance Improvements 18

Two Kinds of Benchmarks Internal benchmarks Most important: compare Gurobi version-over-version Based on internal library of 4538 models External, competitive benchmarks Conducted by Hans Mittelmann, Arizona State University http://plato.asu.edu/bench.html For MIP largely based upon MIPLIB 2010 19

Internal Benchmarks 20

Gurobi MIP Library (4538 models) 1E+09 100000000 10000000 1000000 1,000,000 Columns 100000 10000 100,000 1000 100 10 1 1 10 100 1000 10000 100000 1000000 10000000 100000000 Rows 21

Performance Improvements in Gurobi 7.5 Problem Class >1s >100s # Wins Losses Speedup # Wins Losses Speedup LP: concur. 449 120 122 1.15x 149 62 42 1.47x primal 450 109 132 1.15x 201 63 55 1.28x dual 440 134 115 1.19x 168 71 49 1.42x barrier 458 113 141 1.09x 155 67 48 1.34x QCP/SOCP 93 18 9 1.17x 9 3 0 3.03x MIP 2103 1027 636 1.33x 901 526 259 1.70x MIQP 120 71 25 3.22x 65 44 12 7.66x MIQCP 244 70 111 0.91x 62 28 24 0.97x Gurobi 7.0 vs. 7.5: > 1.00x means that Gurobi 7.5 is faster than Gurobi 7.0 22

Continual Performance Improvements 600 538 Number of unsolved models 500 456 400 371 335 300 286 200 200 100 92 46 0 v1.1 v2.0 v3.0 v4.0 v5.0 v6.0 v7.0 v7.5 Time limit: 10000 sec. Intel Xeon CPU E3-1240 v3 @ 3.40GHz 4 cores, 8 hyper-threads 32 GB RAM MIP test set has 3420 models: - 217 discarded due to inconsistent answers - 788 discarded that none of the versions can solve 23

Where do the MIP improvements come from? 24

MIP Improvements in Gurobi 7.5 Presolve 7.8% Improved multi-row reductions 2.0% More efficient GUB usage and improved lifting 0.7% Improved domain propagation 0.4% Improved cancelation and fill handling 1.5% More lifting of knapsack constraints 0.5% Improved work limits 1.1% Extract common sub-expressions 0.4% Euclidian reductions in bound strengthening 1.0% Node presolve 4.2% Improved work limits in probing 0.3% Dual propagation for probing 0.8% Propagate dual bound 1.0% Improved conflict analysis 1.3% Exploit cliques for reduced cost strengthening 0.7% 25

MIP Improvements in Gurobi 7.5 Symmetry 7.0% Improved symmetry detection performance 4.1% Apply orbital probing to non-binary variables 0.7% Flip and split variables to induce symmetry 2.1% LP 17.5% Use concurrent simplex for root solve 2.6% Automatically select simplex and pricing strategy 2.5% General LP solving improvements 11.7% Cuts 14.3% Better root node control 6.3% Improved sub-mip cut separation 1.0% Improved MIR and flow cover cuts 1.9% Special odd-cycle cuts 1.3% Improved aggregation 2.8% Better clique cut separation 0.3% 26

MIP Improvements in Gurobi 7.5 Branching 2.8% Improved default branching strategy 2.8% Heuristics 4.6% Improved heuristics working on original model 0.9% Improved heuristics run in parallel to root cut loop 1.1% Improved work load balancing 1.4% Improved automatic adjustment of RINS fixing rate 0.5% More aggressive fix-and-dive heuristics 0.6% SOS constraints Improved SOS presolve 2.4% Node probing on SOS constraints 7.3% Improved SOS branching rules 1.4% 11.4% on SOS models 27

External Benchmarks Hans Mittelmann: http://plato.asu.edu/bench.html 28

MIP Solve Times Gurobi 7.5 vs. Competition: Solve times > 1.0 means Gurobi faster Benchmark # CPLEX 12.7.1 XPRESS 8.2.1 P=1 P=4 P=12 P=48 P=1 P=4 P=12 P=48 Optimality 87 1.31x 1.37x 1.17x - 1.91x 1.60x 1.46x - Feasibility 35-1.20x - - - 2.93x - - Infeasibility 19-1.15x - - - 1.71x - - "Solvable" Optim. 218 - - 1.10x 1.05x - - 1.95x 1.78x Number of solved models in solvable set P=12: Gurobi 210, Cplex 207, Xpress 197 P=48: Gurobi 211, Cplex 214, Xpress 200 Complete test data available here (data from July 20, 2017): http://plato.asu.edu/ftp/milpc.html: "Optimality", time limit 7200 sec. http://plato.asu.edu/ftp/feas_bench.html: "Feasibility", time limit 3600 sec., time to first solution http://plato.asu.edu/ftp/infeas.html: "Infeasibility", time limit 3600 sec. http://plato.asu.edu/ftp/solvable.html: "Solvable", time limit 7200 sec. 29

LP Solve Times Gurobi 7.5 vs. Competition: Solve times > 1.0 means Gurobi faster Benchmark # CPLEX 12.7.1 XPRESS 8.2.1 Mosek 8.0 Simplex 40 1.91x 1.22x 3.65x Barrier 45 1.84x 1.03x 2.33x Concurrent 45 2.39x 1.15x - Complete test data available here (data from July 20, 2017): http://plato.asu.edu/ftp/lpsimp.html: Simplex, time limit 25000 sec., 8 threads http://plato.asu.edu/ftp/lpcom.html: Barrier and concurrent, time limit 25000 sec., 8 threads 30

Quadratic Model Solve Times Gurobi 7.5 vs. Competition: Solve times > 1.0 means Gurobi faster Benchmark # CPLEX 12.7.1 XPRESS 8.2.1 Mosek 8.0 SOCP 18 3.99x 1.26x 1.02x MISOCP 47 3.19x 1.12x 8.98x Binary QP 57 1.37x 2.13x - Convex discrete 19 1.15x 2.84x 4.94x Complete test data available here (data from July 20, 2017): http://plato.asu.edu/ftp/socp.html: SOCP, time limit 3600 sec., 8 threads http://plato.asu.edu/ftp/misocp.html: MISOCP, time limit 7200 sec., 8 threads http://plato.asu.edu/ftp/qplib.html: binary QP, time limit 3600 sec., 8 threads http://plato.asu.edu/ftp/convex.html: convex discrete, time limit 7200 sec., 8 threads 31

Next Steps 7.5 upgrades for existing Gurobi users Visit the What's New in Gurobi page and follow instructions in the bottom: http://www.gurobi.com/products/whats-new/whats-new-in-the-latest-version For additional questions, or to request a free trial, contact us at info@gurobi.com 32