Add mip_ prefix to dynamic constraints

master
Alinson S. Xavier 4 years ago
parent ca925119b3
commit 067f0f847c
No known key found for this signature in database
GPG Key ID: DCA0DAD4D2F58624

@ -36,7 +36,7 @@ class DynamicLazyConstraintsComponent(Component):
self.dynamic: DynamicConstraintsComponent = DynamicConstraintsComponent( self.dynamic: DynamicConstraintsComponent = DynamicConstraintsComponent(
classifier=classifier, classifier=classifier,
threshold=threshold, threshold=threshold,
attr="lazy_enforced", attr="mip_constr_lazy_enforced",
) )
self.classifiers = self.dynamic.classifiers self.classifiers = self.dynamic.classifiers
self.thresholds = self.dynamic.thresholds self.thresholds = self.dynamic.thresholds
@ -78,7 +78,7 @@ class DynamicLazyConstraintsComponent(Component):
stats: LearningSolveStats, stats: LearningSolveStats,
sample: Sample, sample: Sample,
) -> None: ) -> None:
sample.put_set("lazy_enforced", set(self.lazy_enforced)) sample.put_set("mip_constr_lazy_enforced", set(self.lazy_enforced))
@overrides @overrides
def iteration_cb( def iteration_cb(

@ -32,7 +32,7 @@ class UserCutsComponent(Component):
self.dynamic = DynamicConstraintsComponent( self.dynamic = DynamicConstraintsComponent(
classifier=classifier, classifier=classifier,
threshold=threshold, threshold=threshold,
attr="user_cuts_enforced", attr="mip_user_cuts_enforced",
) )
self.enforced: Set[str] = set() self.enforced: Set[str] = set()
self.n_added_in_callback = 0 self.n_added_in_callback = 0
@ -87,7 +87,7 @@ class UserCutsComponent(Component):
stats: LearningSolveStats, stats: LearningSolveStats,
sample: Sample, sample: Sample,
) -> None: ) -> None:
sample.put_set("user_cuts_enforced", set(self.enforced)) sample.put_set("mip_user_cuts_enforced", set(self.enforced))
stats["UserCuts: Added in callback"] = self.n_added_in_callback stats["UserCuts: Added in callback"] = self.n_added_in_callback
if self.n_added_in_callback > 0: if self.n_added_in_callback > 0:
logger.info(f"{self.n_added_in_callback} user cuts added in callback") logger.info(f"{self.n_added_in_callback} user cuts added in callback")

@ -61,7 +61,7 @@ class StaticLazyConstraintsComponent(Component):
stats: LearningSolveStats, stats: LearningSolveStats,
sample: Sample, sample: Sample,
) -> None: ) -> None:
sample.put_set("lazy_enforced", self.enforced_cids) sample.put_set("mip_constr_lazy_enforced", self.enforced_cids)
stats["LazyStatic: Restored"] = self.n_restored stats["LazyStatic: Restored"] = self.n_restored
stats["LazyStatic: Iterations"] = self.n_iterations stats["LazyStatic: Iterations"] = self.n_iterations
@ -209,7 +209,7 @@ class StaticLazyConstraintsComponent(Component):
constr_names = sample.get_vector("static_constr_names") constr_names = sample.get_vector("static_constr_names")
constr_categories = sample.get_vector("static_constr_categories") constr_categories = sample.get_vector("static_constr_categories")
constr_lazy = sample.get_vector("static_constr_lazy") constr_lazy = sample.get_vector("static_constr_lazy")
lazy_enforced = sample.get_set("lazy_enforced") lazy_enforced = sample.get_set("mip_constr_lazy_enforced")
if constr_features is None: if constr_features is None:
constr_features = sample.get_vector_list("static_constr_features") constr_features = sample.get_vector_list("static_constr_features")

@ -24,13 +24,13 @@ def training_instances() -> List[Instance]:
samples_0 = [ samples_0 = [
MemorySample( MemorySample(
{ {
"lazy_enforced": {"c1", "c2"}, "mip_constr_lazy_enforced": {"c1", "c2"},
"static_instance_features": [5.0], "static_instance_features": [5.0],
}, },
), ),
MemorySample( MemorySample(
{ {
"lazy_enforced": {"c2", "c3"}, "mip_constr_lazy_enforced": {"c2", "c3"},
"static_instance_features": [5.0], "static_instance_features": [5.0],
}, },
), ),
@ -55,7 +55,7 @@ def training_instances() -> List[Instance]:
samples_1 = [ samples_1 = [
MemorySample( MemorySample(
{ {
"lazy_enforced": {"c3", "c4"}, "mip_constr_lazy_enforced": {"c3", "c4"},
"static_instance_features": [8.0], "static_instance_features": [8.0],
}, },
) )

@ -81,7 +81,7 @@ def test_usage(
) -> None: ) -> None:
stats_before = solver.solve(stab_instance) stats_before = solver.solve(stab_instance)
sample = stab_instance.get_samples()[0] sample = stab_instance.get_samples()[0]
user_cuts_enforced = sample.get_set("user_cuts_enforced") user_cuts_enforced = sample.get_set("mip_user_cuts_enforced")
assert user_cuts_enforced is not None assert user_cuts_enforced is not None
assert len(user_cuts_enforced) > 0 assert len(user_cuts_enforced) > 0
assert stats_before["UserCuts: Added ahead-of-time"] == 0 assert stats_before["UserCuts: Added ahead-of-time"] == 0

@ -34,7 +34,7 @@ def sample() -> Sample:
"static_constr_lazy": [True, True, True, True, False], "static_constr_lazy": [True, True, True, True, False],
"static_constr_names": ["c1", "c2", "c3", "c4", "c5"], "static_constr_names": ["c1", "c2", "c3", "c4", "c5"],
"static_instance_features": [5.0], "static_instance_features": [5.0],
"lazy_enforced": {"c1", "c2", "c4"}, "mip_constr_lazy_enforced": {"c1", "c2", "c4"},
"lp_constr_features": [ "lp_constr_features": [
[1.0, 1.0], [1.0, 1.0],
[1.0, 2.0], [1.0, 2.0],
@ -93,7 +93,7 @@ def test_usage_with_solver(instance: Instance) -> None:
stats: LearningSolveStats = {} stats: LearningSolveStats = {}
sample = instance.get_samples()[0] sample = instance.get_samples()[0]
assert sample.get_set("lazy_enforced") is not None assert sample.get_set("mip_constr_lazy_enforced") is not None
# LearningSolver calls before_solve_mip # LearningSolver calls before_solve_mip
component.before_solve_mip( component.before_solve_mip(
@ -142,7 +142,7 @@ def test_usage_with_solver(instance: Instance) -> None:
) )
# Should update training sample # Should update training sample
assert sample.get_set("lazy_enforced") == {"c1", "c2", "c3", "c4"} assert sample.get_set("mip_constr_lazy_enforced") == {"c1", "c2", "c3", "c4"}
# #
# Should update stats # Should update stats
assert stats["LazyStatic: Removed"] == 1 assert stats["LazyStatic: Removed"] == 1

@ -65,7 +65,7 @@ def test_subtour() -> None:
samples = instance.get_samples() samples = instance.get_samples()
assert len(samples) == 1 assert len(samples) == 1
sample = samples[0] sample = samples[0]
lazy_enforced = sample.get_set("lazy_enforced") lazy_enforced = sample.get_set("mip_constr_lazy_enforced")
assert lazy_enforced is not None assert lazy_enforced is not None
assert len(lazy_enforced) > 0 assert len(lazy_enforced) > 0
assert sample.get_vector("mip_var_values") == [ assert sample.get_vector("mip_var_values") == [

Loading…
Cancel
Save