示例#1
0
    def test_sample(self):
        bqm = BinaryQuadraticModel({
            1: -1.3,
            4: -0.5
        }, {(1, 4): -0.6},
                                   0,
                                   vartype=Vartype.SPIN)
        sampler = ConnectedComponentsComposite(ExactSolver())
        response = sampler.sample(bqm)

        self.assertEqual(response.first.sample, {4: 1, 1: 1})
        self.assertAlmostEqual(response.first.energy, -2.4)
示例#2
0
    def test_sample_two_components(self):
        bqm = BinaryQuadraticModel({
            0: 0.0,
            1: 4.0,
            2: -4.0,
            3: 0.0
        }, {
            (0, 1): -4.0,
            (2, 3): 4.0
        }, 0.0, Vartype.BINARY)

        sampler = ConnectedComponentsComposite(ExactSolver())
        response = sampler.sample(bqm)
        self.assertIsInstance(response, SampleSet)
        self.assertEqual(response.first.sample, {0: 0, 1: 0, 2: 1, 3: 0})
        self.assertAlmostEqual(response.first.energy,
                               bqm.energy({
                                   0: 0,
                                   1: 0,
                                   2: 1,
                                   3: 0
                               }))
        def test_sample_passcomponents(self):
            bqm = BinaryQuadraticModel({
                0: 0.0,
                1: 4.0,
                2: -4.0,
                3: 0.0
            }, {
                (0, 1): -4.0,
                (2, 3): 4.0
            }, 0.0, Vartype.BINARY)

            with self.assertWarns(DeprecationWarning):
                sampler = ConnectedComponentsComposite(ExactSolver())
            response = sampler.sample(bqm, components=[{0, 1}, {2, 3}])
            self.assertIsInstance(response, SampleSet)
            self.assertEqual(response.first.sample, {0: 0, 1: 0, 2: 1, 3: 0})
            self.assertAlmostEqual(response.first.energy,
                                   bqm.energy({
                                       0: 0,
                                       1: 0,
                                       2: 1,
                                       3: 0
                                   }))