def test_sampling(self): # for all practical purposes the distribution of energies here should # guarantee the last sample always wins winner = {'a': 1, 'b': 1} skewed = dimod.SampleSet.from_samples([{ 'a': 0, 'b': 0 }, { 'a': 0, 'b': 1 }, { 'a': 1, 'b': 0 }, winner], energy=[100, 100, 100, -100], vartype='BINARY') state = hybrid.State(samples=skewed) # cold sampling res = EnergyWeightedResampler(beta=1, seed=1234).run(state).result() samples = res.samples.aggregate() self.assertEqual(len(samples), 1) self.assertDictEqual(dict(list(samples.samples())[0]), winner) # hot sampling res = EnergyWeightedResampler(beta=0, seed=1234).run(state).result() samples = res.samples.aggregate() self.assertGreater(len(samples), 1)
def test_beta_progressor(self): beta_schedule = [1, 2, 3] prog = ProgressBetaAlongSchedule(beta_schedule=beta_schedule) betas = [] while True: try: betas.append(prog.run(hybrid.State()).result().beta) except: break self.assertEqual(betas, beta_schedule)
def test_beta_use(self): ss = dimod.SampleSet.from_samples([{'a': 0}], energy=[0], vartype='SPIN') state = hybrid.State(samples=ss) # beta not given at all with self.assertRaises(ValueError): res = EnergyWeightedResampler().run(state).result() # beta given on construction res = EnergyWeightedResampler(delta_beta=0).run(state).result() self.assertEqual(res.samples.info['delta_beta'], 0) # beta given on runtime, to run method res = EnergyWeightedResampler().run(state, delta_beta=1).result() self.assertEqual(res.samples.info['delta_beta'], 1) # beta given in state state.delta_beta = 2 res = EnergyWeightedResampler().run(state).result() self.assertEqual(res.samples.info['delta_beta'], 2)