Ich folgte an example über einen genetischen Algorithmus in Java. Obwohl ich das Konzept dieser Anwendung verstehe, verstehe ich nicht, wie ich eine Formel meiner Wahl anwenden und den genetischen Algorithmus mit x
(ein Individuum-Gen) seinen höchsten Wert finden lassen würde.Funktion maximieren in Java
Ich habe versucht, den folgenden Code, um die Fitness den Wert der Formel wie folgt zurückkehren zu müssen:
static int getFitness(Individual individual) {
int fitness = 0;
Integer x = Integer.parseInt(individual.toString(), 2);
fitness = calculateFormula(x);
return fitness;
}
public static int calculateFormula(int x) {
int result = (-x * x) + (7 * x);
return result;
}
Aber mit dem Tutorial Ich folgte, soll man eine Lösung am Anfang spezifizieren. Aber wenn ich das tue, wird es nach dieser Lösung suchen und nicht den Wert von x
, der den höchsten result
zurückgeben wird. Wenn Sie keine Lösung angeben, endet sie einfach, wenn das Gen 0
gefunden wurde.
Also die Frage: Wie würde ich eine Formel auf den Genetischen Algorithmus anwenden, so wird es für das höchste Ergebnis der Formel -x² + 7x
suchen?
„a angeben Lösung am Anfang "- was bedeutet das? Am Anfang von was? –
@KevinHooke [Das Tutorial] (http://www.theprojectspot.com/tutorial-post/creating-a-genetic-algorithm-for-beginners/3) Ich befolgte eine Kandidatenlösung zu Beginn des Programms. Das Programm stoppt, wenn es diesen Kandidaten gefunden hat. Ich möchte, dass der Genetische Algorithmus stoppt, wenn er das maximale Ergebnis der Formel gefunden hat oder wenn die maximale Iteration erreicht wurde. – Lars
Re. "Stop, wenn das maximale Ergebnis gefunden wurde" - Woher wird der Code aufgerufen? Sie haben keine Iteration in Ihrem Code, wie dargestellt, also etwas anderes, das Ihren Code in einer Schleife aufruft? Wo ist die Logik zur Bestimmung des maximalen Ergebnisses? –