From f9e907780306b7effa901e88faafbc18e5d90baa Mon Sep 17 00:00:00 2001 From: Alinson S Xavier Date: Tue, 4 Feb 2020 15:26:26 -0600 Subject: [PATCH] Only use warmstart=true if warm start is available --- miplearn/solvers.py | 8 ++++++-- miplearn/warmstart.py | 4 ++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/miplearn/solvers.py b/miplearn/solvers.py index ff66b38..a7db581 100644 --- a/miplearn/solvers.py +++ b/miplearn/solvers.py @@ -78,10 +78,14 @@ class LearningSolver: for component in self.components.values(): component.before_solve(self, instance, model) + is_warm_start_available = False + if "warm-start" in self.components.keys(): + if self.components["warm-start"].is_warm_start_available: + is_warm_start_available = True if self.is_persistent: - solve_results = self.internal_solver.solve(tee=tee, warmstart=True) + solve_results = self.internal_solver.solve(tee=tee, warmstart=is_warm_start_available) else: - solve_results = self.internal_solver.solve(model, tee=tee, warmstart=True) + solve_results = self.internal_solver.solve(model, tee=tee, warmstart=is_warm_start_available) solve_results["Solver"][0]["Nodes"] = self.internal_solver._solver_model.getAttr("NodeCount") diff --git a/miplearn/warmstart.py b/miplearn/warmstart.py index 746a004..bc6c162 100644 --- a/miplearn/warmstart.py +++ b/miplearn/warmstart.py @@ -130,6 +130,7 @@ class WarmStartComponent(Component): self.y_train = {} self.predictors = {} self.predictor_prototype = predictor_prototype + self.is_warm_start_available = False def before_solve(self, solver, instance, model): # Build x_test @@ -163,8 +164,11 @@ class WarmStartComponent(Component): else: if ws[i,0] == 1: var[index].value = 0 + self.is_warm_start_available = True elif ws[i,1] == 1: var[index].value = 1 + self.is_warm_start_available = True + def after_solve(self, solver, instance, model): y_test = SolutionExtractor().extract([instance], [model])