def value(self): if getattr(self, 'problem', None) is None: return None try: return self.problem.problem.solution.get_objective_value() + getattr(self.problem, "_objective_offset", 0) except CplexSolverError as err: raise SolverError(str(err))
def _get_constraint_values(self): if len(self.problem.primals) == 0: raise SolverError("The problem has not been solved yet!") constraint_primals = [ self.problem.cprimals[c.name] for c in self._constraints ] return constraint_primals
def _get_shadow_prices(self): if self.is_integer: raise ValueError("Dual values are not well-defined for integer problems") try: return self.problem.solution.get_dual_values() except CplexSolverError as err: raise SolverError(str(err))
def primal(self): if self.problem is None: return None try: # return self._round_primal_to_bounds(primal_from_solver) # Test assertions fail return self.problem.problem.solution.get_activity_levels(self.name) except CplexSolverError as err: raise SolverError(str(err))
def shadow_prices(self): if self.is_integer: raise ValueError("Dual values are not well-defined for integer problems") try: return collections.OrderedDict( zip((constraint.name for constraint in self.constraints), self.problem.solution.get_dual_values())) except CplexSolverError as err: raise SolverError(str(err))
def reduced_costs(self): if self.is_integer: raise ValueError("Dual values are not well-defined for integer problems") try: return collections.OrderedDict( zip((variable.name for variable in self.variables), self.problem.solution.get_reduced_costs())) except CplexSolverError as err: raise SolverError(str(err))
def _optimize(self): try: self.problem.solve() except CplexSolverError as err: raise SolverError(str(err)) cplex_status = self.problem.solution.get_status() self._original_status = self.problem.solution.get_status_string() status = _CPLEX_STATUS_TO_STATUS[cplex_status] return status
def dual(self): if self.problem is None: return None if self.problem.is_integer: raise ValueError("Dual values are not well-defined for integer problems") try: return self.problem.problem.solution.get_dual_values(self.name) except CplexSolverError as err: raise SolverError(str(err))
def primal_values(self): try: primal_values = collections.OrderedDict( (variable.name, variable._round_primal_to_bounds(primal)) for variable, primal in zip(self.variables, self.problem.solution.get_values()) ) except CplexSolverError as err: raise SolverError(str(err)) return primal_values
def _get_shadow_prices(self): if len(self.problem.primals) == 0: raise SolverError("The problem has not been solved yet!") dual_values = [-self.problem.duals[c.name] for c in self._constraints] return dual_values
def _get_reduced_costs(self): if len(self.problem.duals) == 0: raise SolverError("The problem has not been solved yet!") reduced_costs = [self.problem.vduals[v.name] for v in self._variables] return reduced_costs
def _get_primal_values(self): if len(self.problem.primals) == 0: raise SolverError("The problem has not been solved yet!") primal_values = [self.problem.primals[v.name] for v in self._variables] return primal_values
def _get_constraint_values(self): try: return self.problem.solution.get_activity_levels() except CplexSolverError as err: raise SolverError(str(err))
def _get_primal_values(self): try: primal_values = self.problem.solution.get_values() except CplexSolverError as err: raise SolverError(str(err)) return primal_values
def _get_primal(self): try: return self.problem.problem.solution.get_values(self.name) except CplexSolverError as err: raise SolverError(str(err))
def constraint_values(self): try: return collections.OrderedDict( zip((constraint.name for constraint in self.constraints), self.problem.solution.get_activity_levels())) except CplexSolverError as err: raise SolverError(str(err))