def test_basin_hopping(pot, angles): # pragma: no cover from pele.basinhopping import BasinHopping from pele.takestep.displace import RandomDisplacement from pele.takestep.adaptive import AdaptiveStepsize takestep = RandomDisplacement(stepsize=np.pi / 4) takestepa = AdaptiveStepsize(takestep, frequency=20) bh = BasinHopping(angles, pot, takestepa, temperature=1.01) bh.run(20)
def bh_no_system_class(): import numpy as np from pele.potentials import LJ natoms = 17 potential = LJ() x0 = np.random.uniform(-1, 1, 3*natoms) from pele.takestep import RandomDisplacement, AdaptiveStepsizeTemperature displace = RandomDisplacement() adaptive_displacement = AdaptiveStepsizeTemperature(displace) from pele.storage import Database database = Database("lj17.sqlite") from pele.basinhopping import BasinHopping bh = BasinHopping(x0, potential, adaptive_displacement, storage=database.minimum_adder) bh.run(10) for m in database.minima(): print m.energy
rotate=0.), frequency=50) step2 = takestep.AdaptiveStepsize(OXDNATakestep(displace=0., rotate=parameters.rotate), frequency=50) group.addBlock(100, step1) group.addBlock(100, step2) # with a generate random configuration genrandom = OXDNAReseed() # in a reseeding takestep procedure reseed = takestep.Reseeding(group, genrandom, maxnoimprove=parameters.reseed) # store all minima in a database db = Database(db="storage.sqlite", accuracy=1e-2) # create Basinhopping object opt = BasinHopping(coords, potential, reseed, db.minimum_adder(), temperature=parameters.temperature) # run for 100 steps opt.run(parameters.nsteps) # now dump all the minima i = 0 for m in db.minima(): i += 1 GMIN.userpot_dump("lowest_%03d.dat" % (i), m.coords)
print(ret) # set up and run basin hopping from pele.basinhopping import BasinHopping from pele.takestep.displace import RandomDisplacement from pele.takestep.adaptive import AdaptiveStepsize from pele.storage import savenlowest # should probably use a different take step routine which takes into account # the cyclical periodicity of angles takestep = RandomDisplacement(stepsize=old_div(np.pi, 4)) takestepa = AdaptiveStepsize(takestep, frequency=20) storage = savenlowest.SaveN(500) bh = BasinHopping(angles, pot, takestepa, temperature=1.01, storage=storage) bh.run(400) print("minima found") with open("out.spin", "w") as fout: for min in storage.data: print("energy", min.energy) fout.write("# %g\n" % (min.energy)) printspins(fout, pot, min.coords) fout.write('\n\n') """ view this in gnuplot with the command set size ratio -1 plot 'out.spin' index 0 u 1:2 w p pt 5, '' index 0 u 1:2:($3*0.5):($4*0.5) w vectors """