Created
November 17, 2016 13:15
-
-
Save paulsonnentag/51b64bc4871a5316e38f3849141339dd to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Der Genetische Algorithmus besteht aus 5 Schritten | |
Berechnung der Fitness: für jedes Individum wird der Fitnesswert berechnet, die Fitnessfunktion bewertet, wie gut eine Individum das Optimierungsziel erfüllt | |
Selektion: Es werden zufällig 2 Individuen zum kreuzen ausgewählt, wobei die Wahrscheinlichkeit ausgewählt zu werden umso höher is je besser der Fitnesswert eines Individums ist | |
Crossover: Zwei Individuen (A, B) werden mit einander kombiniert um 2 neue Individuen zu erzeugen. Dabei wird ein zufälliger Kreuzungspunkt im Zustandsvektor gewählt an dem dieser gesplitet wird. Es wird dann die erste Hälfte des Zustandvektors von Individum A mit der zweiten Hälfte des Zustandvektors von Individum B kombiniert. Analog funktioniert es mit dem 2. Nachkommen Individum. | |
Mutation: Mit einer relative kleinen Wahrscheinlichkeit werden 2 Stellen im Zustandsvektor vertauscht | |
Austausch: Die 2 Individuen mit dem schlechtesten Fitnesswert werden durch die 2 besten Induvidien, welche neu generiert wurden, ersetzt. Voraussetzungen: | |
Der Zustandsvektor der Induvidien unterscheidet sich von schon existierenden Individuen | |
Die neuen Induvidien haben einen besseren Fitnesswert als die 2 schlechtesten | |
Der Zustand ist ein Vektor mit 42 Stellen. Jede Stelle kann entweder 0 oder 1 enthalten. 1 Bedeutet das Merkmal wird in die Bewertung mit einbezogen. 0 Bedeutet das Merkmal wird nicht mit einbezogen. | |
Eine Mögliche Erweiterung währe hier statt einfachem ein oder aus auch Zwischenwerte zuzulassen, somit könnten die Mermale unterschiedlich stark gewichtet werden. | |
Fitnessfunktion: | |
Es werden die selektierten Merkmale für den 1. Abschnitt und den 2. Abschnitt des Musikstücks separat berechnet. Davon berechnet man die Ähnlichkeit (z.B. Euklidische Distanz). Das Inverse davon ist dann der Fitnesswert | |
Kreuzung | |
Es wird ein zufälliger Kreuzungspunkt ausgewählt und die Vektoren an dieser Stelle gesplittet und neu kombiniert | |
Bsp: | |
a = [x1, x2, x3, x4, x5, .... x42] | |
b = [y1, y2, y3, y4, y5, .... y42] | |
^ | |
Kreuzungspunkt | |
a' = [x1, x2, x3, y4, y5, .... y42] | |
b' = [y1, y2, y3, x4, x5, .....x42] | |
Mutation | |
Zwei Stellen im Zustandsvektor werden vertauscht |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment