Collect features 3 times (after-load, after-lp, after-mip)

This commit is contained in:
2021-04-11 08:03:46 -05:00
parent d85a63f869
commit 6afdf2ed55
3 changed files with 23 additions and 4 deletions

View File

@@ -153,11 +153,12 @@ class LearningSolver:
assert isinstance(self.internal_solver, InternalSolver)
self.internal_solver.set_instance(instance, model)
# Extract features
# Extract features (after-load)
# -------------------------------------------------------
if instance.features.instance is None:
logger.info("Extracting features...")
FeaturesExtractor(self.internal_solver).extract(instance)
logger.info("Extracting features (after-load)...")
features = FeaturesExtractor(self.internal_solver).extract(instance)
instance.features.__dict__ = features.__dict__
instance.features_after_load.append(features)
callback_args = (
self,
@@ -186,6 +187,12 @@ class LearningSolver:
for component in self.components.values():
component.after_solve_lp(*callback_args)
# Extract features (after-lp)
# -------------------------------------------------------
logger.info("Extracting features (after-lp)...")
features = FeaturesExtractor(self.internal_solver).extract(instance)
instance.features_after_lp.append(features)
# Callback wrappers
# -------------------------------------------------------
def iteration_cb_wrapper() -> bool:
@@ -242,6 +249,12 @@ class LearningSolver:
)
stats["Mode"] = self.mode
# Extract features (after-mip)
# -------------------------------------------------------
logger.info("Extracting features (after-mip)...")
features = FeaturesExtractor(self.internal_solver).extract(instance)
instance.features_after_mip.append(features)
# Add some information to training_sample
# -------------------------------------------------------
training_sample.lower_bound = stats["Lower bound"]