Allgemeines
Genetische Algorithmen sind gut in der Lage, Probleme zu lösen, die die Zeit- und Ablaufplanung einschließen. Sie wurden auch in der Technik angewandt. Sie werden oft verwendet, um globale Optimierungsprobleme zu lösen.
Als allgemeine Faustregel gilt, dass genetische Algorithmen in Problembereichen mit einer komplexen Fitnesslandschaft nützlich sein könnten, da das Mischen darauf abzielt, die Bevölkerung von lokalen Optima wegzubewegen, in denen ein traditioneller Bergsteigeralgorithmus stecken bleiben könnte. Häufig verwendete Crossover-Operatoren können keine einheitliche Population verändern. Mutation allein kann die Ergodizität des gesamten genetischen Algorithmusprozesses (als Markov-Kette betrachtet) gewährleisten.
Beispiele für Probleme, die durch genetische Algorithmen gelöst werden, sind: Spiegel, die so konstruiert sind, dass sie das Sonnenlicht zu einem Sonnenkollektor leiten, Antennen, die so konstruiert sind, dass sie Funksignale im Weltraum empfangen, Laufmethoden für Computerfiguren, optimales Design von aerodynamischen Körpern in komplexen Strömungsfeldern
In seinem Algorithm Design Manual rät Skiena von genetischen Algorithmen für jede Aufgabe ab: "Es ist ziemlich unnatürlich, Anwendungen im Hinblick auf genetische Operatoren wie Mutation und Crossover auf Bit-Strings zu modellieren. Die Pseudobiologie fügt eine weitere Ebene der Komplexität zwischen Ihnen und Ihrem Problem hinzu. Zweitens benötigen genetische Algorithmen bei nicht-trivialen Problemen sehr viel Zeit. [...] Die Analogie zur Evolution - wo bedeutende Fortschritte Millionen von Jahren erfordern - kann durchaus angemessen sein. Ich bin noch nie auf ein Problem gestoßen, bei dem mir genetische Algorithmen der richtige Weg schienen, es zu lösen. Außerdem habe ich noch nie Rechenergebnisse gesehen, bei denen genetische Algorithmen verwendet wurden, die mich positiv beeindruckt haben. Halten Sie sich an simuliertes Glühen für Ihre heuristischen Such-Voodoo-Bedürfnisse".
Brettspiele
Brettspiele sind ein sehr relevanter Teil des Bereichs der genetischen Algorithmen in der Anwendung auf spieltheoretische Probleme. Ein großer Teil der frühen Arbeiten über Computerintelligenz und Spiele richtete sich auf klassische Brettspiele, wie z.B. Tic-Tac-Toe,[3] Schach und Dame. [4] Brettspiele können heute in den meisten Fällen von einem Computer auf einem höheren Niveau gespielt werden als die besten Menschen, selbst mit blinden, erschöpfenden Suchtechniken. Go ist eine bekannte Ausnahme von dieser Tendenz und hat bisher Maschinenangriffen widerstanden. Die besten Go-Computerspieler spielen jetzt auf dem Niveau eines guten Neulings. [5][6] Die Go-Strategie soll sich stark auf die Mustererkennung stützen und nicht nur auf die logische Analyse wie beim Schach und anderen eher Figuren-unabhängigen Partien. Der enorme effektive Verzweigungsfaktor, der erforderlich ist, um qualitativ hochwertige Lösungen zu finden, schränkt die Vorausschau, die innerhalb einer Zugfolge-Suche verwendet werden kann, stark ein.
Computerspiele
Der genetische Algorithmus kann in Computerspielen verwendet werden, um künstliche Intelligenz zu schaffen (der Computer spielt gegen Sie). Dies ermöglicht ein realistischeres Spielerlebnis; wenn ein menschlicher Spieler eine Abfolge von Schritten finden kann, die auch bei der Wiederholung in verschiedenen Spielen immer zum Erfolg führen, kann es keine Herausforderung mehr geben. Umgekehrt, wenn eine Lerntechnik wie ein genetischer Algorithmus für einen Strategen die Wiederholung früherer Fehler vermeiden kann, wird das Spiel spielbarer.
Genetische Algorithmen erfordern die folgenden Teile:
- Eine Methode zur Darstellung der Herausforderung im Hinblick auf die Lösung (z.B. die Führung von Soldaten bei einem Angriff in einem Strategiespiel)
- Eine Fitness- oder Bewertungsfunktion, um die Qualität einer Instanz zu bestimmen (z.B. eine Messung des Schadens, der einem Gegner bei einem solchen Angriff zugefügt wurde).
Die Fitnessfunktion akzeptiert eine mutierte Instanziierung einer Entität und misst ihre Qualität. Diese Funktion wird an die Problemdomäne angepasst. In vielen Fällen, insbesondere bei der Code-Optimierung, kann die Fitnessfunktion einfach eine System-Timing-Funktion sein. Sobald eine genetische Repräsentations- und Fitnessfunktion definiert ist, instanziiert ein genetischer Algorithmus erste Kandidaten wie zuvor beschrieben und verbessert sie dann durch wiederholte Anwendung von Mutations-, Kreuzungs-, Inversions- und Selektionsoperatoren (wie entsprechend der Problemdomäne definiert).