Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def custom_crossover(genome, **kwargs):
- mom = kwargs["mom"]
- dad = kwargs["dad"]
- mins = mom.getParam("min_constr")
- maxes = mom.getParam("max_constr")
- count = kwargs["count"]
- sister = None
- brother = None
- if count >= 1:
- sister = mom.clone()
- sister.resetStats()
- for i, pair in enumerate(izip(mom, dad)):
- midpoint = (pair[0] + pair[1]) / 2
- distance = abs(pair[0] - pair[1])
- sister[i] = midpoint + distance * (random() - random())
- if sister[i] < mins[i]:
- sister[i] = mins[i]
- elif sister[i] > maxes[i]:
- sister[i] = maxes[i]
- if count == 2:
- brother = dad.clone()
- brother.resetStats()
- for i, pair in enumerate(izip(mom, dad)):
- midpoint = (pair[0] + pair[1]) / 2
- distance = abs(pair[0] - pair[1])
- brother[i] = midpoint + distance * (random() - random())
- if brother[i] < mins[i]:
- brother[i] = mins[i]
- elif brother[i] > maxes[i]:
- brother[i] = maxes[i]
- return (sister, brother)
Add Comment
Please, Sign In to add comment