class TestBasinhopping(unittest.TestCase): def setUp(self): natoms = 6 self.system = LJCluster(natoms) self.e1 = -12.7120622568 self.e2 = -12.302927529580728 def assertEnergy(self, e): self.assertTrue( abs(e-self.e1) < 1e-4 or abs(e-self.e2) < 1e-4) def test_create_basinhopping(self): bh = self.system.get_basinhopping(outstream=None) bh.run(3) self.assertEnergy(bh.result.energy) self.assertEnergy(bh.markovE) def test_takestep(self): takestep = self.system.get_takestep(stepsize=1.) bh = self.system.get_basinhopping(outstream=None, takestep=takestep) bh.run(3) self.assertEnergy(bh.result.energy) self.assertEnergy(bh.markovE)
self.mcstep = RandomDisplacement(stepsize=stepsize) def takeStep(self, coords, **kwargs): #make a new monte carlo class mc = MonteCarlo(coords, self.potential, self.mcstep, temperature = self.T, outstream=None) mc.run( self.nsteps ) coords[:] = mc.coords[:] def updateStep(self, acc, **kwargs): pass natoms = 12 niter = 100 system = LJCluster(natoms) # define a custom takestep routine potential = system.get_potential() reseed = TakeStepMonteCarlo(potential, T=100, nsteps=1000) takestep = system.get_takestep() stepGroup = Reseeding(takestep, reseed, maxnoimprove=20) db = system.create_database() bh = system.get_basinhopping(database=db, takestep=stepGroup) bh.run(niter) print "the lowest energy found after", niter, " basinhopping steps is", db.minima()[0].energy print ""
def takeStep(self, coords, **kwargs): #make a new monte carlo class mc = MonteCarlo(coords, self.potential, self.mcstep, temperature=self.T, outstream=None) mc.run(self.nsteps) coords[:] = mc.coords[:] def updateStep(self, acc, **kwargs): pass natoms = 12 niter = 100 system = LJCluster(natoms) # define a custom takestep routine potential = system.get_potential() reseed = TakeStepMonteCarlo(potential, T=100, nsteps=1000) takestep = system.get_takestep() stepGroup = Reseeding(takestep, reseed, maxnoimprove=20) db = system.create_database() bh = system.get_basinhopping(database=db, takestep=stepGroup) bh.run(niter) print "the lowest energy found after", niter, " basinhopping steps is", db.minima( )[0].energy print ""