Ejemplo n.º 1
0
    def test_SingleSpinFlip_Polynomial_Binary(self):
        system_size = 5
        self.polynomial = G.Polynomial(system_size)
        self.polynomial[0] = +1
        self.polynomial[0, 1] = -1
        self.polynomial[0, 2] = +1.5
        self.polynomial[0, 3] = -1.6
        self.polynomial[0, 4] = -1.7
        self.polynomial[1, 3] = +2.3
        self.polynomial[1, 4] = -0.3
        self.polynomial[2, 3] = +3.4
        self.polynomial[2, 4] = +3.7
        self.polynomial[3, 4] = -0.8
        self.polynomial[0, 1, 2] = -0.5
        self.polynomial[1, 2, 3] = -1.0
        self.polynomial[2, 3, 4] = +0.9
        #classial ising (Polynomial)
        system = S.make_classical_ising_polynomial(
            self.polynomial.gen_binary(), self.polynomial, "BINARY")

        #schedulelist
        schedule_list = U.make_classical_schedule_list(0.1, 100.0, 200, 200)

        #anneal
        A.Algorithm_SingleSpinFlip_run(system, self.seed_for_mc, schedule_list)

        #result spin
        result_spin = system.variables

        #compare
        self.assertAlmostEqual(-3.1, self.polynomial.calc_energy(result_spin))
Ejemplo n.º 2
0
    def test_SingleSpinFlip_TransverseIsing_Sparse_WithEigenImpl(self):

        #classial ising (sparse)
        system = S.make_transverse_ising(self.dense.gen_spin(self.seed_for_spin), self.dense, 1.0, 10)

        #schedulelist
        schedule_list = U.make_transverse_field_schedule_list(10, 100, 100)

        #anneal
        A.Algorithm_SingleSpinFlip_run(system, self.seed_for_mc, schedule_list)

        #result spin
        result_spin = R.get_solution(system)

        #compare
        self.assertTrue(self.true_groundstate == result_spin)
Ejemplo n.º 3
0
    def test_SingleSpinFlip_ClassicalIsing_Sparse_WithEigenImpl(self):

        #classial ising (sparse)
        system = S.make_classical_ising_Eigen(self.sparse.gen_spin(self.seed_for_spin), self.sparse)

        #schedulelist
        schedule_list = U.make_classical_schedule_list(0.1, 100.0, 100, 100)

        #anneal
        A.Algorithm_SingleSpinFlip_run(system, self.seed_for_mc, schedule_list)

        #result spin
        result_spin = R.get_solution(system)

        #compare
        self.assertTrue(self.true_groundstate == result_spin)
Ejemplo n.º 4
0
    def test_SingleSpinFlip_Polynomial_Spin(self):
        system_size = 5
        self.polynomial = G.Polynomial(system_size)
        self.polynomial = self.gen_testcase_polynomial(self.polynomial)
        #classial ising (Polynomial)
        system = S.make_classical_ising_polynomial(self.polynomial.gen_spin(),
                                                   self.polynomial, "SPIN")

        #schedulelist
        schedule_list = U.make_classical_schedule_list(0.1, 100.0, 200, 200)

        #anneal
        A.Algorithm_SingleSpinFlip_run(system, self.seed_for_mc, schedule_list)

        #result spin
        result_spin = system.variables

        #compare
        self.assertAlmostEqual(self.true_energy,
                               self.polynomial.calc_energy(result_spin))