def setUp(self): natoms = 10 minimiser = PeleMinimiser(BLJCluster(natoms, 5)) self.factory = ClusterFactory(natoms, minimiser, composition=[5, 5], labels=["A", "B"])
def test_cluster(self): natoms=3 minimiser=PeleMinimiser(LJCluster(natoms)) factory=ClusterFactory(natoms,minimiser) with open("restart.xyz",'r') as xyz_file: cluster=factory.read_xyz(xyz_file) self.assertEquals(-5.,cluster.get_energy())
def __init__(self, natoms, minimiser, composition="default", labels=("X", ), pop_size=10, max_generation=10, selector=TournamentSelector(3), offspring=8, mutant_rate=0.1, remove_duplicates=False, mutator=MutateReplace(), crossover=DeavenHo()): #Parameters self.max_generation = max_generation self.mutant_rate = mutant_rate self.offspring = offspring self.pop_size = pop_size self.remove_duplicates = remove_duplicates self.selector = selector self.mutator = mutator self.crossover = crossover #Factory self.factory = ClusterFactory(natoms, minimiser, composition, labels) #PopulationList self.population = PopulationList(natoms, self.factory, pop_size) #Evolutionary progress self.mean_energy_series = [] self.min_energy_series = [] self.db = Database(db="mydatabase.sqlite") self.storage = self.db.minimum_adder()
def setUp(self): natoms = 10 minimiser = PeleMinimiser(lj.LJ()) factory = ClusterFactory(natoms, minimiser) self.population = PopulationList(natoms, factory, max_size=5) while len(self.population) < self.population.max_size: self.population.append(factory.get_random_cluster())
def test_replace(self): natoms=10 minimiser=PeleMinimiser(lj.LJ()) factory=ClusterFactory(natoms,minimiser) parent = factory.get_random_cluster() mutator = MutateReplace() mutant = mutator.get_mutant(parent) self.assertLess(mutant.get_energy(), 0)
def test_population(self): natoms=3 minimiser=PeleMinimiser(LJCluster(natoms)) factory=ClusterFactory(natoms,minimiser) with open("restart.xyz",'r') as xyz_file: population=PopulationList(natoms,factory) population.read_xyz(xyz_file) self.assertEquals(-5.,population[0].get_energy()) self.assertEquals(-4.,population[1].get_energy())
def test_mutant(self): natoms = 10 minimiser = PeleMinimiser(lj.LJ()) factory = ClusterFactory(natoms, minimiser) parent_a = factory.get_random_cluster() parent_b = factory.get_random_cluster() crossover = DeavenHo() offspring = crossover.get_offspring(parent_a, parent_b) self.assertLess(offspring.get_energy(), 0)
def test_exchange(self): natoms=20 minimiser=PeleMinimiser(BLJCluster(natoms,10)) factory=ClusterFactory(natoms,minimiser, composition=[10,10], labels=["A","B"]) cluster = factory.get_random_cluster() mutator = MutateExchange() for i in range(0,50): mutant=mutator.get_mutant(cluster) self.assertEquals(mutant.atom_types[9],0) self.assertEquals(mutant.atom_types[10],1)
def __init__(self, natoms, minimiser, composition="default", labels=("X", ), pop_size=10, max_generation=10, selector=TournamentSelector(3), offspring=8, mutant_rate=0.1, remove_duplicates=False, mass_extinction=False, epoch_thresh=1.e-6, restart=False, mutator=MutateReplace(), crossover=DeavenHo()): #Parameters self.max_generation = max_generation self.mutant_rate = mutant_rate self.offspring = offspring self.pop_size = pop_size self.remove_duplicates = remove_duplicates self.mass_extinction = mass_extinction self.epoch_thresh = epoch_thresh self.selector = selector self.mutator = mutator self.crossover = crossover #Factory self.factory = ClusterFactory(natoms, minimiser, composition, labels) #PopulationList self.population = PopulationList(natoms, self.factory, pop_size) if restart is False: while len(self.population) < self.population.max_size: self.population.append(self.factory.get_random_cluster()) self.population.sort_energy() else: with open("restart.xyz", 'r') as xyz_file: self.population.read_xyz(xyz_file) #Evolutionary progress self.mean_energy_series = [] self.mean_energy_series.append(self.population.get_mean_energy()) self.min_energy_series = [] self.min_energy_series.append(self.population.get_lowest_energy())
def setUp(self): natoms = 10 minimiser = PeleMinimiser(lj.LJ()) self.factory = ClusterFactory(natoms, minimiser)