Exemplo n.º 1
0
    def test_sample_hubo(self):
        Q = {(0, 0): 0.0, (1, 1): 0.0, (2, 2): 0.0}
        Q.update({(0, 1): -1.0, (1, 2): 1.0, (0, 1, 2): 1.0})

        response = dimod.ExactPolySolver().sample_hubo(Q)

        # every possible conbination should be present
        self.assertEqual(len(response), 2**3)
        self.assertEqual(response.record.sample.shape, (2**3, 3))

        # confirm vartype
        self.assertIs(response.vartype, dimod.BINARY)
Exemplo n.º 2
0
    def test_sample_hising(self):
        h = {0: 0.0, 1: 0.0, 2: 0.0}
        J = {(0, 1): -1.0, (1, 2): 1.0, (0, 1, 2): 1.0}

        response = dimod.ExactPolySolver().sample_hising(h, J)

        # every possible conbination should be present
        self.assertEqual(len(response), 2**3)
        self.assertEqual(response.record.sample.shape, (2**3, 3))

        # confirm vartype
        self.assertIs(response.vartype, dimod.SPIN)
Exemplo n.º 3
0
    def test_sample_qubo(self):
        Q = {(0, 0): 0.0, (1, 1): 0.0, (2, 2): 0.0}
        Q.update({(0, 1): -1.0, (1, 2): 1.0, (0, 2): 1.0})

        response = dimod.ExactPolySolver().sample_hubo(Q)

        # every possible conbination should be present
        self.assertEqual(len(response), 2**3)
        self.assertEqual(response.record.sample.shape, (2**3, 3))

        # confirm vartype
        self.assertIs(response.vartype, dimod.BINARY)

        # check their energies
        for sample, energy in response.data(['sample', 'energy']):
            self.assertAlmostEqual(energy, dimod.qubo_energy(sample, Q))
Exemplo n.º 4
0
    def test_sample_ising(self):
        h = {0: 0.0, 1: 0.0, 2: 0.0}
        J = {(0, 1): -1.0, (1, 2): 1.0, (0, 2): 1.0}

        response = dimod.ExactPolySolver().sample_hising(h, J)

        # every possible conbination should be present
        self.assertEqual(len(response), 2**3)
        self.assertEqual(response.record.sample.shape, (2**3, 3))

        # confirm vartype
        self.assertIs(response.vartype, dimod.SPIN)

        # check their energies
        for sample, energy in response.data(['sample', 'energy']):
            self.assertAlmostEqual(energy, dimod.ising_energy(sample, h, J))
Exemplo n.º 5
0
    def test_sample_BINARY(self):
        poly = dimod.BinaryPolynomial(
            {
                (): 1.0,
                (0, ): 0.0,
                (1, ): 0.0,
                (0, 1): -1.0,
                (1, 2): 1.0,
                (0, 1, 2): 1.0
            }, dimod.BINARY)

        response = dimod.ExactPolySolver().sample_poly(poly)

        # every possible conbination should be present
        self.assertEqual(len(response), 2**len(poly.variables))
        self.assertEqual(response.record.sample.shape,
                         (2**len(poly.variables), len(poly.variables)))

        # confirm vartype
        self.assertIs(response.vartype, poly.vartype)

        dimod.testing.assert_response_energies(response, poly)
Exemplo n.º 6
0
    def test_sample_mixed_labels(self):
        h = {
            '3': 0.6669921875,
            4: -2.0,
            5: -1.334375,
            6: 0.0,
            7: -2.0,
            '1': 1.3328125,
            '2': -1.3330078125,
            '0': -0.666796875
        }
        J = {
            (5, '2'): 1.0,
            (7, '0'): 0.9998046875,
            (4, '0'): 0.9998046875,
            ('3', 4): 0.9998046875,
            (7, '1'): -1.0,
            (5, '1'): 0.6671875,
            (6, '2'): 1.0,
            ('3', 6): 0.6671875,
            (7, '2'): 0.9986328125,
            (5, '0'): -1.0,
            ('3', 5): -0.6671875,
            ('3', 7): 0.998828125,
            (4, '1'): -1.0,
            (6, '0'): -0.3328125,
            (4, '2'): 1.0,
            (6, '1'): 0.0
        }

        response = dimod.ExactPolySolver().sample_hising(h, J)

        # every possible conbination should be present
        self.assertEqual(len(response), 2**len(h))
        self.assertEqual(response.record.sample.shape, (2**len(h), len(h)))

        # confirm vartype
        self.assertIs(response.vartype, dimod.SPIN)
Exemplo n.º 7
0
 def test_arbitrary_labels(self):
     poly = dimod.BinaryPolynomial.from_hising({}, {('a', 'b', 'c'): -1})
     sampleset = dimod.ExactPolySolver().sample_poly(poly)
     self.assertEqual(set(sampleset.variables), set(poly.variables))
Exemplo n.º 8
0
    def test_sample_BINARY_empty(self):
        poly = dimod.BinaryPolynomial({}, dimod.BINARY)
        response = dimod.ExactPolySolver().sample_poly(poly)

        self.assertEqual(response.record.sample.shape, (0, 0))
        self.assertIs(response.vartype, poly.vartype)
Exemplo n.º 9
0
    def test_instantiation(self):
        sampler = dimod.ExactPolySolver()

        # this sampler has no properties and has no accepted parameters
        self.assertEqual(sampler.properties, {})
        self.assertEqual(sampler.parameters, {})
Exemplo n.º 10
0
 def test_kwargs(self):
     poly = dimod.BinaryPolynomial({}, dimod.SPIN)
     with self.assertWarns(SamplerUnknownArgWarning):
         response = dimod.ExactPolySolver().sample_poly(poly, a=True, b=2)