コード例 #1
0
 def test_from_subsamples(self):
     s1 = [0, 1]
     s2 = {0: 1, 1: 0}
     bqm = dimod.BinaryQuadraticModel({0: 1, 1: 2}, {}, 0.0, 'BINARY')
     self.assertEqual(State.from_subsample(s1, bqm).subsamples.first.energy, 2.0)
     self.assertEqual(State.from_subsample(s2, bqm).subsamples.first.energy, 1.0)
     self.assertEqual(State.from_subsample(s2, bqm, beta=0.5).beta, 0.5)
     self.assertEqual(State.from_subsamples([s1, s1], bqm).subsamples.first.energy, 2.0)
     self.assertEqual(State.from_subsamples([s2, s2], bqm).subsamples.first.energy, 1.0)
     self.assertEqual(State.from_subsamples([s2, s2], bqm, beta=0.5).beta, 0.5)
     self.assertEqual(State.from_subsamples([sample_as_dict(s1), s2], bqm).subsamples.first.energy, 1.0)
コード例 #2
0
    def test_structured_child_sampler(self):
        q = QPUSubproblemAutoEmbeddingSampler(qpu_sampler=MockDWaveSampler())

        # test sampler is converted to unstructured
        self.assertFalse(isinstance(q.sampler, dimod.Structured))

        # test sampling works
        bqm = dimod.BinaryQuadraticModel({'a': 1}, {}, 0, 'SPIN')
        init = State.from_subsample({'a': 1}, bqm)
        res = q.run(init).result()
        self.assertEqual(res.subsamples.first.energy, -1)
コード例 #3
0
    def test_reverse_annealing_sampler(self):
        sampler = MockDWaveReverseAnnealingSampler()
        ra = ReverseAnnealingAutoEmbeddingSampler(qpu_sampler=sampler)

        # test sampling works
        bqm = dimod.BinaryQuadraticModel({'a': 1}, {}, 0, 'SPIN')
        state = State.from_subsample({'a': 1}, bqm)
        res = ra.run(state).result()

        self.assertEqual(res.subsamples.first.energy, -1)
        self.assertEqual(sampler.initial_state.popitem()[1], 1)
        self.assertEqual(sampler.anneal_schedule, ra.anneal_schedule)
コード例 #4
0
    def test_auto_embedding_failure(self):
        counter = MockDWaveSamplerCounter()
        q = QPUSubproblemAutoEmbeddingSampler(qpu_sampler=counter)

        target_structure = q.sampler.target_structure
        num_vars = len(target_structure.nodelist) + 1 # source graph will be too large for the target and ensure an embedding failure
        bqm = dimod.BinaryQuadraticModel(num_vars, 'SPIN') 
        init = State.from_subsample(random_sample(bqm), bqm)

        retries = 3
        with self.assertRaises(ValueError):
            result = q.run(init, num_retries=retries).result()

        self.assertEqual(retries + 1, counter.count)