Entwurfsstrategien Alfred Hermes Kinder Mutationen 1011001101 101|1101011 101110|0|011 1111101011 111|1001101 11110011|1|1 Generieren Kreuzen Mutieren Eltern Population: Selektieren Selektion 3 4 5 2 5 2 6 3 Kreuzung (cross over) 3 4 5 2 5 2 01110110 11010001 01110110 11010001 01110001 6 11010110 3 Mutation (bitflip) 01110001 bitflip 01010001 11010110 bitflip 11000110 Grundlagen der GA • Selektion • Kreuzung • binäre Wettkampfselektion • 1-Point Crossover • Mutation • bit flip Demonstrationsprogramm • • • • • Applet Klasse Label TextField Button – ActionListener – actionPerformed • Methoden – generiere() – kreuze() – mutiere() Die Klasse GenCode Attribut Konstruktoren Methoden Eigenschaft Together Ein grafisch orientiertes Werkzeug zur Erstellung von UML-Diagrammen und zur Generierung von Java-Code Konstruktoren (roh) – in Java private int laenge; private char[] code; public class GenCode { public GenCode(String s) { } public GenCode(int l, boolean w) { } public GenCode(GenCode v, int p, GenCode w) { } Methoden (roh) in Java public int getLaenge(){ return laenge; } public void setLaenge(int laenge){ this.laenge = laenge; } public char liesCode(int pos) { } public void schreibCode(int i, char z) { } public void mutiere(int pos) { } public String toString() { } Deklaration im Java-Applet import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class GenDemo extends Applet { Label … TextField[] tf = new TextField[6]; // 6 Textfelder Button... GenCode e1, e2, k1, k2, m1, m2; // tf [0] [3] [1] [4] [2] [5] // 6 gen. Codes Initialisieren-Ereignisse im Applet public void init () { // Gestaltung der Oberfläche . . . . . // Anonyme Ereignisklassen buGenerieren.addActionListener (new ActionListener () { public void actionPerformed (ActionEvent evt) { generiere();}}); buKreuzen.addActionListener (new ActionListener () { public void actionPerformed (ActionEvent evt) { kreuze();}}); buMutieren.addActionListener (new ActionListener () { public void actionPerformed (ActionEvent evt) { mutiere();}}); generiere(); } // Start Methoden des Applets public void generiere() { e1 = new GenCode(anzahl, true); e2 = new GenCode(anzahl, true); tf[0].setText(e1.toString()); tf[3].setText(e2.toString()); kreuze(); } public void kreuze() { int zufallszahl = (int) (Math.random()*anzahl); e1 = new GenCode(tf[0].getText()); e2 = new GenCode(tf[3].getText()); k1 = new GenCode(e1, zufallszahl, e2); k2 = new GenCode(e2, zufallszahl, e1); // ... Anzeigen mutiere(); } public void mutiere() { ... } // generiere() // Zufall // anzeigen // --> kreuze() // Zufallsstelle // auslesen // erzeugen // --> mutiere() Planung - Darstellung • UML – Entwurfsarten • MVC • Projektaktivitäten Entwurfsarten • • • • Komposition / Vererbung Schnittstellen Nebenläufige Prozesse Benachrichtigung MVC • Model: Verwaltung der Daten mit Methoden zum Ändern und Abfragen und Benachrichtigen • View: Anzeige der Daten • Control: Reaktion auf Benutzereingaben und Benachrichtigung des Modells MVC-Schema in Java Control 1 Control 2 Model Control 3 Observable Observer View 1 View 2 View 3 Aktivitäten beim Entwurf • Bestimmung des Zwecks und der Funktionen • Auswahl der Klassen • Entwurf der Benutzerschnittstelle • Ausarbeitung dynamischer Strukturen • Erstellung eines Klassendiagramms