mirror of
https://github.com/ANL-CEEESA/MIPLearn.git
synced 2025-12-06 09:28:51 -06:00
Only use warmstart=true if warm start is available
This commit is contained in:
@@ -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])
|
||||||
|
|||||||
Reference in New Issue
Block a user