Ein konsistenter Fitnesswert ist für die effiziente Weiterentwicklung Ihres evolutionären Algorithmus erforderlich. Stellen Sie sich den Extremfall vor: Wenn die Fitnessbewertung für Ihre Kandidaten immer 100% zufällig ist, führt Ihr Algorithmus eine zufällige Suche durch (was nicht effizient ist).
Wenn Ihre Fitnessbewertung nicht konsistent ist, bedeutet dies normalerweise, dass Sie die Bedeutung von "value" in Ihrem Problem nicht erfolgreich abstrahiert haben (und das ist manchmal schwer!) Oder es kann aus Zufallsfaktoren resultieren (eher ähnlich was ich von deiner Beschreibung verstehe). Diesen wird häufig durch Mittelung begegnet.
Wenn in Ihrem Fall diese zufälligen Eingaben wirklich und vorteilhaft sind, sollten Sie eine Mittelung in Betracht ziehen, die die Fitnessbewertung konsistenter machen könnte, wenn auch langsamer.
Aber, kurz gesagt, sind langsame Auswertungen nicht gut (Sie haben Recht damit) und keine inkonsistenten Fitnesswerte. Am Ende, fühlen Sie sich frei, Ihr eigenes Gleichgewicht zu finden.
bearbeitet basierend auf den Kommentaren:
die Aufgabe Stellen Sie sich vor, wo ein künstliches neuronales Netz (ANN), eine Funktion zu reproduzieren hat, zum Beispiel f (x) = x (wobei nur der ANN einen Eingang hat, x, und eine Ausgabe, f (x), aber vielleicht viele versteckte Einheiten für komplexere Fälle benötigt).
Wir könnten Tests für Fitness vorstellen immer einen Satz von Punkten, beispielsweise unter Verwendung Test f (x) für x = {0,2, 0,4, 0,6, 0,8}. Je näher f (x) an der erwarteten f (x) = x in jedem Fall ist, desto höher ist die Fitness. Dies wird im Einklang, aber in Überanpassung führen, wie das Bild zeigt:
Die Lösung ist sehr gut in der Nähe zu den Prüfpunkten, aber unberechenbar anderswo. Der Suchalgorithmus wird aufgrund der konsistenten Auswertung wahrscheinlich effizient sein, aber die Ergebnisse sind möglicherweise nicht gut.
Ein alternativer Ansatz ist es, einen zufälligen Satz von Testpunkten jede Iteration zu verwenden, beispielsweise x = {0,13, 0,19, 0,56, 0,99}.Da die Testpunkte jedes Mal anders sind, muss das Ergebnis überall gut sein. Der Nachteil ist inkonsistent Auswertung, wie im Bild gezeigt:
Die gleiche Kandidatenlösung mit dem Test-Set Eines gute scheint und ziemlich schlecht für den Test B gesetzt Unter diesen Bedingungen der Suchalgorithmus sein kann ineffizienter, aber die Lösung wird besser in dem Bereich der Werte, die wir wollen.
Abhängig von unserem spezifischen Fall können wir die Dinge verbessern, indem wir mehr Iterationen haben, größere Testmengen haben (besser Durchschnitt) oder Zwischenlösungen ausprobieren. Zum Beispiel könnte man immer drei zufällige Punkte testen, wobei der erste immer zwischen 0 und 1/3, der zweite zwischen 1/3 und 2/3 und der dritte zwischen 2/3 und 1 liegt. Die Möglichkeiten sind wirklich endlos und die bessere Wahl hängt von jedem Problem ab.
Hinweis dass viele Aufgaben dieses Problem überhaupt nicht haben. Zum Beispiel müssen wir im klassischen XOR nur für {X1 = 0, X2 = 0; X1 = 1, X2 = 0; X1 = 0, X2 = 1; X1 = 1, X2 = 1}. Natürlich wird es schnell sein, alle vier Fälle zu testen!
Vielen Dank, aber das ist nicht ganz das, was ich verlange. Ich habe mich speziell nach dem theoretischen Effekt gefragt, den Testset für die Fitnessfunktion randomisieren zu lassen. Dies ist mehr über das Verständnis der Theorie als alles andere –
Für mehr Theorie, gibt es viel darüber im Internet. Für detailliertere Fragen müssen Sie Ihre spezifischen Einstellungen/Umgebung usw. kennen. – Rockbar