Genetischer Algorithmus (Genetischer Algorithmus)

1. Einleitung Der

genetische Algorithmus (Genetischer Algorithmus) folgt den Prinzipien des "Überlebens der Stärksten" und des "Überlebens der Stärksten". Es handelt sich um eine Art randomisierten Suchalgorithmus, der sich auf die natürliche Selektion und die natürlichen genetischen Mechanismen der biologischen Welt stützt.

Der genetische Algorithmus simuliert den Evolutionsprozess einer künstlichen Population. Durch die Mechanismen Selektion, Crossover und Mutation wird eine Reihe von Kandidatenindividuen in jeder Iteration beibehalten, und dieser Prozess wird wiederholt. Nachdem sich die Population über mehrere Generationen hinweg entwickelt hat Idealerweise erreicht seine Fitness den Zustand *** ungefähr optimal *** .

Seitdem der genetische Algorithmus vorgeschlagen wurde, ist er weit verbreitet, insbesondere in den Bereichen Funktionsoptimierung, Produktionsplanung, Mustererkennung, neuronales Netzwerk, adaptive Steuerung usw. Der genetische Algorithmus hat eine sehr wichtige Rolle gespielt und die Lösung einiger Probleme verbessert. Wirksamkeit.


2. Zusammensetzung des genetischen Algorithmus

  • Code -> Chromosom erstellen
  • Individuum -> Bevölkerung
  • Fitnessfunktion
  • Genetischer Operator
    • wählen
    • Kreuz
    • Mutationen
  • Betriebsparameter
    • Ob Sie sich für eine Eliteoperation entscheiden
    • Einwohnerzahl
    • Chromosomenlänge
    • Die maximale Anzahl von Iterationen
    • Übergangswahrscheinlichkeit
    • Mutationswahrscheinlichkeit


2.1 Kodierung und Dekodierung

Der erste Schritt bei der Implementierung genetischer Algorithmen besteht darin, die Kodierungs- und Dekodierungsmethoden zur Lösung des Problems zu klären.

Für Funktionsoptimierungsprobleme gibt es im Allgemeinen zwei Codierungsverfahren mit jeweils Vor- und Nachteilen

  • Kodierung reeller Zahlen: Verwenden Sie reelle Zahlen direkt, um Gene zu exprimieren. Dies ist leicht zu verstehen und erfordert keinen Dekodierungsprozess. Es ist jedoch leicht, vorzeitig zu konvergieren und in das lokale Optimum zu fallen
  • Binäre Codierung: Hohe Stabilität, große Populationsdiversität, erfordert jedoch viel Speicherplatz, muss decodiert werden und ist schwer zu verstehen


Um das Problem des Funktionsmaximums zu lösen, habe ich die Binärcodierung gewählt.
Nehmen wir als Beispiel unsere Zielfunktion f (x) = x + 10sin (5x) + 7cos (4x), x∈ [0,9] .

Wenn die Genauigkeit der Lösung nach dem Dezimalpunkt auf 4 Stellen eingestellt ist, kann der Lösungsraum von x in (9-0) × (1e + 4) = 90000 gleiche Teile geteilt werden.

2 ^ 16 <90000 <2 ^ 17, 17-Bit-Binärzahlen sind erforderlich, um diese Lösungen darzustellen. Mit anderen Worten, ein Lösungscode ist eine 17-Bit-Binärzeichenfolge.

Zu Beginn werden diese binären Zeichenfolgen zufällig generiert.

Eine solche binäre Zeichenfolge stellt eine Chromosomenzeichenfolge dar, wobei die Länge der Chromosomenzeichenfolge 17 beträgt.

Wie kann ein solches Chromosom auf einen Wert im Intervall [0,9] zurückgesetzt (dekodiert) werden?

Für dieses Problem können wir die folgende Formel zum Dekodieren verwenden:

x = 0 + decimal(chromosome)×(9-0)/(2^17-1)

decimal (): Konvertiert eine Binärzahl in eine Dezimalzahl.

Allgemeine Dekodierungsformel:

f(x), x∈[lower_bound, upper_bound]
x = lower_bound + decimal(chromosome)×(upper_bound-lower_bound)/(2^chromosome_size-1)

Untergrenze: Die Untergrenze der Funktionsdomäne
Obergrenze: Die Obergrenze der Funktionsdomäne
Chromosomengröße: Die Länge des Chromosoms

Durch die obige Formel können wir die binäre Chromosomenzeichenfolge im Intervall [0,9] erfolgreich in eine Dezimalzahlzahllösung dekodieren.

2.2 Individuum und Population

"Chromosomen" drücken ein bestimmtes Merkmal aus, und der Träger dieses Merkmals wird "Individuum" genannt.

Für das Problem der Lösung des Maximalwerts der in diesem Experiment zu lösenden unären Funktion kann das Individuum durch das im vorherigen Abschnitt konstruierte Chromosom dargestellt werden, und es gibt ein Chromosom in einem Individuum.

Viele dieser Individuen bilden eine Population, dh eine eindimensionale Punktmenge (Liniensegment [0,9] auf der x-Achse).

2.3 Fitnessfunktion Beim

genetischen Algorithmus wird die Qualität eines Individuums (Lösung) anhand des Werts der Fitnessfunktion bewertet. Bei diesem Problem ist f (x) die Fitnessfunktion.

Je größer der Wert der Fitnessfunktion ist, desto höher ist die Qualität der Lösung.

Die Fitnessfunktion ist die treibende Kraft für die Entwicklung genetischer Algorithmen und das einzige Kriterium für die natürliche Selektion. Ihr Design sollte mit den Anforderungen des Problems selbst kombiniert werden.

2.4 Genetische Operatoren

Wir hoffen auf eine solche Population. Die Funktionswerte, die den darin enthaltenen Individuen entsprechen, liegen sehr nahe am Maximalwert von f (x) auf [0,9], aber diese Population ist zu Beginn möglicherweise nicht so gut. Weil die einzelnen Chromosomenketten zufällig erzeugt werden.

Wie kann man die Bevölkerung ausgezeichnet machen?

Kontinuierliche Entwicklung.

In jeder Entwicklung versuchen wir, die hervorragenden Individuen in der Bevölkerung so weit wie möglich zu halten, die unerwünschten Individuen auszusortieren und eine chromosomale Überkreuzung zwischen den hervorragenden Individuen durchzuführen. Einige Individuen können auch mutieren.

Jedes Mal, wenn sich eine Population entwickelt, wird ein optimales Individuum erzeugt. Das optimale Individuum aller Generationen der Bevölkerung kann der Punkt in der Domäne sein, der dem Maximalwert der Funktion f (x) entspricht.

Wenn sich die Bevölkerung endlos weiterentwickelt, kann immer die beste Lösung gefunden werden. Tatsächlich haben wir jedoch nur eine begrenzte Zeit und stoppen normalerweise die Evolution, wenn wir eine Lösung erhalten, die gut aussieht.

Wie kann man einer bestimmten Bevölkerung die Fähigkeit geben, sich zu entwickeln ?

  • Erste Wahl (Auswahl)
    • Die Auswahloperation besteht darin, die meisten Paare überlegener Individuen aus der Population der vorherigen Generation auszuwählen. Ein Paar überlegener Individuen wird als Elternpaar bezeichnet, und Eltern dürfen ihre Gene an die nächste Generation weitergeben, bis die Anzahl der Individuen in der nächsten Generation erreicht ist Obergrenze der Bevölkerung
    • Ordnen Sie die Personen in der Bevölkerung vor der Auswahl entsprechend ihrer Fitness von klein bis groß an
    • Bei Verwendung der Roulette-Auswahlmethode (natürlich gibt es viele andere Auswahlmethoden) ist die Wahrscheinlichkeit, dass jede Person ausgewählt wird, proportional zum Wert ihrer Fitnessfunktion
    • Die Roulette-Auswahlmethode ist zufällig und bessere Personen können bei der Auswahl verloren gehen, sodass der Elite-Mechanismus verwendet werden kann, um die besten Personen der vorherigen Generation direkt auszuwählen
  • Gefolgt CROSS (Crossover)
    • Zwei verschiedene zu kreuzende Chromosomen (Eltern) tauschen einen bestimmten Teil ihrer Gene entsprechend der cross_rate aus
    • Es wird eine Einzelpunkt-Überkreuzungsmethode verwendet, es können auch andere Überkreuzungsmethoden verwendet werden
  • Schließlich Variation (Mutation)
    • Chromosomen werden entsprechend der Mutationswahrscheinlichkeit mutiert (mutate_rate)
    • Es wird eine Einzelpunktmutationsmethode verwendet, es können auch andere Mutationsmethoden verwendet werden


Im Allgemeinen ist die Kreuzungsrate (cross_rate) relativ groß und die Mutationsrate (mutate_rate) ist extrem niedrig. Für Probleme wie das Lösen des Maximalwerts einer Funktion setze ich die Kreuzungsrate (cross_rate) auf 0,6 und die Mutationsrate (mutate_rate) auf 0,01.

Da der genetische Algorithmus der Ansicht ist, dass die Überkreuzung zweier ausgezeichneter Elternchromosomen mit größerer Wahrscheinlichkeit hervorragende Nachkommen hervorbringt und die Möglichkeit, bei Mutation hervorragende Nachkommen hervorzubringen, äußerst gering ist, besteht auch die Möglichkeit, sehr gute Nachkommen gleichzeitig zu mutieren. Dies steht auch im Einklang mit den Merkmalen der biologischen Evolution in der Natur.


3. Genetischer Algorithmusprozess Ich habe
ein Testprogramm unter matlab geschrieben.
Fügen Sie den Code https://github.com/yanshengjia/artificial-intelligence/tree/master/genetic-algorithm-for-functional-maximum-problem

Testergebnisse hinzu

  • Die beste Person: 00011111011111011
  • Optimale Fitness: 24.8554
  • Das optimale Individuum entspricht dem Wert der unabhängigen Variablen: 7,8569
  • Die Anzahl der Iterationen, die erforderlich sind, um das optimale Ergebnis zu erzielen: Nach vielen Experimenten wird festgestellt, dass die Anzahl der Iterationen, um Konvergenz zu erreichen, zwischen 20 und mehr als 100 variiert


Die Beziehung zwischen der Anzahl der Iterationen und der durchschnittlichen Fitness (horizontale Achse: Iterationszahl, vertikale Achse: durchschnittliche Fitness).


Es gibt vorgefertigte Tools, die direkt genetische Algorithmen verwenden können, wie z. B. Matlab.
Abschließend werde ich die Verwendung genetischer Algorithmen in Matlab vorstellen.

Verwenden von GA in MATLAB

1. Öffnen Sie das Optimierungstool, wählen Sie in Solver einen genetischen Algorithmus aus, geben Sie in der Fitnessfunktion @target ein.

2. Erstellen Sie ein neues target.m in Ihrem Projektordner und beachten Sie, dass der aktuelle Pfad von MATLAB Ihnen gehört Der Pfad des Projektordners

3. Notieren Sie sich beispielsweise die Fitnessfunktion in target.m

function [ y ] = target(x)
y = -x-10*sin(5*x)-7*cos(4*x);
end

* GA in MATLAB löst nur den (ungefähren) Mindestwert der Funktion, daher muss die Zielfunktion zuerst umgekehrt werden.

4. Öffnen Sie das Optimierungstool, geben Sie die Anzahl der Variablen und den Wert der unabhängigen Variablendomäne (Bounds) ein, klicken Sie auf Start, und der genetische Algorithmus wird ausgeführt. Schließlich können Sie den (ungefähren) Mindestwert der Funktion im Ausgabefeld sowie die Anzahl der Iterationen bis zu diesem Grad (aktuelle Iteration) und den Wert der endgültigen unabhängigen Variablen (Endpunkt) sehen.

5. Im Optimization-ga-Tool gibt es viele Optionen . Über diese Optionen können Sie die folgenden Eigenschaften festlegen

  • Bevölkerung (Bevölkerung)
  • Auswahl
  • Frequenzweiche (Frequenzweiche)
  • Mutation
  • Stoppkriterien
  • Plotfunktionen

Ich denke du magst

Origin blog.csdn.net/qq_41371349/article/details/105157871
Empfohlen
Rangfolge