MIPSolverCbc

COIN-OR Cbc implementation of IMIPSolver interface

COIN-OR Cbc implementation of IMIPSolver interface

Provides open-source MIP solving using Cbc branch-and-cut solver.

MIPSolverCbc Class:

Key Data Structures:

CbcMessageHandler:

Limitations:

@note Default open-source MIP solver, no license required

Algorithm

MIP Solution Pool (getAllVariableSolutions): CBC can return multiple feasible integer solutions. SHOT uses these as candidate points for NLP evaluation:

  • More solutions = more chances to find primal feasible point
  • Controlled by setSolutionLimit()

For binary x with solution x̂ ∈ {0,1}ⁿ: $$∑(x_{j} : x̂_{j}=1) - ∑(x_{j} : x̂_{j}=0) <= |{j: x̂_{j}=1}| - 1$$ Prevents cycling when NLP subproblem fails or solution is infeasible.

Complexity: Each MIP solve is NP-hard; CBC uses B&C with CGL cuts

References:

  • Duran & Grossmann (1986) - Outer Approximation for MINLP
  • Kronqvist et al. (2019) - SHOT solver description
  • Kelley's cutting-plane method (1960)
  • Solution pool heuristics in MIP solvers

See Also

Source

Header file: `src/MIPSolver/MIPSolverCbc.h`