From 19453f5ee53ccc63625c0942fefd3b03daf0f6ee Mon Sep 17 00:00:00 2001 From: Alinson S Xavier Date: Thu, 5 Mar 2020 14:02:03 -0600 Subject: [PATCH] LearningSolver: only compute all_vars once --- miplearn/solvers.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/miplearn/solvers.py b/miplearn/solvers.py index 3531a52..c1fe458 100644 --- a/miplearn/solvers.py +++ b/miplearn/solvers.py @@ -106,8 +106,10 @@ class InternalSolver: else: self.sense = "max" self.var_name_to_var = {} + self.all_vars = [] for var in model.component_objects(Var): self.var_name_to_var[var.name] = var + self.all_vars += [var[idx] for idx in var] def set_instance(self, instance): self.instance = instance @@ -173,8 +175,7 @@ class GurobiSolver(InternalSolver): from gurobipy import GRB def cb(cb_model, cb_opt, cb_where): if cb_where == GRB.Callback.MIPSOL: - all_vars = [v[idx] for v in self.model.component_objects(Var) for idx in v] - cb_opt.cbGetSolution(all_vars) + cb_opt.cbGetSolution(self.all_vars) logger.debug("Finding violated constraints...") violations = self.instance.find_violations(cb_model) self.instance.found_violations += violations