Modius - Techblog

  • Ansible
  • Docker
  • DevOps
  • Gastautor werden
  • Newsletter abonnieren
  • Über Mich
  • Kontakt

Grundlagen Genetische Algorithmen

Veröffentlicht am 16. Oktober 2019 von Christian Piazzi Hinterlasse ein Kommentar , Aktualisiert am 7. Dezember 2019
Geschätzte Lesezeit: 2 Minuten

Genetische Algorithmen - Titlebild

Durch eine Projekt in meinem Fernstudium habe ich mich sehr intensive mit dem Thema Genetische Algorithmen befasst. Meine Erkenntnisse will ich nun unter anderem in ein paar Blogartikeln festhalten.

Inhaltsverzeichnis

Was sind Genetische Algorithmen

Genetische Algorithmen werden generell dem Bereich der Evolutionäre Algorithmen zugeordnet. Dabei handelt es sich um Optimierungsverfahren die nach dem gleichen System funktionieren wie die Evolution in der Biologie.

Der Bereich der Evolutionären Algorithmen lässt sich grundsätzlich in vier verschiedene Teilbereiche unterteilen:

  • Genetischer Algorithmus
  • Genetische Programmierung
  • Evolutionäre Strategie
  • Evolutionäre Programmierung

Genetische Algorithmen wurden erstmals in den frühen 1960er Jahren von John Holland und seinen Kollegen an der University of Michigan eingeführt.

Motivation für Genetische Algorithmen

Im wesentlichen lassen sich drei Gründe für die Verwendung von Genetischen Algorithmen finden:

  • Lösung schwieriger Probleme (NP-Schwer)
  • Versagen von gradientenbasierten Verfahren
  • Schnell eine gute Lösung finden

Grundbegriffe aus der Genetik

Da Genetische Algorithmen an der Natur orientiert sind, ist es nicht weiter verwunderlich das in diesem Zusammenhang gewisse Wörter aus dem Bereich der Genetic stammen.

  • Individuen / Chromosom
  • Gen
  • Allel
  • Genotyp
  • Phänotyp
  • Population / Bevölkerung

Diese Wörter will ich hier kurz etwas erklären.

Individuen / Chromosom:
Ein Individuum wird in der Biologie als ein lebender Organismus beschrieben, dessen Erbinformation in einem Satz von Chromosomen gespeichert ist.Individuum und Chromosom werden im Zusammenhang mit genetischen Algorithmen gleichgesetzt.

Gen:
Als Gen wird eine Stelle oder Sequenz eines Chromosoms bezeichnet.

Allel:
Unter Allele versteht man die mögliche Ausprägung eines Gens, dass sich innerhalb eines Chromosoms an einer bestimmten Stelle befindet.

Genotyp:
Der Genotyp ist der kodierte Vektor der Entscheidungsvariablen.

Phänotyp:
Der Phänotyp hingegen ist der dekodierte Vektor der Entscheidungsvariablen.

Population / Bevölkerung:
Eine Reihe von strukturell ähnlichen Individuen einer bestimmten Gattung wird als Population bezeichnet. Wenn neue Lebewesen dieser Gattung geboren werden oder andere sterben werden, ändern sich zwangsläufig auch die Größenverhältnisse der Bevölkerung. Betrachtet man die Populationen einer Gattung über mehrere Zeiträume hinweg, spricht man von Generationen.

Struktur von genetischen Algorithmen

Wie ein genetischer Algorithmus funktioniert, kann man dem folgenden Workflow Diagramm entnehmen.

Der Ablauf des Algorithmus lässt sich in die folgenden acht Punkte unterteilen.

  1. Das zu optimierende Problem ist kodiert, d.h. es wird auf ein binär codiertes Chromosom geschrieben.
  2. Eine Population von Individuen wird erzeugt und zufällig initialisiert. Man spricht hier von der Ausgangspopulation oder Generation 0.
  3. Jedes Individuum wird mit einer Fitnessfunktion bewertet, die jedem einzelnen Chromosom eine reelle Zahl zuordnet.
  4. Mittels eines Selektionsverfahren werden zwei Elternteile ausgewählt.
  5. Aus der genetischen Information der Eltern werden die Nachkommen mit Hilfe eines Kreuzungsverfahrens erzeugt.
  6. Die Allele der Nachkommen können mutieren, d.h. ihre Werte werden umgekehrt.
  7. Die neue Generation wird mit den entstandenen Nachkommen ergänzt. Dafür wird ein Ersetzungsverfahren verwendet um die Maximalgröße der Generation nicht zu überschreiten.
  8. Ab Schritt 3 wiederholen bis ein Abbruchkriterium erfüllt ist.

Wie geht es weiter

Ich habe mir genetische Algorithmen im Kontext eines Projektes für die Spieleentwicklung angeschaut. Dabei habe einige der Verfahren in C# implementiert und eine Sammlung davon auf GitHub gestellt. Dazu ist geplant, noch Artikel zu den folgenden Themen auf diesem Blog zu veröffentlichen:

  • Selektionsverfahren
  • Rekombinationsverfahren
  • Ersetzungsverfahren
  • Beispielimplementierung im Kontext der Computerspieleentwicklung
  • Wofür können genetische Algorithmen im Kontext der Computerspieleenwicklung verwendet werden

Kategorie: Data Science, Programmierung Tags: evolutionäre Algorithmen, Genetische Algorithmen, machine learning, maschinelles lernen, Programmierung

Über Christian Piazzi

Ich blogge hier über alles, was mir so in meinem ITler Altag über den Weg läuft =)
Man findet mich privat bei Google+ und Twitter

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Kategorien

  • Linux
  • Internet, Bloggen & Co
  • Programmierung
  • Sicherheit
  • Netzwerk & Co
  • Mikrokontroller
  • Windows

Neueste Kommentare

  • Prometheus Installation unter Ubuntu - Modius - Techblog bei Prometheus Installation unter CentOS
  • Rainer bei Docker Container – anzeigen, starten, stoppen und löschen
  • Rainer Wohlfarth bei Docker Container – anzeigen, starten, stoppen und löschen
  • Rainer Wohlfarth bei Docker Container – anzeigen, starten, stoppen und löschen
  • Rainer Wohlfarth bei Docker Container – anzeigen, starten, stoppen und löschen

Werbung

Archive

Kontakt, Datenschutz und Impressum

  • Kontakt
  • Datenschutz
  • Impressum

Schlagwörter

Anleitung Ansible Apache Apple App Store Automatisierung Blogparade C++ Centos centos 7 CentOS7 Container Datenbank DevOps Docker Dr. Racket Dr. Scheme funktional Gastartikel Google HowTo httpd Icinga2 Icinga 2 Installation itsm Linux Minecraft Monitoring mooc MySQL owncloud PHP Plugin Programmierung python Raspberry Pi Schritt für Schritt Server Sicherheit Tutorial Ubuntu Update Windows Wordpress

Copyright © 2025 · Outreach Pro on Genesis Framework · WordPress · Anmelden