示例#1
0
 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)
示例#2
0
 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)
示例#3
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)
示例#4
0
    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)