You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The standard k-means algorithm may result in empty species, e.g. consider this example in 1D space:
Initial clusters
{2, 3, 3, 3}
{3, 7, 7, 7}
{7, 8, 8, 8}.
For k=3, the first update will empty the middle cluster.
Once the cluster is empty it has no centroid, and therefore will not gain any genomes in later iterations, i.e. it will remain empty at completion of the k-means iterations.
This is currently somewhat/partly handled by NeatEvolutionAlgorithm.IntegrateOffspringIntoSpecies(), which 're-speciates' the full population if one or more species are empty, but that re-speciation uses k-means clustering, so it can still produce empty species.
Other code may then assume that all species obtain at least one genome, and thus other problems may result from this.
The standard k-means algorithm may result in empty species, e.g. consider this example in 1D space:
Initial clusters
For k=3, the first update will empty the middle cluster.
Once the cluster is empty it has no centroid, and therefore will not gain any genomes in later iterations, i.e. it will remain empty at completion of the k-means iterations.
This is currently somewhat/partly handled by NeatEvolutionAlgorithm.IntegrateOffspringIntoSpecies(), which 're-speciates' the full population if one or more species are empty, but that re-speciation uses k-means clustering, so it can still produce empty species.
Other code may then assume that all species obtain at least one genome, and thus other problems may result from this.
Also see https://stackoverflow.com/questions/11075272/k-means-empty-cluster
The text was updated successfully, but these errors were encountered: