kramann.info
© Guido Kramann

Login: Passwort:










Informatik3
1 Vom_struct_zur_Klasse
..1.1 Vom_struct_zur_Klasse
..1.2 struct_Programm
..1.3 Klassen_Programm
..1.4 Offene_Fragen
..1.5 Historie
..1.6 Objektabstraktion
..1.7 OO_Kundenverwaltung
..1.8 Objektfaehigkeiten
..1.9 Formatierung
..1.10 Motivation
..1.11 Uebung1
..1.12 Uebung2
2 UML
..2.1 Volumenberechnung
..2.2 UML_Klassendiagramm
..2.3 Konstruktor
..2.4 Statische_Variable
3 Strings
..3.1 Klassenbibliotheken
..3.2 stringUML
..3.3 Uebung3
4 Initialisierungen
4 bluej
5 Zeiger_und_Arrays
..5.1 Zeiger
..5.2 Zeiger_und_Funktion
..5.3 Uebung4
6 Vererbung
..6.1 MesswerteUML
..6.2 MesswerteProgramm
..6.3 VererbungsProgramm
..6.4 Vector
..6.5 Uebung
7 Modifikatoren
..7.1 public_Vererbung
..7.2 protected_Vererbung
8 Listen_und_Templates
..8.1 Containertypen
....8.1.1 ListeUML
....8.1.2 ListeProgramm
..8.2 Templates
....8.2.1 Listentemplate
....8.2.2 STLvectorTemplate
..8.3 Uebung5
..8.4 Uebung6
..8.5 Uebung7
9 Java
..9.1 Uebung
..9.2 GettingStarted
..9.3 Animation
..9.4 Hybrid
..9.5 Threads
10 Delegation
11 LayoutProjekt
12 Fenster
13 Uebung
14 Zwischenprojekt
..14.1 Befehle
..14.2 Planung
..14.3 JNI
..14.4 JNIumsetzen
..14.5 Anwendungsklasse
..14.6 GUI01
..14.7 GUI02
15 Rasterlayout
..15.1 Bilder_Packages
..15.2 interfaces
..15.3 ArrayList
..15.4 clone
..15.5 Uebung
16 Nuetzliches
..16.1 Threads
..16.2 Animation
..16.3 RungeKutta
..16.4 Loesungsansatz
..16.5 Internetprogrammierung
....16.5.1 Codegenerierung
....16.5.2 PHP_Programmierung
....16.5.3 PHP_OOP
....16.5.4 Java
17 Algorithmen
..17.1 RungeKutta
..17.2 Loesungsansatz
..17.3 Evoopt
..17.4 Uebung12
..17.5 Uebung8_2014
..17.6 Ausdruecke
18 Uebung10
19 UML_ALT
..19.1 Flaechenberechnung
..19.2 UML_Flaechenberechnung
..19.3 Implementierung
..19.4 ListeUML
..19.5 ListenImplementierung
..19.6 Anwendung

17.3 Optimierung eines Parametersatzes durch einen genetischen Algorithmus

Erläuterung des Prinzips

  • Bei genetischen Algorithmen werden die zu optimierenden Parameter als "Gene" aufgefaßt.
  • Tatsächlich werden in dem nachfolgenden Java-Beispiel die Parameter durch byte-Zahlen repräsentiert, bei denen einzelne Bits mutieren können, oder aus zwei anderen Parametern beliebige Auswahlen an Bits rekombiniert werden können.
  • Um leichte Variationen zu erzeugen, gibt es die Methode "mutieren", bei dem zufällig einzelne Bits der binären Zahlenrepräsentation eines Parametersatzes geflipt werden.
  • Um zwei gute Parametersätze zu einem neuen zu rekombinieren, gibt es die Funktion gleichen Namens, die für jedes Bit entscheidet, ob sie es aus dem einen oder dem anderen Parametersatz nimmt.
  • Der Algorithmus geht wie folgt vor:
  1. Zuerst werden 100 Simulationen mit Parametersätzen durchgeführt, die nahe einem Ausgangsparametersatz liegen.
  2. Dann wird der Fehler für jeden Satz bestimmt.
  3. Dann werden die 10 besten Sätze herauskopiert und eine neue Generation aus diesen 10 durch Rekombination der 10 besten erzeugt. D.h. aus den 10 Besten entstehen wieder 90 Parametersätze + die 10 Besten selber unverändert.
  4. Dann werden noch leichte Mutationen auf den neu entstandenen Sätzen durchgeführt.
  5. Schließlich wird wieder der Fehler für jeden der Sätze aus der jüngsten Generation bestimmt und der Vorgang wiederholt sich bei Schritt 3.
Evolutionärer Algorithmus

Bild 17.3-1: Prinzip eines evolutionären Algorithmus.

Zahlenraten mit einem in Java implementierten genetischen Algorithmus

evoopt.zip - in Vorlesung zu entwickelnde Programme.