Beispiel #1
0
 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))
Beispiel #2
0
 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
Beispiel #3
0
 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))
Beispiel #4
0
 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))
Beispiel #5
0
 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))
Beispiel #6
0
 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))
Beispiel #7
0
 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
Beispiel #8
0
 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))
Beispiel #9
0
 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
Beispiel #10
0
 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
Beispiel #11
0
 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
Beispiel #12
0
 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
Beispiel #13
0
 def _get_constraint_values(self):
     try:
         return self.problem.solution.get_activity_levels()
     except CplexSolverError as err:
         raise SolverError(str(err))
Beispiel #14
0
 def _get_primal_values(self):
     try:
         primal_values = self.problem.solution.get_values()
     except CplexSolverError as err:
         raise SolverError(str(err))
     return primal_values
Beispiel #15
0
 def _get_primal(self):
     try:
         return self.problem.problem.solution.get_values(self.name)
     except CplexSolverError as err:
         raise SolverError(str(err))
Beispiel #16
0
 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))