[PYTHON] Über die zirkuläre Überkreuzung genetischer Algorithmen

Einführung

Dieser Artikel wurde als eigenes Memorandum verfasst. Bitte haben Sie Verständnis dafür, ob er schwer zu verstehen ist.

Artikelinhalt

Unter den Überkreuzungen genetischer Algorithmen werden wir uns auf kreisförmige Überkreuzungen konzentrieren.

Mechanismus der Zirkulationskreuzung

Circular Crossover ist ein Crossover-Verfahren, das für die sequentielle Codierung verwendet wird. Ich werde es Schritt für Schritt erklären. STEP0 Geben Sie zunächst die Sequenz der Gene von Elternteil 1 und Elternteil 2 wie folgt an.

Elternteil 1 = [3, 7, 2, 5, 6, 1, 4] Elternteil 2 = [1, 7, 3, 6, 2, 4, 5] STEP1 Entscheide dich zufällig für eine Reihe von Zahlen. Diesmal,

Elternteil 1 = [3, 7, ** 2 **, 5, 6, 1, 4] Elternteil 2 = [1, 7, ** 3 **, 6, 2, 4, 5]

Ich habe es gemacht. Kopieren Sie das Gen auf die Nachkommen, ohne diese Position zu ändern.

Kind 1 = [#, #, 2, #, #, #, #] Kind 2 = [#, #, 3, #, #, #, #]

"#" Ist ein Ort, an dem die Nummern noch nicht gefüllt sind. STEP2 Übertragen Sie als Nächstes die gepaarten Nummern des zufällig bestimmten Nummernpaars auf das Kind. Es ist 3, wenn es von Kind 1 aus gesehen wird, und 2, wenn es von Kind 2 aus gesehen wird. Kopieren Sie diese Nummer an denselben Speicherort wie das übergeordnete Element. Die Positionen der Elternnummern sind wie folgt.

Elternteil 1 = [** 3 **, 7, 2, 5, 5, 6, 1, 4] Elternteil 2 = [1, 7, 3, 6, ** 2 **, 4, 5]

Wenn Sie es bewegen, ohne diese Position zu ändern

Kind 1 = [** 3 **, #, 2, #, #, #, #] Kind 2 = [#, #, 3, #, ** 2 **, #, #]

Es wird so kopiert. STEP3 Dies ist der letzte Schritt. Schreiben Sie zunächst die Liste der Kinder wie folgt um, um das Nachdenken zu erleichtern.

Kind 1 = [3, # (7), 2, # (5), # (6), # (1), # (4)] Kind 2 = [# (1), # (7), 3, # (6), 2, # (4), # (5)]

Die Zahlen in Klammern sind die Zahlen, die der Elternteil an derselben Position hat. Dann wird diese Nummer zwischen den Kindern in der Reihenfolge von links ausgetauscht. Erstens, wenn Sie nur das linke Ende ersetzen,

Kind 1 = [3, ** # (1) , 2, # (5), # (6), # (1), # (4)] Kind 2 = [ # (7) **, # (7), 3, # (6), 2, # (4), # (5)]

Es sieht aus wie. Wenn Sie dies bis zum rechten Ende wiederholen und "#"

Kind 1 = [3, 1, 2, 7, 6, 4, 5] Kind 2 = [7, 5, 3, 6, 2, 1, 4, 4]

Das Gen wurde wie folgt kopiert. Die getauschten Zahlenpaare sind "5⇔7", "6⇔6", "1⇔4" und "4⇔5" als "Kind 1 Nummer ⇔ Kind 2 Nummer". Dies ist abgeschlossen.

Recommended Posts

Über die zirkuläre Überkreuzung genetischer Algorithmen
Über alles von numpy
Über die Zuweisung von numpy.ndarray
Über Variable von Chainer
Suche nach stabilen Strukturen von Metallnanoclustern mithilfe genetischer Algorithmen
Über max_iter von LogisticRegression () von scikit-learn
Über die japanische Unterstützung von Cometchat
Über verschiedene Codierungen von Python 3
Über alle von numpy (2.)
Über die Kostenberechnung von MeCab
Über die Komponenten von Luigi
Über die HOG-Ausgabe von Scikit-Image
Über die Funktionen von Python
Über die Datenverwaltung von Amboss-App-Server