Frage

Hier ist mein Problem, ich modifizierende Code, den ich für genetische Algorithmen gefunden habe, um numerische Optimierung einer Funktion zu dabei. Im Wesentlichen verwendet das Programm mit einer Funktion f und unser gewünschter Wert, dass das Programm GA zur Durchsuchung von Werten von X und Y verwendet, die den entsprechenden gewünschten Wert bereitstellen. Ich bastriere immer mit meiner Fitness-Funktion, die ich fühle, ist die Wurzel des Problems.

Der grundlegende Code bricht zusammen auf:

erzeugt eine zufällige Chromosomenpopulation

Verwenden Sie eine Blase-Sortierung, basierend auf jeder Chromosomen-Fitness

Prüfen Sie, ob eines von ihnen die Funktion löst

Wenn man es löst, dann anhalten und drucken

sonst, Erzeugen Sie Kinder, die auf den Eltern basieren Sortieren, überprüfen Sie die beste Antwort, Schleife

Ich hoffe, dass jemand mich in die richtige Richtung zeigen kann, ich werde es heute Abend noch einmal mehr sezieren, aber ich scheine einen Haken auf diese Weise getroffen zu haben. Für komplexere Funktionen als ich hart codiert habe, scheint es einen zufälligen Prozentsatz (normalerweise weniger als 20) zu konvergieren, aber es sollte viel näher an 0 sein. Die einfache codierte Funktion kehrt weiter zurück. Also bin ich nicht zu 100% auf dem, was los ist.

generasacodicetagpre.

}

generasacodicetagpre.

War es hilfreich?

Lösung

Eigentlich war es ein einfacher Fehler, der mir entging, dass ich erwischt werden sollte.Das Hauptproblem lag bei der Verwendung (3 * x) ^ (2 * y);^ ist ein bitweise Xor in Java, aber ein Exponenten.(Whoops) Das Problem wurde mit math.pow (3 * x, 2 * y) korrigiert;... und ein wenig doppelte Überprüfung der Fitness-Funktion hatte es, mit einigen anderen kleineren Änderungen aufzufüllen :)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top