def test_simple(self): qm = QM() a = qm.add_variable('SPIN', 'a') qm.set_linear(a, 1.5) qm.change_vartype('BINARY', a) self.assertEqual(qm.energy({a: 1}), 1.5) self.assertEqual(qm.energy({a: 0}), -1.5) self.assertIs(qm.vartype(a), dimod.BINARY)
def test_degree(self): qm = QM() i = qm.add_variable('INTEGER') j = qm.add_variable('INTEGER') x = qm.add_variable('BINARY') qm.set_linear(i, 1.5) qm.set_linear(x, -2) qm.set_quadratic(i, j, 1) qm.set_quadratic(j, j, 5) qm.set_quadratic(x, i, 7) self.assertEqual(qm.degree(i), 2) self.assertEqual(qm.degree(j), 2) self.assertEqual(qm.degree(x), 1)
def test_3var(self, dtype): qm = QM() qm.add_variable('INTEGER', 'i') qm.add_variable('BINARY', 'x') qm.add_variable('SPIN', 's') qm.set_linear('i', 3) qm.set_quadratic('s', 'i', 2) qm.set_quadratic('x', 's', -2) qm.set_quadratic('i', 'i', 5) qm.offset = 7 with tempfile.TemporaryFile() as tf: with qm.to_file() as qmf: shutil.copyfileobj(qmf, tf) tf.seek(0) new = QM.from_file(tf) self.assertTrue(qm.is_equal(new)) self.assertEqual(qm.dtype, new.dtype)
def test_min_max_sum(self): qm = QM() i = qm.add_variable('INTEGER') j = qm.add_variable('INTEGER') x = qm.add_variable('BINARY') qm.set_linear(i, 1.5) qm.set_linear(x, -2) qm.set_quadratic(i, j, 1) qm.set_quadratic(j, j, 5) qm.set_quadratic(x, i, 7) self.assertEqual(qm.linear.max(), 1.5) self.assertEqual(qm.linear.min(), -2) self.assertEqual(qm.linear.sum(), -.5) self.assertEqual(qm.quadratic.max(), 7) self.assertEqual(qm.quadratic.min(), 1) self.assertEqual(qm.quadratic.sum(), 13) self.assertEqual(qm.adj[j].max(), 5) self.assertEqual(qm.adj[j].min(), 1) self.assertEqual(qm.adj[j].sum(), 6)
def qmSpin(label): qm = QM() qm.set_linear(qm.add_variable('SPIN', label), 1) return qm
def qmBinary(label): qm = QM() qm.set_linear(qm.add_variable('BINARY', label), 1) return qm