-
Notifications
You must be signed in to change notification settings - Fork 0
/
Crossover.py
26 lines (25 loc) · 1.13 KB
/
Crossover.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# Importing required modules
from DNA import DNA
import random
# Method for applying crossover
def applyCrossover(firstParent, secondParent, chromosomeSize):
child = DNA(chromosomeSize) # Generating a child for applying crossover
crossoverSlice = random.randint(0, firstParent.chromosomeSize) # Choosing random integer for applying slicing for crossover
# Change child genes as follows
# Child genes = genes from parent 1[0 to crossoverSlice-1] + genes from parent 2[crossoverSlice to end]
# Giving both parents equal chance
if(random.uniform(0, 1)<0.5):
# Updating child genes
for i in range(firstParent.chromosomeSize):
if(i<crossoverSlice):
child.chromosome[i] = firstParent.chromosome[i]
else:
child.chromosome[i] = secondParent.chromosome[i]
else:
# Updating child genes
for i in range(firstParent.chromosomeSize):
if(i<crossoverSlice):
child.chromosome[i] = secondParent.chromosome[i]
else:
child.chromosome[i] = firstParent.chromosome[i]
return child # Return the child