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.
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
Note: 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>.py
Replace <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 -h
To 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.