Pyomo: Collect variable reduced costs

master
Alinson S. Xavier 5 years ago
parent 3cfadf4e97
commit fcb511a2c6
No known key found for this signature in database
GPG Key ID: DCA0DAD4D2F58624

@ -197,6 +197,8 @@ class BasePyomoSolver(InternalSolver):
self.model = model
self.model.extra_constraints = ConstraintList()
self.model.dual = Suffix(direction=Suffix.IMPORT)
self.model.rc = Suffix(direction=Suffix.IMPORT)
self.model.slack = Suffix(direction=Suffix.IMPORT)
self._pyomo_solver.set_instance(model)
self._update_obj()
self._update_vars()
@ -399,6 +401,11 @@ class BasePyomoSolver(InternalSolver):
# Bounds
lb, ub = var.bounds
# Reduced costs
rc = None
if var in self.model.rc:
rc = self.model.rc[var]
# Objective coefficient
obj_coeff = 0.0
if var.name in self._obj:
@ -410,6 +417,7 @@ class BasePyomoSolver(InternalSolver):
lower_bound=float(lb),
upper_bound=float(ub),
obj_coeff=obj_coeff,
reduced_cost=rc,
)
@overrides
@ -461,7 +469,7 @@ class BasePyomoSolver(InternalSolver):
constr.dual_value = self.model.dual[pyomo_constr]
if self._has_mip_solution or self._has_lp_solution:
constr.slack = pyomo_constr.slack()
constr.slack = self.model.slack[pyomo_constr]
# Build constraint
return constr
@ -503,7 +511,7 @@ class BasePyomoSolver(InternalSolver):
# "basis_status",
"lower_bound",
"obj_coeff",
# "reduced_cost",
"reduced_cost",
# "sa_lb_down",
# "sa_lb_up",
# "sa_obj_down",

Loading…
Cancel
Save