[PYTHON] À propos du croisement circulaire d'algorithmes génétiques

introduction

Cet article est rédigé comme un mémorandum de ma part, alors comprenez s'il est difficile à comprendre.

Contenu de l'article

Parmi les croisements d'algorithmes génétiques, nous nous concentrerons sur les croisements circulaires.

Mécanisme de franchissement de la circulation

Le croisement circulaire est une méthode de croisement utilisée pour le codage séquentiel. Je vais l'expliquer étape par étape. STEP0 Tout d'abord, donnez la séquence des gènes du parent 1 et du parent 2 comme suit.

Parent 1 = [3, 7, 2, 5, 6, 1, 4] Parent 2 = [1, 7, 3, 6, 2, 4, 5] STEP1 Décidez au hasard d'un ensemble de nombres. Cette fois,

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

Je l'ai fait. Copiez le gène sur la progéniture sans changer cette position.

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

"#" Est un endroit où les nombres ne sont pas encore remplis. STEP2 Ensuite, transférez les numéros appariés de la paire de nombres déterminée au hasard à l'enfant. Il est 3 lorsqu'il est vu de l'enfant 1 et 2 lorsqu'il est vu de l'enfant 2. Copiez ce numéro au même endroit que le parent. Les positions des numéros parents sont les suivantes.

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

Si vous le déplacez sans changer cette position

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

Il sera copié comme ça. STEP3 C'est la dernière étape. Tout d'abord, réécrivez la liste des enfants comme suit pour faciliter la réflexion.

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

Les nombres entre parenthèses sont les nombres que le parent a à la même position. Ensuite, ce numéro est échangé entre les enfants dans l'ordre à partir de la gauche. Premièrement, si vous ne remplacez que l'extrémité gauche,

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

On dirait. Si vous répétez ceci jusqu'à l'extrémité droite et prenez "#"

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

Le gène a été copié comme suit. Les paires de nombres échangés sont «5⇔7», «6⇔6», «1⇔4» et «4⇔5» comme «numéro enfant 1 ⇔ numéro enfant 2». C'est tout ce qu'on peut en dire.

Recommended Posts

À propos du croisement circulaire d'algorithmes génétiques
À propos de tout numpy
À propos de l'attribution de numpy.ndarray
À propos de MultiIndex of Pandas
À propos de la variable du chainer
Recherche de structures stables de nanoclusters métalliques à l'aide d'algorithmes génétiques
À propos de max_iter de LogisticRegression () de scikit-learn
À propos du support japonais de cometchat
À propos de divers encodages de Python 3
À propos de tout numpy (2e)
À propos du calcul des coûts de MeCab
À propos des composants de Luigi
À propos de la sortie HOG de Scikit-Image
À propos des fonctionnalités de Python
À propos de la gestion des données d'Anvil-App-Server