LLM-Guided Evolution of Symbolic Acceleration Inequality Families for MILP
Organizations: Department of Electrical and Computer Engineering, University of British Columbia, Vancouver, BC, Canada · Huawei Technologies Canada, Burnaby, BC, Canada · Department of Mechanical and Industrial Engineering, University of Toronto, Toronto, ON, Canada
Abstract
Integer programming (IP) is central to many combinatorial optimization tasks but remains challenging due to its NP-hard nature. A practical way to improve IP solvers is to manually design inequality families that exploit problem structure. However, this creative process requires deep expertise and has therefore been difficult to automate. Our proposed framework, Symbolic Acceleration via Generative Evolution (SAGE), automates symbolic discovery of acceleration inequality families at the modeling level. It reasons over a symbolic IP formulation and a natural language description of the problem to discover a reusable set of acceleration inequality families that can be instantiated for each problem instance. These acceleration inequality families are selected through empirical admissibility and impact screening rather than mathematical proofs. SAGE (i) initializes a population of candidate acceleration inequality families via an initializer agent that uses an LLM; (ii) it screens candidates for admissibility on a small development admissibility set for solution feasibility and the separation of the relaxation solution; and (iii) it iteratively refines the population of inequalities through evolutionary crossover and mutation agents. Across seven MILP benchmarks, SAGE reduces optimality gaps by up to relative to baseline MILP formulations solved with a fixed time budget and reaches target gaps up to faster according to shifted geometric mean speedup. Comprehensive ablations show its robustness across different LLM backends and across solvers and internal cut settings. Code: https://github.com/milad1378yz/sage
Figures & tables
| Mechanism | Stage | Problem-specific structure | Operates on | Derivation | Output |
|---|---|---|---|---|---|
| SAGE | Model design, before the solver is called | Yes, for a problem class | Symbolic MILP formulation | Automated, by LLM agents with evolutionary search | A reusable acceleration inequality family, instantiated for each instance |
| Formulation strengthening ( Vielma, 2015 ; Klotz & Oberdieck, 2024 ) | Model design, before the solver is called | Yes, for a problem class | Symbolic MILP formulation | Manual, by an expert | A tighter equivalent formulation of the problem class |
| Solver presolve ( Savelsbergh, 1994 ; Achterberg et al., 2020 ) | Inside the solver, before branch-and-bound | No, generic reductions | Instantiated MILP | Automated, by solver routines | A reduced model of that one instance |
| Solver cuts and learned runtime policies ( Turner et al., 2023 ; Gasse et al., 2019 ; Li et al., 2023 ) | Inside the solver, during branch-and-bound | No, generic cuts or learned policies | Instantiated MILP | Automated, by solver routines or trained policies | Cuts and search decisions during the solve |
| Problem | LLM | 5 s | 10 s | 50 s | 150 s | 300 s | 1000 s | 2000 s | Average |
|---|---|---|---|---|---|---|---|---|---|
| TSP | DeepSeek-R1 | 8.2 (± 26.0) | 9.1 (± 26.9) | 11.9 (± 32.2) | 18.1 (± 30.9) | 18.5 (± 33.8) | 12.9 (± 31.3) | 20.7 (± 30.7) | 14.2 |
| Gemini 3 Pro | 13.1 (± 27.5) | 15.0 (± 27.9) | 22.6 (± 31.3) | 34.2 (± 30.3) | 27.6 (± 33.1) | 26.4 (± 33.3) | 37.0 (± 31.1) | 25.1 | |
| GPT-5.1 | 12.1 (± 28.4) | 8.8 (± 29.7) | 15.6 (± 33.2) | 17.4 (± 34.1) | 11.3 (± 35.0) | 16.7 (± 33.8) | 18.2 (± 31.6) | 14.3 | |
| MCND | DeepSeek-R1 | 3.3 (± 17.8) | 4.3 (± 19.9) | 11.7 (± 27.0) | 13.0 (± 28.2) | 14.7 (± 28.9) | 18.9 (± 32.4) | 16.7 (± 29.7) | 11.8 |
| Gemini 3 Pro | 6.8 (± 17.7) | 8.2 (± 19.9) | 15.1 (± 25.8) | 17.4 (± 26.9) | 17.8 (± 25.5) | 23.2 (± 27.9) | 15.8 (± 28.6) | 14.9 | |
| GPT-5.1 | 25.5 (± 30.1) | 22.3 (± 29.6) | 16.5 (± 27.7) | 6.9 (± 30.0) | 15.6 (± 28.9) | 18.1 (± 29.8) | 20.4 (± 25.2) | 17.9 |
| Average | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Problem | B/A | SGM | B/A | SGM | B/A | SGM | B/A | SGM | B/A | SGM | B/A | SGM |
| TSP | 26/35 | 3.21 | 27/37 | 3.13 | 27/37 | 3.16 | 31/44 | 3.00 | 44/47 | 1.83 | 31.0/40.0 | 2.87 |
| MCND | 56/57 | 1.04 | 62/62 | 1.04 | 62/62 | 1.03 | 69/69 | 1.04 | 76/74 | 0.92 | 65.0/64.8 | 1.01 |
| CWLP | 26/23 | 2.44 | 35/36 | 4.24 | 35/36 | 4.42 | 35/36 | 5.19 | 35/36 | 3.83 | 33.2/33.4 | 4.02 |
| JSSP | 7/8 | 2.18 | 7/8 | 2.31 | 7/8 | 2.42 | 7/8 | 2.55 | 10/19 | 7.20 | 7.6/10.2 | 3.33 |
| PDPTW | 0/5 | 5.18 | 0/5 | 5.18 | 0/5 | 5.19 | 0/5 | 5.25 | 0/20 | 6.77 | 0.0/8.0 | 5.51 |
| SAGE | Solver-layer policy | Avg SGM speedup |
|---|---|---|
| Off | SCIP default | 1.00 |
| Off | Turner et al. | 2.12 |
| Off | Lawless et al. LLM(0) | 2.58 |
| Off | Lawless et al. LLM(5) | 2.60 |
| On | SCIP default | 3.13 |
| On | Turner et al. | 3.45 |
| Problem | Solver | 5 s | 10 s | 50 s | 150 s | 300 s | 1000 s | 2000 s | Average |
|---|---|---|---|---|---|---|---|---|---|
| TSP | Gurobi | 13.1 (± 27.5) | 15.0 (± 27.9) | 22.6 (± 31.3) | 34.2 (± 30.3) | 27.6 (± 33.1) | 26.4 (± 33.3) | 37.0 (± 31.1) | 25.1 |
| HiGHS | 2.5 (± 13.8) | 2.9 (± 14.9) | 11.3 (± 23.3) | 18.6 (± 26.5) | 18.5 (± 27.2) | 21.4 (± 28.1) | 21.9 (± 28.7) | 13.9 | |
| MCND | Gurobi | 6.8 (± 17.7) | 8.2 (± 19.9) | 15.1 (± 25.8) | 17.4 (± 26.9) | 17.8 (± 25.5) | 23.2 (± 27.9) | 15.8 (± 28.6) | 14.9 |
| HiGHS | 6.0 (± 15.1) | 7.0 (± 16.9) | 6.6 (± 22.5) | 1.4 (± 27.7) | 5.5 (± 28.4) | 2.0 (± 29.3) | 5.7 (± 29.0) | 4.9 | |
| CWLP | Gurobi | 43.8 (± 20.7) | 49.4 (± 22.3) | 68.8 (± 28.6) | 76.3 (± 23.8) | 64.8 (± 23.0) | 35.2 (± 39.3) | 30.1 (± 38.9) | 52.6 |
| HiGHS | 25.5 (± 24.6) | 25.3 (± 24.6) | 23.0 (± 24.8) | 28.1 (± 29.8) | 39.1 (± 36.2) | 62.3 (± 32.3) | 64.2 (± 31.9) | 38.2 |
| Problem | Solver | 5 s | 10 s | 50 s | 150 s | 300 s | 1000 s | 2000 s | Average |
|---|---|---|---|---|---|---|---|---|---|
| TSP | No internal cuts | 34.9 (± 25.1) | 37.8 (± 25.5) | 53.5 (± 23.3) | 61.6 (± 18.1) | 64.2 (± 16.5) | 64.0 (± 16.8) | 62.0 (± 20.2) | 54.0 |
| Default internal cuts | 13.1 (± 27.5) | 15.0 (± 27.9) | 22.6 (± 31.3) | 34.2 (± 30.3) | 27.6 (± 33.1) | 26.4 (± 33.3) | 37.0 (± 31.1) | 25.1 | |
| MCND | No internal cuts | 2.5 (± 10.0) | 2.9 (± 11.0) | 4.3 (± 14.8) | 3.4 (± 15.3) | 1.7 (± 17.1) | 4.1 (± 17.2) | 5.1 (± 13.6) | 3.4 |
| Default internal cuts | 6.8 (± 17.7) | 8.2 (± 19.9) | 15.1 (± 25.8) | 17.4 (± 26.9) | 17.8 (± 25.5) | 23.2 (± 27.9) | 15.8 (± 28.6) | 14.9 | |
| CWLP | No internal cuts | 53.6 (± 19.8) | 60.6 (± 21.2) | 86.7 (± 19.8) | 84.3 (± 28.3) | 94.8 (± 8.8) | 94.5 (± 8.9) | 93.9 (± 9.2) | 81.2 |
| Default internal cuts | 43.8 (± 20.7) | 49.4 (± 22.3) | 68.8 (± 28.6) | 76.3 (± 23.8) | 64.8 (± 23.0) | 35.2 (± 39.3) | 30.1 (± 38.9) | 52.6 |
| 37.3 22.0 | 37.3 22.0 | 40.4 22.3 | 37.3 22.0 | 7.1 16.4 |
| Agent | LLM | Code Fail.% | OSS Fail.% | Not Useful % | Success Rate % | (%) |
|---|---|---|---|---|---|---|
| Initializer | ||||||
| Main | DeepSeek | 38.1 | 11.1 | 25.4 | 25.4 | 12.3 20.8 |
| Gemini 3 Pro | 5.6 | 12.8 | 45.1 | 36.5 | 14.8 19.9 | |
| GPT-5.1 | 8.9 | 14.7 | 46.8 | 29.6 | 10.4 19.5 | |
| Mutation | ||||||
| General | DeepSeek | 17.6 | 13.2 | 2.9 | 66.2 | 15.5 16.6 |
| Run | Tokens | Best | (%) |
|---|---|---|---|
| SAGE (5 generations) | 761,451 | 19.07 | 64.6 |
| Initializer with feedback | 765,308 | 17.60 | 56.5 |
| Component | What it does | Source status |
|---|---|---|
| Binary product rows Eq. ( 3 ) | Encode , i.e., whether unit starts at and shuts down at . | Standard MILP linearization of binary products, not SHUC-specific ( Glover, 1975 ) . |
| Startup/shutdown capacity envelopes Eq. ( 4 ) to Eq. ( 5 ) | Upper-bound reachable thermal capacity when the unit is starting up or shutting down. | Closely aligned with startup/shutdown ramping and strong UC production upper bounds ( Morales-España et al., 2012 ; Knueven et al., 2020 ) . |
| Lifted adjacent start/shutdown envelope Eq. ( 6 ) | Combines the two derating envelopes and uses to avoid double-counting when both transition indicators are active. | Built from known lifting and UC derating ideas. Closest references are strong UC upper-bound and ramping formulations ( Knueven et al., 2018 ; Knueven et al., 2020 ) . |
| Ramp-reachability envelopes Eq. ( 7 ) to Eq. ( 9 ) | Bound what unit can contribute at using previous dispatch/status and ramp-up capability. | Related to ramping polytope and ramp-aware UC formulations ( Knueven et al., 2018 ; Knueven et al., 2020 ) . |
| Aggregate auxiliary reachability inequality Eq. ( 10 ) | Projects unit-level startup, shutdown, and ramp-reachability envelopes into one system-level condition: net load plus reserve must be coverable by reachable thermal capacity. | In our targeted review, close analogs exist for the unit-level components in the UC formulation literature, including reserve and ramp-capability formulations ( Morales-España et al., 2013 ; Morales-España et al., 2015 ) , but we did not identify Eq. ( 10 ) as this same static aggregate inequality added before solving for the SHUC formulation in Appendix F.7 . |
Appendix figures & tables19 assets
Supplementary material from the paper’s appendix.
Appendix
| (s) | SAGE | Initializer | Difference | 95% CI | W/L/T |
|---|---|---|---|---|---|
| 5 | 33.8 (± 22.6) | 17.9 (± 28.1) | 15.9 | 44 / 9 / 27 | |
| 10 | 34.7 (± 23.1) | 25.1 (± 27.8) | 9.6 | 41 / 11 / 28 | |
| 50 | 26.8 (± 26.4) | 22.8 (± 31.2) | 4.0 | 35 / 15 / 30 | |
| 150 | 37.2 (± 28.3) | 34.9 (± 33.4) | 2.3 | 34 / 23 / 23 | |
| 300 | 28.4 (± 27.1) | 23.5 (± 34.5) | 4.9 | 38 / 17 / 25 | |
| 1000 | 38.6 (± 26.8) | 34.5 (± 35.2) | 4.1 | 35 / 22 / 23 |
| Problem | Separated / Total | Rate (%) |
|---|---|---|
| TSP | 54/54 | 100.0 |
| MCND | 72/81 | 88.9 |
| CWLP | 36/36 | 100.0 |
| JSSP | 80/80 | 100.0 |
| PDPTW | 165/165 | 100.0 |
| IMO6 | 34/34 | 100.0 |
| Problem | Setup (s) | Baseline (s) | SAGE (s) | Solves | Solves with setup |
|---|---|---|---|---|---|
| TSP | 0.94 | 1063.8 | 760.3 | 238 | 238 |
| MCND | 0.006 | 640.7 | 627.1 | 5276 | 5278 |
| CWLP | 0.97 | 220.5 | 11.4 | 345 | 347 |
| JSSP | 0.46 | 1886.5 | 1846.1 | 1782 | 1803 |
| PDPTW | 0.08 | 2000.0 | 1962.7 | 1933 | 1935 |
| IMO6 | 10.55 | 1594.5 | 1555.1 | 1828 | 2496 |
| Method | Mean stabilized relative gap improvement (%) |
|---|---|
| Automatic ( ) | |
| Deterministic concurrent (4) |
| Problem | 5 s | 10 s | 50 s | 150 s | 300 s | 1000 s | 2000 s | Average |
|---|---|---|---|---|---|---|---|---|
| RNTD | 13 |
| Target gap | B/A | SGM speedup |
|---|---|---|
| 9/12 | ||
| 9/12 | ||
| 9/13 | ||
| 44/44 | ||
| 44/44 | ||
| Average | 23.0/25.0 |
| Problem | Static literature valid inequalities | SAGE families |
|---|---|---|
| CWLP | ||
| JSSP | ||
| MCND | ||
| TSP |
| Solver | Parameter | Default | Role |
| Gurobi | MIPGapAbs | 1e-10 | Absolute optimality gap tolerance. |
| Gurobi | Presolve | -1 | Automatic presolve control. |
| Gurobi | Cuts | -1 | Automatic global cut generation control. |
| Gurobi | Heuristics | 0.05 | Target fraction of runtime for primal heuristics. |
| Gurobi | MIPFocus | 0 | Balanced MIP search focus. |
| Gurobi | Symmetry | -1 | Automatic symmetry detection. |
| Benchmark | # Instances | Variables | Constraints |
|---|---|---|---|
| TSP | 54 | ||
| MCND | 81 | ||
| CWLP | 36 | ||
| JSSP | 80 | ||
| PDPTW | 165 | ||
| IMO6 | 34 |
| Synthetic source for / | Variables | Constraints |
|---|---|---|
| TSP synthetic | ||
| MCND synthetic | ||
| CWLP synthetic | ||
| JSSP synthetic | ||
| PDPTW synthetic | ||
| IMO6 synthetic |
| Parameter | DeepSeek | Gemini 3 Pro | GPT-5.1 |
|---|---|---|---|
| Model | deepseek-reasoner | google/gemini-3-pro-preview | gpt-5.1 |
| Maximum output tokens | 10,000 | 10,000 | 10,000 |
| Temperature | 1.0 | 1.0 | 1.0 |
| Frequency penalty | 0.0 | 0.0 | 0.0 |
| Presence penalty | 0.0 | 0.0 | 0.0 |
| Total input tokens | 26 M | 19 M | 28 M |
Mixed-Integer Linear Programming
Mixed-integer linear programming (MILP) optimizes linear objectives and constraints when some decisions must be integer-valued.
See all 50 papers