Я пытаюсь создать эффективный метод кроссовера для генетического алгоритма, который я строю. У меня есть только 2 или 3 переменные для оптимизации, поэтому я могу рассматривать каждое поколение как точки на плоскости или сфере.
Чтобы родить детей, я хотел бы разделить пространство на треугольники или четырехугольники, а затем взять центр тяжести каждого из них как ребенка.
Моя проблема в разделении пространства. Как можно сгруппировать баллы, а также обеспечить, чтобы каждый родитель вносил вклад в одинаковое количество детей?
Одним из решений может быть формирование кластеров из N (3 или 4) ближайших соседних точек, а затем взять центр тяжести этих точек как ребенка. Тогда можно было бы создать больше детей, сгруппировав N кластеров и снова взяв центроид.
Я не очень хорошо знаком с кластеризацией ближайших соседей, и, хотя я изучал ее, мне еще предстоит найти что-то, что кажется особенно эффективным решением.