SlideShare a Scribd company logo
Copyright ©2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 
遺伝的アルゴリズム () を始めよう 
2014年11月17日 
先端IT活用推進コンソーシアム 
クラウド・テクノロジー活用部会 
勉強会資料 
岡村和英(株式会社テクリエ)
Introduction 
2
3 
Genetic Algorithms Programing Library for JavaScript 
https://github.com/kzokm/ga.js 
Samples of Genetic Algorithm 
http://ga-samples.herokuapp.com/
Today’s Topics 
4
5 
What’s GA 
Meritsof GA 
GeneticGlossary 
Genetic Algorithms 
Chromosome Encodings 
Encoding Examples 
Genetic OperationsSelection, Crossover, Mutation 
New Generation AlternationModel 
Known Issues 
Summary
What’s GA 
6
7 
生物進化における遺伝と 
適者生存による自然淘汰の仕組みを ソフトウェア的に模すことで 
複雑な問題に対する最適解を 
探索する手法
8 
ある命題に対する解の候補を 遺伝子(gene)とその集合体である 染色体(chromosome)で表現した 個体(individual)を複数用意し、 適応度(fitness)の高い個体を優先して 交叉(crossover)、突然変異(mutation) などの操作を繰り返しながら 最適解の探索をおこなう
9 
N700系新幹線 
フロントノーズ(エアロ/ダブル ウィング)の空力設計に際し、 GAを用いて約5000パターンのコン ピュータシミュレーションを行った 結果からデザインを決定した。
10 
ST5計画 
NASAのニュー・ミレニアム計画の一 環として行われた技術試験計画Space Technology 5 に用いられた3機の人工 衛星に搭載されたアンテナの形状は、 GAを用いて設計された。
Meritsof GA 
11
12 
評価関数の可微分性や単峰性な どの知識がない場合であっても 適用可能。 
GAの特徴
13 
必要とされる条件は評価関数の 全順序性と、探索空間が位相 (topology)を持っていること。 
GAの特徴
14 
遺伝子の表現の仕方によって、 組合せ最適化問題やNP困難な 問題などのさまざまな問題に対 する適用が可能。 
GAの特徴
GeneticGlossary 
15
16 
遺伝子(gene) 
個体の形質を表すための 基本となる構成要素
17 
染色体(chromosome) 
複数の遺伝子の集まり
18 
個体(individual) 
1つまたは複数の染色体に よって表現される自律的な個 
命題に対する解の候補
19 
集団(population) 
様々な個体の集まり
20 
遺伝子座(locus) 
染色体上における各遺伝子の 位置
21 
対立遺伝子(allele) 
ある遺伝子座において遺伝子 がとりうる別の値
A 
G 
A 
T 
C 
G 
Y 
W 
Z 
X 
Z 
遺伝子型(因子型; genotype) 
遺伝子を用いた内部表現 
22
表現型(phenotype) 
遺伝子によって発現する 形質の外部表現 
23
符号化(encoding) 
表現型から遺伝子型への変換 
24
復号化(decoding) 
遺伝子型から表現型への変換 
25
GeneticAlgorithms 
26
27 
1.解を表現する符号化方法を決定する。
28 
1.解を表現する符号化方法を決定する。 
2.N個のランダムな個体を含む集団を作成 する。これを「現世代」と呼ぶ。
29 
1.解を表現する符号化方法を決定する。 
2.N個のランダムな個体を含む集団を作成する。これを「現世代」と呼ぶ。 
3.N個の個体を格納可能な集団を用意する。 これを「次世代」と呼ぶ。
30 
1.解を表現する符号化方法を決定する。 
2.N個のランダムな個体を含む集団を作成する。これを「現世代」と呼ぶ。 
3.N個の個体を格納可能な集団を用意する。これを「次世代」と呼ぶ。 
4.評価関数を用いて、現世代の各個体の 適応度をそれぞれ計算する。
31 
2.N個のランダムな個体を含む集団を作成する。これを「現世代」と呼ぶ。 
3.N個の個体を格納可能な集団を用意する。これを「次世代」と呼ぶ。 
4.評価関数を用いて、現世代の各個体の適応度をそれぞれ計算する。 
5.ある確率で次の3つの操作を行い、そ の結果を次世代に保存する。 
1) 現世代から2つの個体を選択する。 
2) 選択されれた個体を用いて交叉を行 い、子孫(offspring)を生成する。 
3) 交叉によって生成された子孫に対し て、突然変異を適用する。
32 
2.N個のランダムな個体を含む集団を作成する。これを「現世代」と呼ぶ。 
3.N個の個体を格納可能な集団を用意する。これを「次世代」と呼ぶ。 
4.評価関数を用いて、現世代の各個体の適応度をそれぞれ計算する。 
5.ある確率で次の3つの操作を行い、その結果を次世代に保存する。 
1) 現世代から2つの個体を選択する。 
2) 選択されれた個体を用いて交叉を行い、子孫(offspring)を生成する。 
3) 交叉によって生成された子孫に対して、突然変異を適用する。 
6.次世代の個体数がN個になるまで5 の操 作を繰り返す。
33 
4.評価関数を用いて、現世代の各個体の適応度をそれぞれ計算する。 
5.ある確率で次の3つの操作を行い、その結果を次世代に保存する。 
1) 現世代から2つの個体を選択する。 
2) 選択されれた個体を用いて交叉を行い、子孫(offspring)を生成する。 
3) 交叉によって生成された子孫に対して、突然変異を適用する。 
6.次世代の個体数がN個になるまで5の操作を繰り返す。 
7.次世代を現世代に移行し、命題が収束 するまで3~6の手順を繰り返す。この 結果を「最終世代」と呼ぶ。 命題の収束を判定する方法として・・・
34 
7.次世代を現世代に移行し、命題が収束するまで3~6の手順を繰り返す。 この結果を「最終世代」と呼ぶ。 命題の収束を判定する方法として、以下のよ うな場合が用いられる。 
•集団中の最大適応度が、ある閾値より大き くなった場合 
•集団全体の平均適応度が、ある閾値より大 きくなった場合 
•集団の適応度増加率が、ある閾値以下の世 代が一定期間続いた場合 
•世代交代の回数が規定の最大世代数に達し た場合
35 
7.次世代を現世代に移行し、命題が収束するまで3~6の手順を繰り返す。 この結果を「最終世代」と呼ぶ。 命題の収束を判定する方法として、以下のような場合が用いられる。 
・集団中の最大適応度が、ある閾値より大きくなった場合 
・集団全体の平均適応度が、ある閾値より大きくなった場合 
・集団の適応度増加率が、ある閾値以下の世代が一定期間続いた場合 
・世代交代の回数が規定の最大世代数に達した場合 
8.最終世代の中で最も適応度の高い個体 を「解」として出力する。
ChromosomeEncodings 
36
37 
解の特徴を 遺伝子として表現する
38 
バイナリエンコーディング (binary encoding) 順列エンコーディング (permutation encoding) 
実数値エンコーディング (real encoding) 
木構造エンコーディング (tree encoding)
39 
バイナリエンコーディング (binary encoding) 順列エンコーディング (permutation encoding) 
実数値エンコーディング (real encoding) 
木構造エンコーディング (tree encoding)
40 
バイナリエンコーディング (binary encoding) 
各遺伝子を0, 1のビットと して表現する符号化方法
41 
バイナリエンコーディング (binary encoding) 
染色体A1001011101101 
染色体B 1010011010111
42 
バイナリエンコーディング (binary encoding) 順列エンコーディング (permutation encoding) 
実数値エンコーディング (real encoding) 
木構造エンコーディング (tree encoding)
43 
順列エンコーディング (permutation encoding) 
各遺伝子を順序を示す数字 として表現する符号化方法
44 
順列エンコーディング (permutation encoding) 
染色体A2 7 6 4 1 8 3 5 9 
染色体B 4 6 1 9 5 7 3 8 2
45 
順列エンコーディング (permutation encoding) 
巡回セールスマン問題や仕事 の順序などの並べ替え問題の 表現に用いられる
46 
バイナリエンコーディング (binary encoding) 順列エンコーディング (permutation encoding) 
実数値エンコーディング (real encoding) 
木構造エンコーディング (tree encoding)
47 
実数値エンコーディング (real encoding) 
各遺伝子を数値(または文字) として表現する符号化方法
48 
実数値エンコーディング (real encoding) 
染色体A0.51 2.83 3.12 1.50 
染色体B AGTCATGCAGCATTA 
染色体C 前進前進右後退左
49 
実数値エンコーディング (real encoding) 
実数値データなど、バイナリ エンコーディングでは表現が 難しい場合に用いる
50 
バイナリエンコーディング (binary encoding) 順列エンコーディング (permutation encoding) 
実数値エンコーディング (real encoding) 
木構造エンコーディング (tree encoding)
51 
木構造エンコーディング (tree encoding) 
染色体を1本の紐(配列)で はなく、木構造データとして 表現する符号化方法
52 
木構造エンコーディング (tree encoding) 
+ 
α 
× 
β 
2 
染色体A 
α+(β×2) 
表現型
53 
木構造エンコーディング (tree encoding) 
遺伝的プログラミング(Genetic Programming; GP)や進化的プロ グラミング(Evolutionary Programming; EP)などの表現に 用いられる
EncodingExamples 
54
55 
ナップザック問題 (Knapsack Problem) 
容量Cのナップザックが1つと、各々の 価値がPi、容積がCiであるところのn個 の品物Eiが与えられたとき、Cを超えな い範囲でいくつかの品物をナップザック に詰め、入れた品物の価値の和を最大 化するにはどの品物を選べばよいか?
56 
ナップザック問題を バイナリエンコーディングで表現してみる
57 
n個の荷物→ 遺伝子長(L) = n 
i番目の荷物→ 遺伝子座(p) = i 
荷物Eiを入れる→ 遺伝子[i]= 1 
荷物Eiを入れない→ 遺伝子[i] = 0 
適応度→ 持っている荷物の総価値 
ナップザック問題
58 
荷物 
E1 
E2 
E3 
E4 
E5 
E6 
E7 
… 
En 
重さ(Ci) 
Kg 
0.9 
1.1 
0.7 
1.4 
0.5 
1.3 
1.1 
1.6 
価値(Pi) 
$ 
1.0 
1.3 
0.9 
1.5 
0.5 
1.1 
1.2 
1.4 
遺伝子表現 
[ 
1 
0 
0 
1 
0 
1 
0 
… 
0 
] 
重さ≦C 
Kg 
0.9 
+ 
1.4 
+ 
1.3 
+ 
… 
適応度 
1.0 
+ 
1.5 
+ 
1.1 
+ 
… 
ナップザック問題
59 
循環セールスマン問題 (TravellingSalesman Problem) 
n個の都市Ciと、それぞれの都市間の 距離Di,jが与えられているとき、最初の 都市を出発し、全ての都市を経由して、 同じ都市に戻ってくるルートのうち、最 短のルートを求めよ。
60 
循環セールスマン問題を 
順列エンコーディングで表現してみる
61 
n個の都市→ 遺伝子長(L) = n 
i番目に訪れる→ 遺伝子座(p) = i 
都市Cx→ 遺伝子[i]= x 
適応度→ 循環ルートの総距離 
循環セールスマン問題
62 
ルート 
1 
2 
3 
4 
5 
6 
7 
… 
n 
訪れる都市 
C5 
C8 
C2 
C7 
C9 
C1 
C3 
C4 
次の都市ま での距離 
D5,8 
D8,2 
D2,7 
D7,9 
D9,2 
D1,3 
D3,x 
C4,5 
遺伝子表現 
[ 
5 
8 
2 
7 
9 
1 
3 
… 
4 
] 
適応度 1D5,8+D8,2+D2,7+D7,9+D9,2+D1,3+D3,x+…+C4,5 
循環セールスマン問題
GeneticOperations 
63
64 
選択 (selection) 
交叉 (crossover) 
突然変異 (mutation) 
繁殖 (reproduction)
繁殖 (reproduction) 
65 
選択 (selection) 
交叉 (crossover) 
突然変異 (mutation)
66 
適応度に基づいて、個体を増やし たり減らしたりするための対象を 選び出す操作。 
生物の自然淘汰をモデル化したも の。 
選択(selection)
67 
ルーレット方式 (roulette wheel selection) 
ランキング方式 (ranking selection) 
トーナメント方式 (tournament selection) 
エリート主義 (elitism)
68 
ルーレット方式 (roulette wheel selection) 
ランキング方式 (ranking selection) 
トーナメント方式 (tournament selection) 
エリート主義 (elitism)
69 
集団をルーレット盤に見立て、ラ ンダムな選択を行う方式。 
各個体の適応度が、ルーレット盤 の面積と比例しており、適応度が 高い染色体ほど選ばれる確率が高 くなる。 
ルーレット方式 (roulette wheel selection)
70 
ルーレット方式 (roulette wheel selection) 
個体 
適応度 
A 
32 
B 
12 
C 
24 
D 
18 
E 
10
71 
푝푖= 푓푖 푛=1 푁푓푛 
푝푖:= ある個体が選択される確率 
푓푖:= 個体の適応度、푁:= 集団サイズ 
ルーレット方式 (roulette wheel selection)
72 
適応度が正であることが前提。 
個体間の適応度の差が大きい場合、 適応度の高い個体の選ばれる確率 が高くなりすぎ、局所的な最適解 への初期収束の原因となる。 
ルーレット方式 (roulette wheel selection)
73 
ルーレット方式 (roulette wheel selection) 
ランキング方式 (ranking selection) 
トーナメント方式 (tournament selection) 
エリート主義 (elitism)
74 
ルーレット方式の変形。 
適応度によって各個体のランク付 けを行い、「1位なら確率푝1、2位 なら確率푝2、・・・」と事前に決 められた確率を適用する方式。 
ランキング方式 (ranking selection)
75 
ランキング方式 (ranking selection) 
個体 
適応度 
A 
32 
B 
12 
C 
24 
D 
18 
E 
10 
順位 
選択確率 
1 
0.30 
2 
0.20 
3 
0.20 
4 
0.15 
5 
0.15
76 
個体間の適応度の差が選択確率に 影響されないが、適応度に差がな い個体であっても選択確率に大き な差が生じる可能性がある。 
ランク付けを行うためには世代毎 にソートを行うことが必要。 
ランキング方式 (ranking selection)
77 
ルーレット方式 (roulette wheel selection) 
ランキング方式 (ranking selection) 
トーナメント方式 (tournament selection) 
エリート主義 (elitism)
78 
予め決めた個体数(トーナメント サイズ)をランダムに抽出し、そ の中で最も適応度の高い個体を選 択する方式。 
トーナメント方式 (tournament selection)
79 
トーナメントサイズを変更するこ とで、選択圧をコントロールする ことが可能。 
トーナメントサイズを大きくする ことで選択圧を高めることができ るが、初期収束の原因となる。 
トーナメント方式 (tournament selection)
80 
ルーレット方式 (roulette wheel selection) 
ランキング方式 (ranking selection) 
トーナメント方式 (tournament selection) 
エリート主義 (elitism)
81 
予め決めた個数の、最も適応度の 高い個体をそのまま次世代にコ ピーする。 
エリート主義 (elitism)
82 
世代間で適応度の最大値が下がら ないことが保証される。 
エリートの遺伝子が集団の中で広 まりすぎて、解の多様性が失われ る。 
エリート主義 (elitism)
繁殖 (reproduction) 
83 
交叉 (crossover) 
選択 (selection) 
突然変異 (mutation)
84 
選ばれた2つの個体の遺伝子の一 部を入れ替える操作。 
生物の交配をモデル化したもの。 
交叉(crossover)
85 
各々の染色体において、交叉が発 生する確率。 
通常、80%~95%として設定する。 
交叉確率(Pc)
86 
基本的な交叉方式
87 
一点交叉 (single point crossover) 
二点交叉 (two-point crossover) 
多点交叉 (multi-point crossover) 
一様交叉 (uniformcrossover) 
基本的な交叉
88 
一点交叉 (single point crossover) 
二点交叉 (two-point crossover) 
多点交叉 (multi-point crossover) 
一様交叉 (uniformcrossover) 
基本的な交叉
89 
遺伝子が交叉する場所(交叉点; crossover point)をランダムに決定 し、その場所より後ろの遺伝子を 入れ替える。 
一点交叉 (single point crossover) 
基本的な交叉
90 
染色体1 
1001011101101 
染色体2 
1010011010111 
子孫1 
1001011010111 
子孫2 
1010011101101 
一点交叉 (single point crossover) 
基本の交叉
91 
効率が低いため、現在はあまり 用いられていない。 
一点交叉 (single point crossover) 
基本的な交叉
92 
一点交叉 (single point crossover) 
二点交叉 (two-point crossover) 
多点交叉 (multi-point crossover) 
一様交叉 (uniformcrossover) 
基本的な交叉
93 
2つの交叉点をランダムに決定し、 その間の遺伝子を入れ替える。 
二点交叉 (two-point crossover) 
基本的な交叉
94 
染色体1 
1001011101101 
染色体2 
1010011010111 
子孫1 
1001011011101 
子孫2 
1010011100111 
二点交叉 (two-point crossover) 
基本的な交叉
95 
一点交叉 (single point crossover) 
二点交叉 (two-point crossover) 
多点交叉 (multi-point crossover) 
一様交叉 (uniformcrossover) 
基本的な交叉
96 
3つ以上の交叉点をもつ方法。 
二点交叉や一様交叉より良い値が 得られることが殆どないため、あ まり用いられていない。 
多点交叉 (multi-point crossover) 
基本的な交叉
97 
一点交叉 (single point crossover) 
二点交叉 (two-point crossover) 
多点交叉 (multi-point crossover) 
一様交叉 (uniformcrossover) 
基本的な交叉
98 
各遺伝子のそれぞれを所定の確率 (通常は1/2)で入れ替える。 
一様交叉 (uniformcrossover) 
基本的な交叉
99 
染色体1 
1001011101101 
染色体2 
1010011010111 
子孫1 
1011011001101 
子孫2 
1000011110111 
一様交叉 (uniformcrossover) 
基本的な交叉
100 
2点交叉が得意とする問題を苦手 とし、逆の性質を示す。 
ヒッチハイキング問題への対策と して用いられる。 
一様交叉 (uniformcrossover) 
基本的な交叉
101 
順列エンコーディングに 
対応した交叉方式
102 
同じ遺伝子が 
重複しないこと 
順列の交叉
103 
循環交叉 (cycle crossover; CX) 
順序交叉 (order crossover; OX) 
一様順序交叉 (order-based crossover; OX2) 
一様位置交叉 (position-based crossover; POX) 
順列の交叉
104 
部分写像交叉 (partially mapped crossover; PMX) 
サブツアー交換交叉 
(subtourexchange crossover; SXX) 
辺組換え交叉 
(edge recombination crossover; ERX) 
枝組立て交叉 
(edge assembly crossover; EAX) 
順列の交叉
105 
循環交叉 (cycle crossover; CX) 
順序交叉 (order crossover; OX) 
一様順序交叉 (order-based crossover; OX2) 
一様位置交叉 (position-based crossover; POX) 
順列の交叉
106 
双方の親から重複しない組み合わ を選んで、遺伝子の一部ずつを受 け継ぐ。 
循環交叉 (cycle crossover; CX) 
順列の交叉
107 
染色体1 
1 2 3 4 5 6 7 8 9 
染色体2 
8 41 25 7 9 3 6 
サイクル# 
1 
2 
1 
2 
3 
4 
4 
1 
4 
子孫1 
143257 986 
子孫2 
8 21456739 
循環交叉 (cycle crossover; CX) 
順列の交叉
108 
循環交叉 (cycle crossover; CX) 
順序交叉 (order crossover; OX) 
一様順序交叉 (order-based crossover; OX2) 
一様位置交叉 (position-based crossover; POX) 
順列の交叉
109 
片方の親からは一部をそのまま受 け継ぎ、残りの部分についてはも う片方の親から相対的な順序を受 け継ぐ。 
順序交叉 (order crossover; OX) 
順列の交叉
110 
染色体1 
1 2 3 4 5 6 7 8 9 
染色体2 
8 4 2 75 1 9 3 6 
子孫1 
1 2 3 48 7 5 9 6 
子孫2 
84 2 7 1 3 5 6 9 
順序交叉 (order crossover; OX) 
順列の交叉
111 
循環交叉 (cycle crossover; CX) 
順序交叉 (order crossover; OX) 
一様順序交叉 (order-based crossover; OX2) 
一様位置交叉 (position-based crossover; POX) 
順列の交叉
112 
一様順序交叉 (order-based crossover; OX2) 
順列の交叉 
一様に選んだ遺伝座について、一 方の親の遺伝子の出現順序に従っ て、他方の親の遺伝子を並べ替え たものを受け継ぐ。
113 
染色体1 
1 2 3 4 5 6 7 8 9 
染色体2 
8 42 75 1 9 3 6 
子孫1 
4 2 37 5 61 89 
子孫2 
8 2 4 65 1 9 3 7 
一様順序交叉 (order-based crossover; OX2) 
順列の交叉
114 
循環交叉 (cycle crossover; CX) 
順序交叉 (order crossover; OX) 
一様順序交叉 (order-based crossover; OX2) 
一様位置交叉 (position-based crossover; POX) 
順列の交叉
115 
一様位置交叉 (position-based crossover; POX) 
順列の交叉 
一様に選んだ遺伝子を入れ替え、 残りの遺伝子については親と同じ 相対順序になるように配置する。
116 
染色体1 
1 2 3 4 5 6 7 8 9 
染色体2 
8 4 2 75 1 9 3 6 
子孫1 
24 37 51 96 8 
子孫2 
82541 6 79 3 
一様位置交叉 (position-based crossover; POX) 
順列の交叉
117 
部分写像交叉 (partially mapped crossover; PMX) 
サブツアー交換交叉 
(subtourexchange crossover; SXX) 
辺組換え交叉 
(edge recombination crossover; ERX) 
枝組立て交叉 
(edge assembly crossover; EAX) 
順列の交叉
118 
部分写像交叉 (partially mapped crossover; PMX) 
順列の交叉 
片方の親P1からは一部をそのまま受け継 ぎ、残りの部分についてはもう片方の親 P2から重複しない遺伝子をそのまま受け 継ぐ。 重複する遺伝子については、P1上で該当 する遺伝子が占める遺伝子座を求め、P2 上の同じ遺伝子座に存在する遺伝子を受 け継ぐ。
119 
染色体1 
1 2 3 4 5 6 7 8 9 
染色体2 
8 4 9 75 1 2 3 6 
子孫1 
1 2 3 45 8 7 96 
子孫2 
84 9 7 5 6 2 1 3 
部分写像交叉 (partially mapped crossover; PMX) 
順列の交叉
120 
部分写像交叉 (partially mapped crossover; PMX) 
サブツアー交換交叉 
(subtourexchange crossover; SXX) 
辺組換え交叉 
(edge recombination crossover; ERX) 
枝組立て交叉 
(edge assembly crossover; EAX) 
順列の交叉
121 
サブツアー交換交叉 
(subtourexchange crossover; SXX) 
順列の交叉 
それぞれの親の間である共通する 数字の組み合わせからなる部分順 列が存在する場合に、それを交換 する。さらに入れ替えた部分順列 を逆にしたものを含め、合計4個 の子を生成する。
122 
染色体1 
1 2 3 4 5 6 7 8 9 
染色体2 
8 1 7 534 2 9 6 
子孫1 
1534 2 6 7 8 9 
子孫2 
8 1 7 2 3 4 59 6 
子孫3 
1243 5 6 7 8 9 
子孫4 
8 1 7 5 4 3 29 6 
サブツアー交換交叉 
(subtourexchange crossover; SXX) 
順列の交叉
123 
部分写像交叉 (partially mapped crossover; PMX) 
サブツアー交換交叉 
(subtourexchange crossover; SXX) 
辺組換え交叉 
(edge recombination crossover; ERX) 
枝組立て交叉 
(edge assembly crossover; EAX) 
順列の交叉
124 
辺組換え交叉 
(edge recombination crossover; ERX) 
順列の交叉 
順列の繋がり(辺)に着目した交叉 方法。双方の親が共通して保有す る辺をなるべく多く受け継ぐよう に子を生成する。
125 
辺組換え交叉 
(edge recombination crossover; ERX) 
順列の交叉
126 
部分写像交叉 (partially mapped crossover; PMX) 
サブツアー交換交叉 
(subtourexchange crossover; SXX) 
辺組換え交叉 
(edge recombination crossover; ERX) 
枝組立て交叉 
(edge assembly crossover; EAX) 
順列の交叉
127 
枝組立て交叉 
(edge assembly crossover; EAX) 
順列の交叉 
両親のいずれかが保有する辺のみ を用いて複数のサブツアーに分割 された不完全解を生成する。 
サブツアー間を、なるべく短い辺 を用いて接続しなおすことで完全 解を含む子を生成する。
128 
枝組立て交叉 
(edge assembly crossover; EAX) 
順列の交叉
129 
枝組立て交叉 
(edge assembly crossover; EAX) 
順列の交叉 
経路問題への適用として、計算コ ストと精度の両面から、現時点に おいて最も優れた方法とされてい る。
130 
その他の交叉方式
131 
算術交叉 (arithmetic crossover) 
平均化交叉 
ブレンド交叉(BLX-α) 
単峰性正規分布交叉(UNDX) 
シンプレックス交叉(SPX) 
その他の交叉
132 
突然変異 (mutation) 
選択 (selection) 
交叉 (crossover) 
繁殖 (reproduction)
133 
個体の遺伝子の一部をランダムに 変化させる。 
生物における突然変異をモデル化 したもの。 
局所解に陥ることを防ぐ効果があ る。 
突然変異(mutation)
134 
各々の染色体において、突然変異が 発生する確率。 
通常、0.1%~1%、高くても数%とし て設定する。 
確率が低すぎると局所解に陥りやす くなり、高すぎるとランダム探索に 近づいて解が収束しにくくなる。 
変異確率(Pm)
135 
置換(substitution) 
摂動(perturbation) 
交換(swap) 
逆位(inversion) 
撹拌(scramble) 
転座(translocation)
136 
重複(duplication) 
挿入(insertion) 
欠失(deficiency; deletion)
137 
置換(substitution) 
ランダムに選ばれた遺伝子を対立 遺伝子に置き換える。 
染色体 
1001011101101 
変異後 
1000011111101
138 
摂動(perturbation) 
ランダムに選ばれた遺伝子の値に 微量値を加算(または減算)する。 
染色体 
0.51 2.83 3.12 1.50 
変異後 
0.512.763.12 1.50
139 
交換(swap) 
ランダムに選ばれた2つの遺伝子 を入れ替える。 
染色体 
12 3 4 5 6 7 8 9 
変異後 
1 2 64 5 37 8 9
140 
逆位(inversion) 
ランダムに選ばれた2点間の遺伝 子を逆順に並べ替える。 
染色体 
1001011101101 
変異後 
1000111011101
141 
撹拌(scramble) 
ランダムに選ばれた2点間の遺伝 子をランダムに並べ替える。 
染色体 
1001011101101 
変異後 
1000110111101
142 
転座(translocation) 
ランダムに選ばれた2点間の遺伝 子を別の遺伝子座に移動する。 
染色体 
1001011101101 
変異後 
1001110111001
143 
重複(duplication) 
ランダムに選ばれた2点間の遺伝 子を別の遺伝子座に複製する。 
染色体 
1001011101101 
変異後 
1011011101101101 
遺伝子長が変化
144 
挿入(insertion) 
ランダムに選ばれた場所に任意の 遺伝子を挿入する。 
染色体 
1001011101101 
変異後 
100100111101101 
遺伝子長が変化
145 
欠失(deficiency; deletion) 
ランダムに選ばれた遺伝子を削除 する。 
染色体 
1001011101101 
変異後 
1000111101 
遺伝子長が変化
New Generation AlternationModel(世代交代モデル) 
146
147 
離散世代モデル (discrete generation model) 
連続世代モデル 
(continuous generation model)
148 
離散世代モデル (discrete generation model) 
連続世代モデル 
(continuous generation model)
149 
離散世代モデル (discrete generation model) 
全ての個体が一斉に繁殖を行い、 現世代集合全体が次世代集合に置 き換えられるモデル。 
世代間における個体のオーバー ラップが存在しない。
150 
単純GAモデル (simple GA) 
ルーレット選択と交叉・突然変異を 用いて、親世代と同数の子個体を生 成し、子個体のみを次世代として残 す。 
初期収束による局所解の発生や、進 化的停滞が起こりやすい。 
離散世代モデル
151 
離散世代モデル (discrete generation model) 
連続世代モデル 
(continuous generation model)
152 
連続世代モデル 
(continuous generation model) 
現在の世代のうち一定の割合の個 体だけを入れ替え、のこりはその まま次世代に残すモデル。
153 
世代ギャップ (generation gap) 
離散世代モデルにおいて、各世代の 個体のうち次世代と入れ替えるもの の割合。 
離散世代モデル
154 
定常状態モデル (steady state) 
1世代につき1組(2個)の親個体 から子個体を生成し、現世代のうち 最も適応度の低い個体と入れ替える。 
離散世代モデル
155 
世代間最小ギャップモデル (minimum generation gap; elitist recombination) 
ランダムに選択された親個体2個と、 そこから作られる子個体2個を1つの 「家族」とする。 
家族の中でエリート選択とルーレット 選択により、2個体を次世代に残す。 
これを家族の数だけ繰り返す。 
離散世代モデル
156 
世代間最小ギャップモデル (minimum generation gap; elitist recombination) 
親子個体の選択を適応度を考慮せずに ランダムに行うため、多様性維持に優 れており、初期収束が起こりにくい。 
家族内で選択を行うため、計算負荷が 軽く、並列計算への適応もしやすい。 
離散世代モデル
KnownIssues 
157
158 
初期収束 
ヒッチハイキング
159 
初期収束 
ヒッチハイキング
160 
初期収束 
最初の方の世代で「偶然」他の個 体より適応度が圧倒的に高い個体 が生じた場合、その個体の遺伝子 が集団中に爆発的に増えて、探索 がかなり早い段階で収束してしま う現象。
161 
各パラメータを繰り返し設定し なおしてトライするしかない。 
初期収束への対策
162 
•集団数を増やす 
•ランキングの選択確率を変更す る 
•トーナメントサイズを縮小する 
•突然変異率を増やす 
•適用する問題にたいして効果的 となるよう、突然変異操作を変 更する 
初期収束への対策
163 
大変異 
あらかじめ定めた条件に応じて、 特定の世代においてのみ突然変 異率を急激に高める方法。 
自然界における環境の激変(隕 石の激突など)に相当する。 
初期収束への対策
164 
初期収束への対策 
大変異 
0% 
10% 
20% 
30% 
40% 
50% 
60% 
1 
100 
200 
300 
400 
500 
例えば… 
通常1%に設定した突然変異率を、 
100で割り切れる世代のみ50%とする。
165 
適応変異 
親個体間の不一致度合い(ハミ ング距離)に応じて、生成され た子個体の突然変異率を変化さ せる。 
初期収束への対策
166 
初期収束への対策 
適応変異 
染色体1 
1001011101101 
染色体2 
1010011010111 
染色体1 
1001011101101 
染色体2 
1000011100111 
ハミング距離=6→ 突然変異率=1% 
ハミング距離=2→ 突然変異率=8% 
例えば…
167 
初期収束 
ヒッチハイキング
168 
ヒッチハイキング 
遺伝子操作時に最適解と一致しな い遺伝子が混入してしまうことに よって最適解の生成を妨げる現象。 
2点交叉で発生しやすい。
169 
最適解= …11110100000… 
に対して、 
親1= …11110000000… 
親2 = …11111110000… 
が交叉して 
最適解を得られる確率p は・・・ 
ヒッチハイキング
170 
二点交叉の場合、 
푝= 2 퐿(퐿−1) 
(L=遺伝子長) 
遺伝子長が増加するにつれて、 
加速度的に確率が低下する。 
ヒッチハイキング
171 
しかし、 一様交叉であれば、 
푝= 223= 14 
となり、遺伝子長に依存しない。 
ヒッチハイキング
Summary 
172
173 
GAとは、 
生物の遺伝を模したアルゴリズム。 
適者生存による自然淘汰で最適解 を探索することができる。 
対象となる問題に関する数学的な 知識がない場合でも適用が可能。 
まとめ
174 
問題の性質に適したエンコーディ ングと交叉方法を選ぶことが重要。 
組み合わせの増加などにより指数 関数的に複雑さが増加する問題に 対しても、線形的な時間増加で探 索を行うことができる。 
まとめ
175 
局所最適解への収束を防ぐために、 
状態に応じて突然変異の方法や、 確率、トーナメントサイズなどの パラメータを変えることも必要。 
まとめ
176 
GAで 
いろいろな問題を 
解いてみよう! 
まとめ
177 
Genetic Algorithms Programing Library for JavaScript 
https://github.com/kzokm/ga.js 
Samples of Genetic Algorithm 
http://ga-samples.herokuapp.com/
Copyright ©2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 
http://aitc.jp 
https://www.facebook.com/aitc.jp 
ハルミン 
AITC非公式イメージキャラクター

More Related Content

PDF
機械学習による統計的実験計画(ベイズ最適化を中心に)
PPTX
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
PDF
DQNからRainbowまで 〜深層強化学習の最新動向〜
PPTX
Ion torrent and SOLiD Sequencing Techniques
PPTX
畳み込みニューラルネットワークの高精度化と高速化
PDF
Trillion Dollar Coach Book (Bill Campbell)
PDF
機械学習 入門
PDF
はじパタ6章前半
 
機械学習による統計的実験計画(ベイズ最適化を中心に)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
DQNからRainbowまで 〜深層強化学習の最新動向〜
Ion torrent and SOLiD Sequencing Techniques
畳み込みニューラルネットワークの高精度化と高速化
Trillion Dollar Coach Book (Bill Campbell)
機械学習 入門
はじパタ6章前半
 

What's hot (20)

PDF
【メタサーベイ】基盤モデル / Foundation Models
PPTX
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
PPTX
DNNの曖昧性に関する研究動向
PDF
Transformerを多層にする際の勾配消失問題と解決法について
PDF
最適化超入門
PDF
Optimizer入門&最新動向
PPTX
勾配降下法の 最適化アルゴリズム
PDF
多様な強化学習の概念と課題認識
PDF
深層学習の不確実性 - Uncertainty in Deep Neural Networks -
PDF
【メタサーベイ】Neural Fields
PDF
【DL輪読会】マルチエージェント強化学習における近年の 協調的方策学習アルゴリズムの発展
PDF
2019年度チュートリアルBPE
PPTX
Triplet Loss 徹底解説
PPTX
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021)
PDF
TensorFlowで逆強化学習
PPTX
【DL輪読会】Scaling Laws for Neural Language Models
PDF
Union find(素集合データ構造)
PDF
機械学習モデルの判断根拠の説明
PPTX
深層学習の非常に簡単な説明
PPTX
報酬設計と逆強化学習
【メタサーベイ】基盤モデル / Foundation Models
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
DNNの曖昧性に関する研究動向
Transformerを多層にする際の勾配消失問題と解決法について
最適化超入門
Optimizer入門&最新動向
勾配降下法の 最適化アルゴリズム
多様な強化学習の概念と課題認識
深層学習の不確実性 - Uncertainty in Deep Neural Networks -
【メタサーベイ】Neural Fields
【DL輪読会】マルチエージェント強化学習における近年の 協調的方策学習アルゴリズムの発展
2019年度チュートリアルBPE
Triplet Loss 徹底解説
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021)
TensorFlowで逆強化学習
【DL輪読会】Scaling Laws for Neural Language Models
Union find(素集合データ構造)
機械学習モデルの判断根拠の説明
深層学習の非常に簡単な説明
報酬設計と逆強化学習
Ad

Viewers also liked (20)

PPT
できる!遺伝的アルゴリズム
PDF
ゲームにおけるニューラルネットワーク「NERO における学習と進化 」(後半)
PDF
「エンターテインメント、人工知能、ゲームマスター」
PDF
ゲームAI製作のためのワークショップ(I)
PDF
ゲームにおける遺伝的アルゴリズム「NERO における学習と進化 」(前半)
PPTX
Paper intoduction "Playing Atari with deep reinforcement learning"
PDF
"Playing Atari with Deep Reinforcement Learning"
PDF
LSTM (Long short-term memory) 概要
PDF
ルールベースから機械学習への道 公開用
PDF
SVM実践ガイド (A Practical Guide to Support Vector Classification)
PDF
実戦投入する機械学習
PDF
最近のDeep Learning (NLP) 界隈におけるAttention事情
PDF
PFN Spring Internship Final Report: Autonomous Drive by Deep RL
PDF
Chainer Development Plan 2015/12
PDF
深層学習ライブラリのプログラミングモデル
PPTX
Capitalicoでのchainer 1.1 → 1.5 バージョンアップ事例
PDF
Chainer Contribution Guide
PPTX
ディープラーニングにおける学習の高速化の重要性とその手法
PDF
Lighting talk chainer hands on
PDF
Chainer入門と最近の機能
できる!遺伝的アルゴリズム
ゲームにおけるニューラルネットワーク「NERO における学習と進化 」(後半)
「エンターテインメント、人工知能、ゲームマスター」
ゲームAI製作のためのワークショップ(I)
ゲームにおける遺伝的アルゴリズム「NERO における学習と進化 」(前半)
Paper intoduction "Playing Atari with deep reinforcement learning"
"Playing Atari with Deep Reinforcement Learning"
LSTM (Long short-term memory) 概要
ルールベースから機械学習への道 公開用
SVM実践ガイド (A Practical Guide to Support Vector Classification)
実戦投入する機械学習
最近のDeep Learning (NLP) 界隈におけるAttention事情
PFN Spring Internship Final Report: Autonomous Drive by Deep RL
Chainer Development Plan 2015/12
深層学習ライブラリのプログラミングモデル
Capitalicoでのchainer 1.1 → 1.5 バージョンアップ事例
Chainer Contribution Guide
ディープラーニングにおける学習の高速化の重要性とその手法
Lighting talk chainer hands on
Chainer入門と最近の機能
Ad

Similar to 遺伝的アルゴリズム (Genetic Algorithm)を始めよう! (20)

PDF
集合知プログラミング5章前半
PDF
遺伝的アルゴリズム (Genetic Algorithm)を始めよう! 【簡略版】
PPTX
Mutation Testing (Aug 2012)
PDF
プログラミングコンテストでの乱択アルゴリズム
PDF
Santa fe trail 入門のお話
PPTX
Genetic algorithm full scratch with R
PDF
20141211柏セミナー
PDF
Kink: invokedynamic on a prototype-based language
PDF
130323 slide all
PDF
Extract and edit
PDF
Nips20180127
PPT
6 Info Theory
PDF
"Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz...
PPTX
Prml 1.3~1.6 ver3
PDF
音学シンポジウム2025「ニューラルボコーダ概説:生成モデルと実用性の観点から」
PPT
Survival analysis0702 2
PDF
深層学習 - 画像認識のための深層学習 ①
PPTX
[DL輪読会]GQNと関連研究,世界モデルとの関係について
PPTX
サマーセミナー2016: 遺伝アルゴリズムによるナビゲーション
PPT
Survival analysis0702
集合知プログラミング5章前半
遺伝的アルゴリズム (Genetic Algorithm)を始めよう! 【簡略版】
Mutation Testing (Aug 2012)
プログラミングコンテストでの乱択アルゴリズム
Santa fe trail 入門のお話
Genetic algorithm full scratch with R
20141211柏セミナー
Kink: invokedynamic on a prototype-based language
130323 slide all
Extract and edit
Nips20180127
6 Info Theory
"Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz...
Prml 1.3~1.6 ver3
音学シンポジウム2025「ニューラルボコーダ概説:生成モデルと実用性の観点から」
Survival analysis0702 2
深層学習 - 画像認識のための深層学習 ①
[DL輪読会]GQNと関連研究,世界モデルとの関係について
サマーセミナー2016: 遺伝アルゴリズムによるナビゲーション
Survival analysis0702

More from Kazuhide Okamura (6)

PDF
協働プロジェクト「空気を読む家」キッチンにおけるデータ収集
PDF
いろんなセンサーで 家の中のいろいろなものを測ってみた
PDF
使ってわかる 今どきのdocker超入門
PPTX
気象予報データ(数値予報GPV)を用いた データビジュアライゼーション
PPTX
マンガ駆動開発のすゝめ
PDF
ニューラルネットワーク ことはじめ
協働プロジェクト「空気を読む家」キッチンにおけるデータ収集
いろんなセンサーで 家の中のいろいろなものを測ってみた
使ってわかる 今どきのdocker超入門
気象予報データ(数値予報GPV)を用いた データビジュアライゼーション
マンガ駆動開発のすゝめ
ニューラルネットワーク ことはじめ

遺伝的アルゴリズム (Genetic Algorithm)を始めよう!