Skip to content

Commit

Permalink
Adding tests for get_system_E() for SA algorithm.
Browse files Browse the repository at this point in the history
  • Loading branch information
shinmorino committed Nov 11, 2018
1 parent 367b511 commit 165eb20
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 0 deletions.
25 changes: 25 additions & 0 deletions sqaodpy/tests/test_bipartite_graph_annealer.py
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,31 @@ def _get_spin_energy_ref(self, qset, G, beta) :
E *= 1. / (2 * beta) * np.log(1 / np.tanh(G * beta / m))
return E

def test_get_system_E_for_SA(self) :
G = 0.01
beta = 1. / 0.05
N0, N1, m = 5, 5, 5

ann = self.anpkg.bipartite_graph_annealer(dtype = self.dtype)
b0, b1, W = bipartite_graph_random(N0, N1, self.dtype)
ann.set_qubo(b0, b1, W)
ann.set_preferences(n_trotters = m, algorithm = sqaod.algorithm.sa_default)
ann.prepare()

# random
qset = []
for _ in range(m) :
q0, q1 = - np.ones((N0, ), np.int8), - np.ones((N1, ), np.int8)
sq.common.randomize_spin(q0)
sq.common.randomize_spin(q1)
qset.append((q0, q1))

ann.set_qset(qset)
Esys = ann.get_system_E(G, beta)

Emean = np.mean(ann.get_E())
self.assertTrue(np.allclose(Esys, Emean, atol=self.epu))

def test_get_system_E_with_uniform_q(self) :
G = 0.01
beta = 1. / 0.05
Expand Down
19 changes: 19 additions & 0 deletions sqaodpy/tests/test_dense_graph_annealer.py
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,25 @@ def _get_spin_energy_ref(self, qset, G, beta) :
E *= 1. / (2 * beta) * np.log(1 / np.tanh(G * beta / m))
return E

def test_get_system_E_for_SA(self) :
G = 0.01
beta = 1. / 0.05
N, m = 10, 5

ann = self.anpkg.dense_graph_annealer(dtype = self.dtype)
W = dense_graph_random(N, self.dtype)
ann.set_qubo(W)
ann.set_preferences(n_trotters = m, algorithm=sq.algorithm.sa_default)
ann.prepare()

qset = np.empty((m, N), np.int8)
sq.common.randomize_spin(qset)
ann.set_qset(qset)
Esys = ann.get_system_E(G, beta)

Emean = np.mean(ann.get_E())
self.assertTrue(np.allclose(Esys, Emean, atol=self.epu))

def test_get_system_E_with_uniform_q(self) :
G = 0.01
beta = 1. / 0.05
Expand Down

0 comments on commit 165eb20

Please sign in to comment.