mirror of
https://github.com/ANL-CEEESA/MIPLearn.git
synced 2025-12-09 10:58:51 -06:00
Redesign InternalSolver constraint methods
This commit is contained in:
@@ -12,6 +12,7 @@ from gurobipy import GRB
|
||||
from networkx import Graph
|
||||
from overrides import overrides
|
||||
|
||||
from miplearn import InternalSolver
|
||||
from miplearn.components.dynamic_user_cuts import UserCutsComponent
|
||||
from miplearn.instance.base import Instance
|
||||
from miplearn.solvers.gurobi import GurobiSolver
|
||||
@@ -49,10 +50,15 @@ class GurobiStableSetProblem(Instance):
|
||||
return violations
|
||||
|
||||
@overrides
|
||||
def build_user_cut(self, model: Any, cid: Hashable) -> Any:
|
||||
def enforce_user_cut(
|
||||
self,
|
||||
solver: InternalSolver,
|
||||
model: Any,
|
||||
cid: Hashable,
|
||||
) -> Any:
|
||||
assert isinstance(cid, FrozenSet)
|
||||
x = model.getVars()
|
||||
return gp.quicksum([x[i] for i in cid]) <= 1
|
||||
model.addConstr(gp.quicksum([x[i] for i in cid]) <= 1)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
||||
Reference in New Issue
Block a user