Trees | Indices | Help |
---|
|
1 """Perform uniform crossovers between the genomes of two organisms. 2 3 4 genome 1 -- A B C D E F G 5 . . . . 6 genome 2 -- a b c d e f g 7 8 After crossover: 9 10 new genome 1 -- a B c d E f G 11 new genome 2 -- A b C D e F g 12 13 Uniform Crossover is a standard crossover technique for 14 rapid mutation-behavior. 15 """ 16 # standard modules 17 import random 1820 """Perform single point crossover between genomes at some defined rates. 21 22 This performs a single crossover between two genomes at some 23 defined frequency. The location of the crossover is chosen randomly 24 if the crossover meets the probability to occur. 25 """5227 """Initialize to do uniform crossover at the specified probability and frequency. 28 """ 29 self._crossover_prob = crossover_prob 30 self._uniform_prob = uniform_prob 31 return3234 """Potentially do a crossover between the two organisms. 35 """ 36 new_org_1 = org_1.copy() 37 new_org_2 = org_2.copy() 38 39 # determine if we have a crossover 40 crossover_chance = random.random() 41 if crossover_chance <= self._crossover_prob: 42 minlen = min(len(new_org_1.genome),len(new_org_2.genome)) 43 for i in range( minlen ): 44 uniform_chance = random.random() 45 if uniform_chance <= self._uniform_prob: 46 # cycle element 47 temp = new_org_1.genome[i] 48 new_org_1.genome[i] = new_org_2.genome[i] 49 new_org_2.genome[i] = temp 50 51 return new_org_1, new_org_2
Trees | Indices | Help |
---|
Generated by Epydoc 3.0.1 on Fri Nov 26 15:47:44 2010 | http://epydoc.sourceforge.net |