Table of Contents:
  • 1. Introduction
  • 1.1 Why this book?
  • 1.1.1 Evolution of mathematical theories and algorithms
  • 1.1.2 Maturity of solvers and modeling systems
  • 1.1.3 Complexity of computer systems
  • 1.2 Who is this book for?
  • 1.3 What is this book about?
  • 1.3.1 Mathematical modeling
  • 1.3.2 Optimization as a modeling technique
  • 1.3.3 The essential primitives of MILP
  • 1.3.4 Illustrative examples
  • 1.3.5 Benefits of modeling and MILP
  • 1.4 What this book is not about
  • 1.5 Book overview
  • 1.6 Code provided with this book
  • 2. An overview of optimization
  • 2.1 Overview of optimization
  • 2.2 Models for optimization
  • 2.2.1 Linear programming
  • 2.2.2 Convex programming
  • 2.2.3 Network flow problems
  • 2.2.4 Mixed integer linear programming
  • 2.2.5 Mixed integer nonlinear programs
  • 2.3 Modeling problems as MILP
  • 2.3.1 Logic and binary variables
  • 2.3.2 Constraint logic programming
  • 2.3.3 Ordering
  • 2.3.4 Piecewise-linear models
  • 2.3.5 Modeling mixed integer nonlinear programs
  • 2.4 Solution methods
  • 2.4.1 Branch-and-bound
  • 2.4.2 Extensions to basic branch-and-bound
  • 2.4.3 Column generation
  • 2.4.4 Bender's decomposition
  • 2.4.5 Other approaches
  • 2.4.6 Modeling languages
  • 2.5 Conclusion
  • 3. Case study: instruction set customization
  • 3.1 Introduction
  • 3.2 Overview
  • 3.3 Formulation: parameters and decision variables
  • 3.4 Formulation: constraints
  • 3.5 Formulation: objective
  • 3.6 Modeling limitations
  • 3.7 Evaluation
  • 3.7.1 Methodology
  • 3.7.2 Results
  • 3.8 Related work
  • 3.9 Conclusions
  • 4. Case study: data center resource management
  • 4.1 Introduction
  • 4.2 Overview
  • 4.3 Formulation: parameters and decision variables
  • 4.4 Formulation: constraints
  • 4.5 Formulation: objective
  • 4.6 Modeling limitations
  • 4.7 Evaluation
  • 4.7.1 Methodology
  • 4.7.2 Results
  • 4.8 Related work
  • 4.9 Conclusions
  • 5. Case study: spatial architecture scheduling
  • 5.1 Introduction
  • 5.2 Overview
  • 5.3 Formulation: parameters and decision variables
  • 5.4 Formulation: constraints
  • 5.5 Formulation: objective
  • 5.6 Architecture-specific modeling
  • 5.6.1 Architecture-specific details for TRIPS
  • 5.6.2 Architecture-specific details for DySER
  • 5.6.3 Architecture-specific details for PLUG
  • 5.7 Modeling limitations
  • 5.8 Evaluation
  • 5.8.1 Methodology
  • 5.8.2 Results
  • 5.9 Related work
  • 5.10 Discussion and conclusions
  • 6. Case study: resource allocation in tiled architectures
  • 6.1 Introduction
  • 6.2 Overview
  • 6.3 Formulation: parameters and decision variables
  • 6.4 Formulation: constraints
  • 6.5 Formulation: objective
  • 6.6 Modeling limitations
  • 6.7 Evaluation
  • 6.7.1 Methodology
  • 6.7.2 Results
  • 6.8 Related work
  • 6.9 Conclusions
  • 7. Conclusions
  • 7.1 Properties of a MILP-friendly problem
  • 7.2 Understanding the limitations of MILP
  • 7.2.1 Properties of optimization problems unsuitable to MILP
  • 7.2.2 Example problems poorly suited to MILP
  • 7.3 Implementing your optimization problems in MILP
  • 7.3.1 First steps
  • 7.3.2 Dealing with MILP challenges
  • 7.3.3 Optimizing and tuning models
  • 7.4 Lessons learned
  • Bibliography
  • Authors' biographies.