2016-03-30 23 views
0

n en iyi kromozomlar nasıl seçilir ve onları bir dizi olarak döndürürsünüz?Genetik algoritma Seçimi

Chromosome[] Selection(int n) {} 

Kromozomları kendi uygunluğu ile karşılaştırmam gerektiğini biliyorum. Metodu public double calculateFitness()

+2

Sağlayabileceğiniz calculateFitness() kodunu? – Vladimir

cevap

1

Karşılaştırmak istediğiniz bir dizi Chromosome s var. Sonra sadece kendi uygunluk onları sipariş ve n iyi alabilir:

Chromosome[] sourceArray = ..... // wherever you got them from 
Chromosome[] bestN = sourceArray. 
    OrderByDescending(chromosome => chromosome.calculateFitness()). 
    Take(n).ToArray(); 
0

Ben premature convergence önlemek için olmayan diğer seçkinci seçim şemaları bir göz sizi öneririz. Kısacası, çözümlerin fitness kalitesi açısından hiçbir ilerleme olmadan yerel bir optima içinde sıkışıp kalmak. Alternatif olasılık şemaları, kodlaması kolay, Rulet Tekerleği Seçimi veya Turnuva Seçimi'dir.

Kontrol dışarı size nasıl uygulanacağı konusunda bir fikir verebilir bu diğer mesajları: