Was sind "Building Blocks" ? Diese Frage kann am einfachsten anhand eines Beispiels erklärt werden.
Beispiel:
Gesucht ist das Maximum der Funktion F(x) = x * x, für x gilt der Wertebereich [0,255]. Offensichtlich ist die beste Lösung in x = 255 zu finden. Die Population wird als Binärvektoren der Länge acht dargestellt. Jeder Vektor repräsentiert die der Zahl x entsprechende Dualzahl.
Individuen x | Fitneß F(x) = x * x |
00001101 | 169 |
11000110 | 39204 |
00111001 | 3249 |
11110001 | 57600 |
Wenn man nichts über die Fitneßfunktion weiß, dann empfiehlt es sich nach Gleichheiten zwischen Individuen großer Fitneß zu suchen und bei der Bildung von Nachkommen zu berücksichtigen. Im Beispiel bdeutet eine Eins an der ersten Position eine größere Fitneß. Darum sollte diese Eins auch bei den Nachkommen erhalten bleiben.
Diese Idee der Wiederverwendung gleichartiger Gene von Individiuen großer Fitneß kann durch das Konzept der Schemata und Building Blocks näher erklärt werden.
Ein Schema ist ein aus Nullen, Einsen und "Don`t cares" aufgebauter Vektor (011*0). Somit beschreibt ein Schema (z.B. 011*0) eine Untermenge von Genketten (z.B. 01100, 01110). Ein "*" ist Platzhalter für 0 oder 1.
Verwendet man bei der genetischen Suche Schemata statt einfacher Ketten, kann die Menge der verarbeiteten Information wesentlich größer sein.
Ohne Mehraufwand findet die exponentielle Fortpflanzung kleiner Schemata großer Fitneß (building blocks) parallel statt. So werden pro Generation (n Individuen) ca. n hoch 3 Schemata verarbeitet, bei nur n Auswertungen der Fitneßfunktion. Diese Eigenschaft nennt man Impliziter Parallelismus.