0

I am trying to create an efficient crossover method for a genetic algorithm I am building. I only have 2 or 3 variables to optimise so I can treat each generation as points on a plane or sphere.

To generate the children I would like to divide the space into triangles or quadrilaterals and then take the centroid of each as the child. My problem is in subdividing the space. How can I group the points and also ensure that each parent contributes to the same number of children?

One solution might be to form clusters of N (3 or 4) nearest neighbour points and then take the centroid of these points as the child. More children could then be generated by grouping N clusters and taking the centroid again. I am not very familiar with nearest neighbour clustering and, although I have been looking into it, I have yet to find anything that seems like a particularly efficient solution.

  • So to simplify, you have 4N points that you want to divide into N clusters, each with 4 points? and you'd like geometric nearness to decide the clusters? https://en.wikipedia.org/wiki/K-means_clustering – AakashM May 03 '18 at 09:34
  • Not quite, I would like the parents to be able to contribute to multiple clusters. For example, if we have a grid of 20 evenly distributed points and divide it into squares, we get 12 squares. This would give 12 children, located at the centroid of each square – Dónal Flanagan May 03 '18 at 11:36
  • Seems you need a quadtree for 2D or an octree for 3D. – Ripi2 May 03 '18 at 17:09
  • Again, not quite. The quad tree would divide the space into sections with a certain number of individuals in each one. It would basically be the same as grouping the points with k-means and taking the centroid for each group. – Dónal Flanagan May 04 '18 at 12:21

0 Answers0