| 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 18 1921 """Perform single point crossover between genomes at some defined rates. 22 23 This performs a single crossover between two genomes at some 24 defined frequency. The location of the crossover is chosen randomly 25 if the crossover meets the probability to occur. 26 """5328 """Initialize to do uniform crossover at the specified probability and frequency. 29 """ 30 self._crossover_prob = crossover_prob 31 self._uniform_prob = uniform_prob 32 return3335 """Potentially do a crossover between the two organisms. 36 """ 37 new_org_1 = org_1.copy() 38 new_org_2 = org_2.copy() 39 40 # determine if we have a crossover 41 crossover_chance = random.random() 42 if crossover_chance <= self._crossover_prob: 43 minlen = min(len(new_org_1.genome),len(new_org_2.genome)) 44 for i in range( minlen ): 45 uniform_chance = random.random() 46 if uniform_chance <= self._uniform_prob: 47 # cycle element 48 temp = new_org_1.genome[i] 49 new_org_1.genome[i] = new_org_2.genome[i] 50 new_org_2.genome[i] = temp 51 52 return new_org_1, new_org_2
| Trees | Indices | Help |
|
|---|
| Generated by Epydoc 3.0.1 on Tue Feb 5 18:03:37 2013 | http://epydoc.sourceforge.net |