1

Ich schreibe einen genetischen Algorithmus, der Fitness-Sharing in Turnierauswahl verwendet. In der gesamten Literatur, die ich gefunden habe (Sareni for example), wird erwähnt, dass die eigene Fitness (Fi) der Lösung durch die Summe ihrer Nischenabstände (Mi) geteilt werden sollte.Fitness Sharing in Multi-Ziel-Optimierung

Was ich nicht verstehe, ist, wie wir mehrere Ziele optimieren jede Lösung hat mehr als eine Fitness. Was ist dann sein "Fitness" Fi? sollte ich es als die Multiplikation all seiner Fitness sehen?

zum Beispiel in dem Code, den ich schreibe (Verarbeitung):

float sharedFitnessA = (a.f2*a.f3)/nicheCountA; 

dank

n

Antwort

1

Für Pareto-Optimierung des Ziel des Fitness-Sharing (die Bevölkerung zu verteilen über eine Anzahl von verschiedenen Peaks im Suchraum, wobei jeder Peak einen Anteil der Population im Verhältnis zu der Höhe dieses Peaks empfängt) wird oft auf eine andere Art und Weise verfolgt.

Wenn zwei Kandidaten entweder beide dominieren oder beide nicht dominiert sind (daher ist es wahrscheinlich, dass sie in der gleichen Äquivalenzklasse sind), wird der Nischenzähler Mi verwendet, um den "besten Fit" -Kandidaten auszuwählen.

z.

Equivalence Class Sharing

(hier Maximierung entlang der x-Achse und die Minimierung auf der y-Achse)

Kandidaten nicht von der Vergleichsmenge bestimmt. Aus Sicht von Pareto ist beides nicht bevorzugt. Unter Verwendung von Mi wählen wir Candidate2 (kleinste Nischenzählung und somit die kleinste Anzahl von Individuen in seiner Nische).

Dies wird Äquivalenzklasse Sharing genannt und es basiert nicht auf Fitness-Degradation (d. H. Fi/Mi), aber behält Vielfalt auf der Vorderseite.

Für weitere Details werfen Sie einen Blick auf Multiobjective Optimization Using the Niched Pareto Genetic Algorithm von Jeffrey Horn und Nicholas Nafpliotis (es enthält auch einige Implementierungsdetails).