Guest User

Untitled

a guest
Aug 19th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. def custom_crossover(genome, **kwargs):
  2. mom = kwargs["mom"]
  3. dad = kwargs["dad"]
  4. mins = mom.getParam("min_constr")
  5. maxes = mom.getParam("max_constr")
  6. count = kwargs["count"]
  7. sister = None
  8. brother = None
  9.  
  10. if count >= 1:
  11. sister = mom.clone()
  12. sister.resetStats()
  13. for i, pair in enumerate(izip(mom, dad)):
  14. midpoint = (pair[0] + pair[1]) / 2
  15. distance = abs(pair[0] - pair[1])
  16. sister[i] = midpoint + distance * (random() - random())
  17. if sister[i] < mins[i]:
  18. sister[i] = mins[i]
  19. elif sister[i] > maxes[i]:
  20. sister[i] = maxes[i]
  21. if count == 2:
  22. brother = dad.clone()
  23. brother.resetStats()
  24. for i, pair in enumerate(izip(mom, dad)):
  25. midpoint = (pair[0] + pair[1]) / 2
  26. distance = abs(pair[0] - pair[1])
  27. brother[i] = midpoint + distance * (random() - random())
  28. if brother[i] < mins[i]:
  29. brother[i] = mins[i]
  30. elif brother[i] > maxes[i]:
  31. brother[i] = maxes[i]
  32.  
  33. return (sister, brother)
Add Comment
Please, Sign In to add comment