Beispiel #1
0
 def test_simple(self):
     # (X0|X1|X2) & (X2|X4|X5)
     clauses = [Clause([1, 2, 3]), Clause([3, 5, 6])]
     sat = Sat(clauses, 2, 'test')
     self.assertEqual(sat.check([1, 0, 0, 0, 1, 1]), 2)
     self.assertEqual(sat.check([0, 0, 0, 1, 0, 0]), 0)
     self.assertEqual(sat.check([1, 1, 0, 1, 0, 0]), 1)
 def test_simple(self):
     # (X0|X1|X2) & (X2|X4|X5)
     clauses = [Clause([1, 2, 3]), Clause([3, 5, 6])]
     sat = Sat(clauses, 2, 'test')
     q = QuboProblem(sat)
     self.assertCountEqual(
         q.var_names,
         ['X0', 'X1', 'X2', 'X3', 'X4', 'X5', 'X_0_1', 'X_2_4'])
     self.assertCountEqual(q.qclauses, [
         Qclause([], 1),
         Qclause([0], -1),
         Qclause([1], -1),
         Qclause([0, 1], 1),
         Qclause([2], -1),
         Qclause([0, 2], 1),
         Qclause([1, 2], 1),
         Qclause([2, 6], -1),
         Qclause([], 1),
         Qclause([2], -1),
         Qclause([4], -1),
         Qclause([2, 4], 1),
         Qclause([5], -1),
         Qclause([2, 5], 1),
         Qclause([4, 5], 1),
         Qclause([5, 7], -1)
     ])
     self.assertCountEqual(
         q.penalties, [Penalty(0, 1, 6), Penalty(2, 4, 7)])
 def test_get_qaoa(self):
     # (X0|X1|X2) & (X2|X4|X5)
     clauses = [Clause([1, 2, 3]), Clause([3, 5, 6])]
     sat = Sat(clauses, 2, 'test')
     q = QuboProblem(sat)
     o, i = q.get_qaoa()
     expected_states = np.array(
         [-0.5, -0.5, -1., -0., -0.5, -0.5, 1.5, 1.5])
     np.testing.assert_allclose(np.array(o), expected_states)
     expected_interactions = np.array([[0., 1., .5, 0., 0., 0., -1., 0.],
                                       [1., 0., .5, 0., 0., 0., -1., 0.],
                                       [.5, .5, 0., 0., 1., .5, -.5, -1.],
                                       [0., 0., 0., 0., 0., 0., 0., 0.],
                                       [0., 0., 1., 0., 0., .5, 0., -1.],
                                       [0., 0., .5, 0., .5, 0., 0., -.5],
                                       [-1., -1., -.5, 0., 0., 0., 0., 0.],
                                       [0., 0., -1., 0., -1., -.5, 0., 0.]])
     np.testing.assert_allclose(np.array(i), expected_interactions)
 def test_to_qwave(self):
     # (X0|X1|X2) & (X2|X4|X5)
     clauses = [Clause([1, 2, 3]), Clause([3, 5, 6])]
     sat = Sat(clauses, 2, 'test')
     q = QuboProblem(sat)
     lines = q.to_qwave_format()
     output = """c  This is a sample .qubo file
     p   qubo  0   8   7   24
     c ------------------
     0  0   -0.5
     1  1   -0.5
     2  2   -1.0
     4  4   -0.5
     5  5   -0.5
     6  6   1.5
     7  7   1.5
     c ------------------
     0  1   1.0
     0  2   0.5
     0  6   -1.0
     1  0   1.0
     1  2   0.5
     1  6   -1.0
     2  0   0.5
     2  1   0.5
     2  4   1.0
     2  5   0.5
     2  6   -0.5
     2  7   -1.0
     4  2   1.0
     4  5   0.5
     4  7   -1.0
     5  2   0.5
     5  4   0.5
     5  7   -0.5
     6  0   -1.0
     6  1   -1.0
     6  2   -0.5
     7  2   -1.0
     7  4   -1.0
     7  5   -0.5
     5  5   -0.5""".split('\n')
     for l0, l1 in zip(lines, output):
         self.assertEqual(l0.strip(), l1.strip())
 def test_open_brackets2(self):
     self.assertCountEqual(open_brackets(Clause([1, 2, 3])), [
         Qclause([], 1),
         Qclause([0], -1),
         Qclause([1], -1),
         Qclause([0, 1], 1),
         Qclause([2], -1),
         Qclause([0, 2], 1),
         Qclause([1, 2], 1),
         Qclause([0, 1, 2], -1)
     ])
 def test_replace_var(self):
     qaoa = QuboProblem(Sat([Clause([1])], 1, 'test'))
     qclauses = [
         Qclause([0, 1, 2], 1),
         Qclause([0, 2, 3], 1),
         Qclause([0, 2], 1),
         Qclause([0, 1, 4], 1)
     ]
     qaoa.qclauses = qclauses
     qaoa._replace_var(0, 1, 5)
     self.assertCountEqual(qaoa.qclauses, [
         Qclause([2, 5], 1),
         Qclause([0, 2, 3], 1),
         Qclause([0, 2], 1),
         Qclause([4, 5], 1)
     ])
Beispiel #7
0
 def test_errors2(self):
     a = Clause()
     with self.assertRaises(ValueError):
         a.append(0)
Beispiel #8
0
 def test_errors(self):
     a = Clause([4, 5, -2])
     with self.assertRaises(ValueError):
         a.append(2)
Beispiel #9
0
 def test_simple(self):
     a = Clause()
     a.append(2)
     a.append(3)
     self.assertCountEqual(a, [2, 3])
 def test_open_brackets(self):
     self.assertCountEqual(open_brackets(Clause([-1, -2, -3])),
                           [Qclause([0, 1, 2], 1)])