Rename features.constraints to constraints_old

master
Alinson S. Xavier 5 years ago
parent 8f73d87d2d
commit 0e9c8b0a49
No known key found for this signature in database
GPG Key ID: DCA0DAD4D2F58624

@ -78,7 +78,7 @@ class StaticLazyConstraintsComponent(Component):
assert solver.internal_solver is not None
assert sample.after_load is not None
assert sample.after_load.instance is not None
assert sample.after_load.constraints is not None
assert sample.after_load.constraints_old is not None
logger.info("Predicting violated (static) lazy constraints...")
if sample.after_load.instance.lazy_constraint_count == 0:
@ -86,7 +86,7 @@ class StaticLazyConstraintsComponent(Component):
self.enforced_cids = set(self.sample_predict(sample))
logger.info("Moving lazy constraints to the pool...")
self.pool = {}
for (cid, cdict) in sample.after_load.constraints.items():
for (cid, cdict) in sample.after_load.constraints_old.items():
if cdict.lazy and cid not in self.enforced_cids:
self.pool[cid] = cdict
solver.internal_solver.remove_constraint(cid)
@ -194,8 +194,8 @@ class StaticLazyConstraintsComponent(Component):
y: Dict[Hashable, List[List[float]]] = {}
cids: Dict[Hashable, List[str]] = {}
assert sample.after_load is not None
assert sample.after_load.constraints is not None
for (cid, constr) in sample.after_load.constraints.items():
assert sample.after_load.constraints_old is not None
for (cid, constr) in sample.after_load.constraints_old.items():
# Initialize categories
if not constr.lazy:
continue
@ -213,9 +213,9 @@ class StaticLazyConstraintsComponent(Component):
sf = sample.after_lp
assert sf.instance is not None
features = list(sf.instance.to_list())
assert sf.constraints is not None
assert sf.constraints[cid] is not None
features.extend(sf.constraints[cid].to_list())
assert sf.constraints_old is not None
assert sf.constraints_old[cid] is not None
features.extend(sf.constraints_old[cid].to_list())
x[category].append(features)
cids[category].append(cid)

@ -116,7 +116,7 @@ class Constraint:
class Features:
instance: Optional[InstanceFeatures] = None
variables: Optional[VariableFeatures] = None
constraints: Optional[Dict[str, Constraint]] = None
constraints_old: Optional[Dict[str, Constraint]] = None
lp_solve: Optional["LPSolveStats"] = None
mip_solve: Optional["MIPSolveStats"] = None
extra: Optional[Dict] = None
@ -147,7 +147,7 @@ class FeaturesExtractor:
with_static=with_static,
with_sa=self.with_sa,
)
features.constraints = solver.get_constraints(
features.constraints_old = solver.get_constraints(
with_static=with_static,
)
if with_static:
@ -201,9 +201,9 @@ class FeaturesExtractor:
instance: "Instance",
features: Features,
) -> None:
assert features.constraints is not None
assert features.constraints_old is not None
has_static_lazy = instance.has_static_lazy_constraints()
for (cid, constr) in features.constraints.items():
for (cid, constr) in features.constraints_old.items():
user_features = None
category = instance.get_constraint_category(cid)
if category is not None:
@ -232,7 +232,7 @@ class FeaturesExtractor:
instance: "Instance",
features: Features,
) -> None:
assert features.constraints is not None
assert features.constraints_old is not None
user_features = instance.get_instance_features()
if isinstance(user_features, np.ndarray):
user_features = user_features.tolist()
@ -246,7 +246,7 @@ class FeaturesExtractor:
f"Found {type(v).__name__} instead."
)
lazy_count = 0
for (cid, cdict) in features.constraints.items():
for (cid, cdict) in features.constraints_old.items():
if cdict.lazy:
lazy_count += 1
features.instance = InstanceFeatures(

@ -32,7 +32,7 @@ def sample() -> Sample:
instance=InstanceFeatures(
lazy_constraint_count=4,
),
constraints={
constraints_old={
"c1": Constraint(category="type-a", lazy=True),
"c2": Constraint(category="type-a", lazy=True),
"c3": Constraint(category="type-a", lazy=True),
@ -42,7 +42,7 @@ def sample() -> Sample:
),
after_lp=Features(
instance=InstanceFeatures(),
constraints={
constraints_old={
"c1": Constraint(),
"c2": Constraint(),
"c3": Constraint(),
@ -57,16 +57,16 @@ def sample() -> Sample:
),
)
sample.after_lp.instance.to_list = Mock(return_value=[5.0]) # type: ignore
sample.after_lp.constraints["c1"].to_list = Mock( # type: ignore
sample.after_lp.constraints_old["c1"].to_list = Mock( # type: ignore
return_value=[1.0, 1.0]
)
sample.after_lp.constraints["c2"].to_list = Mock( # type: ignore
sample.after_lp.constraints_old["c2"].to_list = Mock( # type: ignore
return_value=[1.0, 2.0]
)
sample.after_lp.constraints["c3"].to_list = Mock( # type: ignore
sample.after_lp.constraints_old["c3"].to_list = Mock( # type: ignore
return_value=[1.0, 3.0]
)
sample.after_lp.constraints["c4"].to_list = Mock( # type: ignore
sample.after_lp.constraints_old["c4"].to_list = Mock( # type: ignore
return_value=[1.0, 4.0, 0.0]
)
return sample
@ -115,7 +115,7 @@ def test_usage_with_solver(instance: Instance) -> None:
stats: LearningSolveStats = {}
sample = instance.samples[0]
assert sample.after_load is not None
assert sample.after_load.constraints is not None
assert sample.after_load.constraints_old is not None
assert sample.after_mip is not None
assert sample.after_mip.extra is not None
del sample.after_mip.extra["lazy_enforced"]
@ -143,7 +143,7 @@ def test_usage_with_solver(instance: Instance) -> None:
# Should ask internal solver to verify if constraints in the pool are
# satisfied and add the ones that are not
c3 = sample.after_load.constraints["c3"]
c3 = sample.after_load.constraints_old["c3"]
internal.is_constraint_satisfied.assert_called_once_with(c3, tol=1.0)
internal.is_constraint_satisfied.reset_mock()
internal.add_constraint.assert_called_once_with(c3, name="c3")

@ -27,7 +27,7 @@ def test_knapsack() -> None:
features = FeaturesExtractor().extract(instance, solver)
assert features.variables is not None
assert features.constraints is not None
assert features.constraints_old is not None
assert features.instance is not None
assert_equals(
@ -65,7 +65,7 @@ def test_knapsack() -> None:
),
)
assert_equals(
_round_constraints(features.constraints),
_round_constraints(features.constraints_old),
{
"eq_capacity": Constraint(
basis_status="N",

Loading…
Cancel
Save