EvoCut is a Python library that accelerates Mixed-Integer Linear Programming (MILP) by injecting problem-specific cutting planes into the LP relaxation. These cuts reduce the feasible set of the LP relaxation and improve solver efficiency.
Rectangular tiling with one hole per row and column (IMO 2025 P6). We evaluate EvoCut on a compact 2D interval‑flow MILP for this problem as described in the paper appendix.
- Benchmark sizes:
N ∈ {4, 9, 16, 25}(Appendix E.4/F.5) - Baseline MILP:
RT-2DFlow; Augmented with EvoCut family:EC-RT-Breaks - Budget/metric: 10,000s wall‑clock; MIPGap‑time trajectories (Figure 10)
- Outcome: EvoCut consistently lowers the gap curves across all four sizes, reaching earlier plateaus and maintaining lower gaps than the baseline throughout the time budget (see Figure 10 in the appendix).
- Implication: Demonstrates EvoCut's applicability to new, previously unseen problems for LLMs, the IMO 2025 P6 tiling task sits outside standard MILP benchmarks, indicating the method does not rely on prior exposure to that specific problem.
Notes
- Ground‑truth tiling counts from the problem discussion:
N=4 --> 5 tilesandN=9 --> 12 tiles. - Full experiment details, model, and trajectories are in the paper appendix (see "Appendix F.5" and "Figure 10").
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activatepip install -r requirements.txtNote: Python 3.9 recommended. Requires a licensed MILP solver (e.g., Gurobi).
In the configs/ directory:
- Copy each file whose name contains
_template. - Rename the copy (remove
_template). - Fill in credentials and hyperparameters as needed.
Use the relevant preprocessing script in data/:
python data/data_prepare<suffix>.pyReplace <suffix> with the correct option for your dataset variant (e.g., rand).
Run EvoCut on a problem instance:
python src/main.py <args>See all options with:
python src/main.py -hTo check the optimal solution preservation rate of generated cuts:
python experiments/OSP_cuts.py <args>Evaluate EvoCut on held-out instances:
python experiments/evaluate_cut.py <args>- Determinism: seeds are configurable in configs or CLI flags.
- Hardware/solver versions may affect runtime but not correctness.
- Minimal dependencies ensure reproducibility across machines.