def test_next(self) -> None: ip = IP() x = ip.add_boolean() y = ip.add_boolean() z = ip.add_boolean() ip.add_constraint(x + y + z >= 1) solver = Solver() solutions = solver.solutions(ip) n = 0 while solutions.get(): n += 1 self.assertEqual(n, 7)
def test_impossible_constraint(self) -> None: ip = IP() x = ip.add_boolean() with self.assertRaises(AssertionError): ip.add_constraint(x >= 2) with self.assertRaises(AssertionError): ip.add_constraint(0 * x == 0)
def test_minisat(self) -> None: ip = IP() x = ip.add_boolean() y = ip.add_boolean() ip.add_objective(-x - y) solver = Solver(Type.minisat) self.assertTrue(solver.solutions(ip).get()) self.assertAlmostEqual(x.value(), 1) self.assertAlmostEqual(y.value(), 1)
def test_basic_variable_type(self) -> None: ip = IP() x = ip.add_variable(True) y = ip.add_boolean() ip.add_bounds(0, x, 0.5) ip.add_objective(-x - y) self.assertTrue(Solver().solutions(ip).get()) self.assertEqual(x.value(), 0) self.assertEqual(y.value(), 1)