OsiClpSolverInterface
OsiClpSolverInterface class
Algorithm
Hot-Start Optimization for Strong Branching:
- markHotStart(): Save current basis, factorization, solution
- Modify bounds (single variable typically)
- solveFromHotStart(): Resolve with warm start (few iterations)
- Repeat steps 2-3 for each branching candidate
- unmarkHotStart(): Release saved state This avoids full refactorization for each strong branching LP.
Complexity: Most operations $O(1)$ delegations to ClpSimplex initialSolve/resolve: $O(m·n·iterations)$ for underlying simplex Hot-start resolve: $O(k·m)$ where k = iterations to re-optimize (typically small) getBInvARow/getBInvACol: $O(nnz(B^{-1})$) per call
@invariant basis_ synchronized with modelPtr_->status arrays after each solve @invariant fakeMinInSimplex_ == true implies linearObjective_ is negated copy @invariant smallModel_ != NULL implies hot-start state is active
References:
- Lougee-Heimer, R., et al. (2003). "The Common Optimization INterface for Operations Research: Promoting open-source software in the operations research community". IBM J. Res. Dev. 47(1):57-66.
Source
Header file: `src/OsiClp/OsiClpSolverInterface.hpp`