Lazy: Simplify method signature; switch to AbstractModel

This commit is contained in:
2023-10-27 09:14:51 -05:00
parent 7079a36203
commit a42cd5ae35
5 changed files with 26 additions and 18 deletions

View File

@@ -159,13 +159,11 @@ def build_tsp_model(data: Union[str, TravelingSalesmanData]) -> GurobiModel:
violations.append(cut_edges)
return violations
def lazy_enforce(model: GurobiModel, violations: List[Any], where: str) -> None:
def lazy_enforce(model: GurobiModel, violations: List[Any]) -> None:
for violation in violations:
constr = quicksum(model.inner._x[e[0], e[1]] for e in violation) >= 2
if where == "cb":
model.inner.cbLazy(constr)
else:
model.inner.addConstr(constr)
model.add_constr(
quicksum(model.inner._x[e[0], e[1]] for e in violation) >= 2
)
logger.info(f"tsp: added {len(violations)} subtour elimination constraints")
model.update()