2016-03-30 4 views
0

Wie wählt man n beste Chromosomen und gibt sie als Array zurück?Genetischer Algorithmus Auswahl

Chromosome[] Selection(int n) {} 

Ich weiß, dass ich Chromosomen durch ihre Fitness vergleichen müssen. Ich habe Methode public double calculateFitness()

+2

können Ihnen calculateFitness() Code? – Vladimir

Antwort

1

Ich nehme an, Sie haben ein Array von Chromosome s Sie vergleichen möchten. Dann können Sie sie einfach durch ihre Fitness bestellen und nehmen Sie die besten n:

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

Ich würde Ihnen vorschlagen, einen Blick auf andere nicht-elitären Auswahlschemata müssen premature convergence zu vermeiden. Kurz gesagt, in einer lokalen Optima stecken geblieben zu sein, ohne Fortschritte in Bezug auf die Fitnessqualität der Lösungen zu machen. Alternative probabilistische Schemata, eher einfach zu programmieren, sind Roulette-Wheel Selection oder Tournament Selection.

Sehen Sie sich diese anderen Stellen, die Ihnen eine Vorstellung darüber geben kann, wie sie umgesetzt werden: