@@ -117,7 +117,7 @@ def load_vars(self, vars_to_load=None, solution_number=0):
117117 if self ._grb_model .SolCount == 0 :
118118 raise NoSolutionError ()
119119
120- iterator = zip (self ._pyo_vars , self . _grb_vars . x . tolist ( ))
120+ iterator = zip (self ._pyo_vars , map ( operator . attrgetter ( 'x' ), self . _grb_vars ))
121121 if vars_to_load :
122122 vars_to_load = ComponentSet (vars_to_load )
123123 iterator = filter (lambda var_val : var_val [0 ] in vars_to_load , iterator )
@@ -130,7 +130,7 @@ def get_primals(self, vars_to_load=None, solution_number=0):
130130 if self ._grb_model .SolCount == 0 :
131131 raise NoSolutionError ()
132132
133- iterator = zip (self ._pyo_vars , self . _grb_vars . x . tolist ( ))
133+ iterator = zip (self ._pyo_vars , map ( operator . attrgetter ( 'x' ), self . _grb_vars ))
134134 if vars_to_load :
135135 vars_to_load = ComponentSet (vars_to_load )
136136 iterator = filter (lambda var_val : var_val [0 ] in vars_to_load , iterator )
@@ -143,24 +143,26 @@ def get_duals(self, cons_to_load=None):
143143 def dedup (_iter ):
144144 last = None
145145 for con_info_dual in _iter :
146- if not con_info_dual [1 ] and con_info_dual [0 ][ 0 ] is last :
146+ if not con_info_dual [1 ] and con_info_dual [0 ] is last :
147147 continue
148- last = con_info_dual [0 ][ 0 ]
148+ last = con_info_dual [0 ]
149149 yield con_info_dual
150150
151- iterator = dedup (zip (self ._pyo_cons , self ._grb_cons .getAttr ('Pi' ).tolist ()))
151+ iterator = dedup (
152+ zip (self ._pyo_cons , map (operator .attrgetter ('Pi' ), self ._grb_cons ))
153+ )
152154 if cons_to_load :
153155 cons_to_load = set (cons_to_load )
154156 iterator = filter (
155- lambda con_info_dual : con_info_dual [0 ][ 0 ] in cons_to_load , iterator
157+ lambda con_info_dual : con_info_dual [0 ] in cons_to_load , iterator
156158 )
157- return {con_info [ 0 ] : dual for con_info , dual in iterator }
159+ return {con_info : dual for con_info , dual in iterator }
158160
159161 def get_reduced_costs (self , vars_to_load = None ):
160162 if self ._grb_model .Status != gurobipy .GRB .OPTIMAL :
161163 raise NoReducedCostsError ()
162164
163- iterator = zip (self ._pyo_vars , self . _grb_vars . getAttr ('Rc' ). tolist ( ))
165+ iterator = zip (self ._pyo_vars , map ( operator . attrgetter ('Rc' ), self . _grb_vars ))
164166 if vars_to_load :
165167 vars_to_load = ComponentSet (vars_to_load )
166168 iterator = filter (lambda var_rc : var_rc [0 ] in vars_to_load , iterator )
@@ -374,7 +376,12 @@ def solve(self, model, **kwds) -> Results:
374376 timer ,
375377 config ,
376378 GurobiDirectSolutionLoader (
377- gurobi_model , A , x , repn .rows , repn .columns , repn .objectives
379+ gurobi_model ,
380+ A ,
381+ x .tolist (),
382+ list (map (operator .itemgetter (0 ), repn .rows )),
383+ repn .columns ,
384+ repn .objectives ,
378385 ),
379386 )
380387
0 commit comments