Willkommen zurück!
Heute werden wir die ersten Schritte in Java gehen, dabei werden wir das Grundgerüst für unseren Genetischen Algorithmus aufbauen. Wir werden erst unsere App mit unserer Main-Methode erstellen, dann werden wir eine GenAlgo-Klasse erstellen, die die Chromosome verwalten wird und dann die eigentlichen Chromosome mit ihren Bit-Strings und Methoden zum Decodieren und Fitness-Score. Ich werde den Code dabei ziemlich stark aufbröckeln, damit auch der Leser es versteht, der vielleicht noch nicht die größten Erfahrungen mit Java gesammelt hat.
Nachdem man ein Java-Projekt in seiner Lieblings-IDE erstellt hat, erstellen wir folgende Dateien:
– App.java
– Chromosom.java
– GenAlgo.java
Nun wollen wir die Dateien auch mit etwas füllen:
App.java:
public class app {
public static void main(String[] args) {
System.out.println("Starting");
}
}
Unsere Main-Methode die zum Start für das Programm genutzt wird. Später wird diese noch erweiteret.
Chromosom.java:
import java.util.HashMap;
import java.util.Random;
public class Chromosom {
String bitstring;
public Chromosom(int lenght) {
bitstring = "";
Random rnd = new Random();
for(int i=0; i < lenght; i++) {
bitstring += rnd.nextInt(2);
}
System.out.println(bitstring);
}
}
Zuerst, erstellen wir einen Stringt namens „bitstring“ der unseren eigentlichen Bit-String speichert (also die 0en und 1en). Danach erstellen wir einen Konstruktor der die länge unseres angepeilten BitStrings erwartet, sprich: „Wie viele 0en und 1en wollen wir speichern?“. Danach erstellen wir ein Random-Objekt. Random liefert uns „Zufallswerte“ zurück, dabei verwenden wir dies um unseren Bit-String mit Werten zu füllen. Danach füllen wir mit einer For-Schleife unser String mit 0 und 1, dabei benutzen wir rnd.nextInt(2), nextInt liefert, wie der Name schon sagt, ein Int zurück, da wir ja Ganzzahlen benötigen, unsere „Range“, also zwischen welchen Werten der Zufallswert liegen soll legen wir mit 2 fest (0-1 = zwei verschiedene Werte). Danach printen wir Testeshalber unseren generierten BitString aus um ggf. Fehler zu finden.
Nächste Woche werden wir dann GenAlgo.java mit etwas Code füllen und Chromosom- und unsere App-Klassen erweitern.
Solltet ihr Fragen haben: Schreibt sie in die Kommentare, ich werde euch gerne helfen!