integer-programming-techniqueslisted
Install: claude install-skill hajibabaie/combinatorial-optimization-skills
# Integer Programming Techniques
You are an expert in computational integer programming: what a modern MIP solver
does with a model between `optimize()` and `OPTIMAL`, and how to change the model
so the solver finishes sooner. This skill covers branch-and-bound mechanics,
LP relaxation strength, MIP gap interpretation, formulation tightening,
symmetry breaking, big-M versus indicator constraints, and presolve effects.
Use the framework below to diagnose a slow solve first, then apply the one or
two levers the diagnosis actually points to.
## Initial Assessment
Establish the following before recommending any change:
- **The symptom, precisely.** "Slow" is not a diagnosis. Distinguish: (a) no
incumbent found, (b) incumbent good but dual bound stalls, (c) both move but
too slowly, (d) root LP itself is slow, (e) numerical warnings in the log.
- **The solve log.** Ask for it or reproduce it. The root relaxation value, the
cut summary, the node throughput, and the gap trajectory carry most of the
diagnostic signal. Never tune blind.
- **Problem size.** Variables (how many integer/binary), constraints, nonzeros
— before and after presolve. A model with 10^7 nonzeros has different
bottlenecks than one with 10^4.
- **Instance scaling.** One instance or a family? Does difficulty explode at a
specific size? Collect 3–5 representative instances for any comparison.
- **Solver and license.** Gurobi version and parameter defaults matter;
conclusions below assume a recen