# MIPLearn — MIPLearn 0.3

# MIPLearn

MIPLearn is an extensible framework for solving discrete optimization problems using a combination of Mixed-Integer Linear Programming (MIP) and Machine Learning (ML). MIPLearn uses ML methods to automatically identify patterns in previously solved instances of the problem, then uses these patterns to accelerate the performance of conventional state-of-the-art MIP solvers such as CPLEX, Gurobi or XPRESS.

Unlike pure ML methods, MIPLearn is not only able to find high-quality solutions to discrete optimization problems, but it can also prove the optimality and feasibility of these solutions. Unlike conventional MIP solvers, MIPLearn can take full advantage of very specific observations that happen to be true in a particular family of instances (such as the observation that a particular constraint is typically redundant, or that a particular variable typically assumes a certain value). For certain classes of problems, this approach has been shown to provide significant performance benefits (see benchmarks and references).

## Contents

User Guide

- 1. Benchmark Problems
  - 1.1. Overview
  - 1.2. Bin Packing
    - Formulation
    - Random instance generator
    - Example
  - 1.3. Multi-Dimensional Knapsack
    - Formulation
    - Random instance generator
    - Example
  - 1.4. Capacitated P-Median
    - Formulation
    - Random instance generator
    - Example
  - 1.5. Set cover
    - Formulation
    - Random instance generator
    - Example
  - 1.6. Set Packing
    - Formulation
    - Random instance generator
    - Example
  - 1.7. Stable Set
    - Formulation
    - Random instance generator
    - Example
  - 1.8. Traveling Salesman
    - Formulation
    - Random instance generator
    - Example
  - 1.9. Unit Commitment
    - Formulation
    - Random instance generator
    - Example
  - 1.10. Vertex Cover
    - Formulation
    - Random instance generator
    - Example
- 2. Training Data Collectors
  - 2.1. Overview
  - 2.2. HDF5 Format
    - Example
  - 2.3. Basic collector
    - Data fields
    - Example
- 3. Feature Extractors
  - 3.1. Overview
  - 3.2. H5FieldsExtractor
    - Example
  - 3.3. AlvLouWeh2017Extractor
    - Example
- 4. Primal Components
  - 4.1. Primal component actions
  - 4.2. Memorizing primal component
    - Examples
  - 4.3. Independent vars primal component
    - Examples
  - 4.4. Joint vars primal component
    - Examples
  - 4.5. Expert primal component
    - Example
- 5. Solvers
  - 5.1. LearningSolver
    - Example

API Reference

- 6. Benchmark Problems
  - 6.1. miplearn.problems.binpack
  - 6.2. miplearn.problems.multiknapsack
  - 6.3. miplearn.problems.pmedian
  - 6.4. miplearn.problems.setcover
  - 6.5. miplearn.problems.setpack
  - 6.6. miplearn.problems.stab
  - 6.7. miplearn.problems.tsp
  - 6.8. miplearn.problems.uc
  - 6.9. miplearn.problems.vertexcover
- 7. Collectors & Extractors
  - 7.1. miplearn.classifiers.minprob
  - 7.2. miplearn.classifiers.singleclass
  - 7.3. miplearn.collectors.basic
  - 7.4. miplearn.features.fields
  - 7.5. miplearn.features.AlvLouWeh2017
- 8. Components
  - 8.1. miplearn.components.primal.actions
  - 8.2. miplearn.components.primal.expert
  - 8.3. miplearn.components.primal.indep
  - 8.4. miplearn.components.primal.joint
  - 8.5. miplearn.components.primal.mem
- 9. Solvers
  - 9.1. miplearn.solvers.abstract
  - 9.2. miplearn.solvers.gurobi
  - 9.3. miplearn.solvers.learning
- 10. Helpers
  - 10.1. miplearn.io
  - 10.2. miplearn.h5

1. Benchmark Problems