Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_to_qubo_spin_to_qubo(self):
"""Spin model's to_qubo method"""
linear = {0: .5, 1: 1.3}
quadratic = {(0, 1): -.435}
offset = 1.2
vartype = dimod.SPIN
model = dimod.BinaryQuadraticModel(linear, quadratic, offset, vartype)
Q, off = dimod.to_qubo(model)
for spins in itertools.product((-1, 1), repeat=len(model)):
spin_sample = dict(zip(range(len(spins)), spins))
bin_sample = {v: (s + 1) // 2 for v, s in spin_sample.items()}
# calculate the qubo's energy
energy = off
for (u, v), bias in Q.items():
energy += bin_sample[u] * bin_sample[v] * bias
# and the energy of the model
self.assertAlmostEqual(energy, model.energy(spin_sample))
def test_to_ising_binary_to_ising(self, name, BQM):
linear = {0: 7.1, 1: 103}
quadratic = {(0, 1): .97}
offset = 0.3
vartype = dimod.BINARY
model = BQM(linear, quadratic, offset, vartype)
h, J, off = model.to_ising()
for spins in itertools.product((-1, 1), repeat=len(model)):
spin_sample = dict(zip(range(len(spins)), spins))
bin_sample = {v: (s + 1) // 2 for v, s in spin_sample.items()}
# calculate the qubo's energy
energy = off
for (u, v), bias in J.items():
energy += spin_sample[u] * spin_sample[v] * bias
for v, bias in h.items():
energy += spin_sample[v] * bias
def test_instantiation_smoketest(self):
sampler = ClipComposite(NullSampler())
dimod.testing.assert_sampler_api(sampler)
def test_instantiation_smoketest(self):
sampler = PolyFixedVariableComposite(ExactPolySolver())
dtest.assert_composite_api(sampler)
def test_single(self):
bqm = dimod.BinaryQuadraticModel({}, {'ab': 1}, 0, dimod.SPIN)
states = States(State.from_sample({'a': 1, 'b': -1}, bqm))
state = MergeSamples().run(states).result()
self.assertEqual(state, states[0])
def test_tabu_problem_sampler_initialization(self):
bqm = dimod.BinaryQuadraticModel({}, {'ab': 1}, 0, 'SPIN')
sampleset = dimod.SampleSet.from_samples_bqm([{'a': 1, 'b': -1},
{'a': -1, 'b': 1}], bqm)
state = State(problem=bqm, samples=sampleset)
# with timeout=0, TabuSampler should just return the initial_states
result = TabuProblemSampler(timeout=0).run(state).result()
expected = sampleset.record.sample
self.assertTrue(np.array_equal(result.samples.record.sample, expected))
self.assertEqual(len(result.samples), 2)
# test input samples are tiled
result = TabuProblemSampler(timeout=0, num_reads=4,
initial_states_generator="tile").run(state).result()
expected = np.tile(sampleset.record.sample, (2,1))
def test_remove_offset(self):
linear = {v: v * -.43 for v in range(10)}
quadratic = {(u, v): u * v * -.021 for u, v in itertools.combinations(linear, 2)}
offset = -1.2
vartype = dimod.BINARY
bqm = dimod.BinaryQuadraticModel(linear, quadratic, offset, vartype)
bqm.remove_offset()
self.assertAlmostEqual(bqm.offset, 0.0)
def test_relabel_typical_copy(self):
linear = {0: .5, 1: 1.3}
quadratic = {(0, 1): -.435}
offset = 1.2
vartype = dimod.SPIN
model = dimod.BinaryQuadraticModel(linear, quadratic, offset, vartype)
mapping = {0: 'a', 1: 'b'}
newmodel = model.relabel_variables(mapping, inplace=False)
self.assertIsNot(model, newmodel)
self.assertIsNot(model.linear, newmodel.linear)
self.assertIsNot(model.quadratic, newmodel.quadratic)
# check that new model is the same as old model
linear = {'a': .5, 'b': 1.3}
quadratic = {('a', 'b'): -.435}
offset = 1.2
vartype = dimod.SPIN
testmodel = dimod.BinaryQuadraticModel(linear, quadratic, offset, vartype)
self.assertEqual(newmodel, testmodel)
def test_binary_property(self):
linear = {0: 1, 1: -1, 2: .5}
quadratic = {(0, 1): .5, (1, 2): 1.5}
offset = -1.4
vartype = dimod.BINARY
model = dimod.BinaryQuadraticModel(linear, quadratic, offset, vartype)
self.assertIs(model, model.binary)
#
# create a binary model
linear = {0: 1, 1: -1, 2: .5}
quadratic = {(0, 1): .5, (1, 2): 1.5}
offset = -1.4
vartype = dimod.SPIN
model = dimod.BinaryQuadraticModel(linear, quadratic, offset, vartype)
binary_model = model.change_vartype(dimod.BINARY, inplace=False)
self.assertEqual(model.binary, binary_model)
def test_typical(self):
sampler = dimod.SpinReversalTransformComposite(dimod.ExactSolver())
Q = {('a', 'a'): -1, ('b', 'b'): -1, ('a', 'b'): 2}
response = sampler.sample_qubo(Q, num_spin_reversal_transforms=100, spin_reversal_variables={'a'})
dimod.testing.assert_response_energies(response, dimod.BinaryQuadraticModel.from_qubo(Q))