Only use warmstart=true if warm start is available

pull/1/head
Alinson S. Xavier 6 years ago
parent dbea4aa988
commit f9e9077803

@ -78,10 +78,14 @@ class LearningSolver:
for component in self.components.values(): for component in self.components.values():
component.before_solve(self, instance, model) 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: 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: 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") solve_results["Solver"][0]["Nodes"] = self.internal_solver._solver_model.getAttr("NodeCount")

@ -130,6 +130,7 @@ class WarmStartComponent(Component):
self.y_train = {} self.y_train = {}
self.predictors = {} self.predictors = {}
self.predictor_prototype = predictor_prototype self.predictor_prototype = predictor_prototype
self.is_warm_start_available = False
def before_solve(self, solver, instance, model): def before_solve(self, solver, instance, model):
# Build x_test # Build x_test
@ -163,8 +164,11 @@ class WarmStartComponent(Component):
else: else:
if ws[i,0] == 1: if ws[i,0] == 1:
var[index].value = 0 var[index].value = 0
self.is_warm_start_available = True
elif ws[i,1] == 1: elif ws[i,1] == 1:
var[index].value = 1 var[index].value = 1
self.is_warm_start_available = True
def after_solve(self, solver, instance, model): def after_solve(self, solver, instance, model):
y_test = SolutionExtractor().extract([instance], [model]) y_test = SolutionExtractor().extract([instance], [model])

Loading…
Cancel
Save