def test_infeasible_lp(self): with SolverFactory("cplex", solver_io="python") as opt: model = ConcreteModel() model.X = Var(within=NonNegativeReals) model.C1 = Constraint(expr=model.X == 1) model.C2 = Constraint(expr=model.X == 2) model.O = Objective(expr=model.X) results = opt.solve(model) self.assertEqual(results.solver.termination_condition, TerminationCondition.infeasible)
def setUp(self): opt = SolverFactory("cplex", solver_io="python") model = ConcreteModel() model.X = Var(within=NonNegativeReals, initialize=0) model.Y = Var(within=NonNegativeReals, initialize=0) model.C1 = Constraint(expr=2 * model.X + model.Y >= 8) model.C2 = Constraint(expr=model.X + 3 * model.Y >= 6) model.O = Objective(expr=model.X + model.Y) opt.solve(model, load_solutions=False, save_results=False) self._model = model self._opt = opt
def test_soln_limit_mip(self): with SolverFactory("cplex", solver_io="python") as opt: model = ConcreteModel() model.X = Var(within=Binary) model.C1 = Constraint(expr=model.X == 1) model.O = Objective(expr=model.X) opt.options['mip_limits_solutions'] = 1 results = opt.solve(model) self.assertEqual(results.solver.status, SolverStatus.aborted) self.assertEqual(results.solver.termination_condition, TerminationCondition.maxEvaluations) self.assertEqual(model.solutions[0].status, SolutionStatus.stoppedByLimit)
def test_get_duals_lp(self): with SolverFactory("cplex", solver_io="python") as opt: model = ConcreteModel() model.X = Var(within=NonNegativeReals) model.Y = Var(within=NonNegativeReals) model.C1 = Constraint(expr=2 * model.X + model.Y >= 8) model.C2 = Constraint(expr=model.X + 3 * model.Y >= 6) model.O = Objective(expr=model.X + model.Y) results = opt.solve(model, suffixes=['dual'], load_solutions=False) model.dual = Suffix(direction=Suffix.IMPORT) model.solutions.load_from(results) self.assertAlmostEqual(model.dual[model.C1], 0.4) self.assertAlmostEqual(model.dual[model.C2], 0.2)