ConvertTightIneqs: Convert only inequalities, not equalities

master
Alinson S. Xavier 5 years ago
parent 1e3d4482f4
commit 4057a65506

@ -57,7 +57,7 @@ class ConvertTightIneqsIntoEqsStep(Component):
logger.info(f"Converted {n_converted} inequalities into equalities")
def after_solve(self, solver, instance, model, results):
instance.slacks = solver.internal_solver.get_constraint_slacks()
instance.slacks = solver.internal_solver.get_inequality_slacks()
def fit(self, training_instances):
logger.debug("Extracting x and y...")

@ -68,7 +68,7 @@ class DropRedundantInequalitiesStep(Component):
logger.info("Extracted %d predicted constraints" % len(self.pool))
def after_solve(self, solver, instance, model, results):
instance.slacks = solver.internal_solver.get_constraint_slacks()
instance.slacks = solver.internal_solver.get_inequality_slacks()
def fit(self, training_instances):
logger.debug("Extracting x and y...")

@ -14,7 +14,7 @@ def _setup():
internal = solver.internal_solver = Mock(spec=InternalSolver)
internal.get_constraint_ids = Mock(return_value=["c1", "c2", "c3", "c4"])
internal.get_constraint_slacks = Mock(
internal.get_inequality_slacks = Mock(
side_effect=lambda: {
"c1": 0.5,
"c2": 0.0,
@ -112,8 +112,8 @@ def test_drop_redundant():
# LearningSolver calls after_solve
component.after_solve(solver, instance, None, None)
# Should query slack for all constraints
internal.get_constraint_slacks.assert_called_once()
# Should query slack for all inequalities
internal.get_inequality_slacks.assert_called_once()
# Should store constraint slacks in instance object
assert hasattr(instance, "slacks")

@ -271,8 +271,9 @@ class GurobiSolver(InternalSolver):
else:
raise Exception("Unknown sense: %s" % sense)
def get_constraint_slacks(self):
return {c.ConstrName: c.Slack for c in self.model.getConstrs()}
def get_inequality_slacks(self):
ineqs = [c for c in self.model.getConstrs() if c.sense != "="]
return {c.ConstrName: c.Slack for c in ineqs}
def set_constraint_sense(self, cid, sense):
c = self.model.getConstrByName(cid)

@ -184,7 +184,7 @@ class InternalSolver(ABC):
pass
@abstractmethod
def get_constraint_slacks(self):
def get_inequality_slacks(self):
"""
Returns a dictionary mapping constraint name to the constraint slack
in the current solution.

@ -252,7 +252,7 @@ class BasePyomoSolver(InternalSolver):
def relax(self):
raise Exception("not implemented")
def get_constraint_slacks(self):
def get_inequality_slacks(self):
raise Exception("not implemented")
def set_constraint_sense(self, cid, sense):

Loading…
Cancel
Save