Beispiel #1
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)
Beispiel #2
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)
Beispiel #3
0
    def test_basic_bounds(self) -> None:
        ip = IP()
        x = ip.add_variable()
        y = ip.add_variable()
        ip.add_bounds(0, x, 1)
        ip.add_bounds(0, y, 1)
        ip.add_constraint(x + y <= 1)
        ip.add_objective(-x)
        self.assertTrue(Solver().solutions(ip).get())

        self.assertEqual(x.value(), 1)
        self.assertEqual(y.value(), 0)
Beispiel #4
0
    def test_infeasible(self) -> None:
        ip = IP()
        x = ip.add_variable()
        y = ip.add_variable()
        ip.add_constraint(x + y <= 1)
        ip.add_constraint(x + y >= 2)
        ip.add_constraint(0 <= x)
        ip.add_constraint(x <= 3)
        ip.add_constraint(0 <= y)
        ip.add_constraint(y <= 3)
        ip.add_objective(-x)

        solver = Solver()
        self.assertFalse(solver.solutions(ip).get())
Beispiel #5
0
    def test_basic(self) -> None:
        ip = IP()
        x = ip.add_variable()
        y = ip.add_variable()
        ip.add_constraint(x + y <= 1)
        ip.add_constraint(0 <= x)
        ip.add_constraint(x <= 1)
        ip.add_constraint(0 <= y)
        ip.add_constraint(y <= 1)
        ip.add_objective(-x)

        solver = Solver()
        self.assertTrue(solver.solutions(ip).get())

        self.assertEqual(x.value(), 1)
        self.assertEqual(y.value(), 0)
Beispiel #6
0
 def test_objective_constant(self) -> None:
     ip = IP()
     ip.add_objective(3)