Comments
Description
Transcript
ソフトコンピューティング
ソフトコンピューティング 第3回 遺伝的アルゴリズム(GA) 1 遺伝的アルゴリズム(GA)とは? 遺伝的アルゴリズム(GA)とは、解探索ア ルゴリズムである ソフトコンピューティングの代表選手 →解探索(解探索問題)とは? 2 解探索問題とは? 与えられた答えの候補の中から、制約条件を満たしつつ 最も評価の高いものを探す 例:ディーゼルエンジンの多目的効率化 評価:NOxの量+CO2の量+使用燃料の量(少ないほど良い) 解の候補(解空間):燃料噴射タイミングx,排気還流量y,触媒 温度z 制約条件:出力 100ps 以上 連続系の場合:ある関数の最大値を探す 離散系の場合:最高の組み合わせを探す 3 GAが効く解探索問題 離散系の解探索問題 (特に組み合わせ最適化問題) 解の候補同士の間に関係があまりない 遺伝子CGATと生じる形質は直接関係ない →変化方向が計算できない 非常に複雑な連続系の解探索問題 非線形関数の場合、最小値(最大値)を式で表せない ことが多い →探さないといけない 4 遺伝的アルゴリズムとは GA (genetic algorithm) 規模の大きな問題の解探索を行う手法。 生物の「適者生存」がベースアイデア。 良い親(解候補)の特徴を組み合わせると、よ り良い子(解候補)が現れることを期待する。 様々な発見的手法のオペレータを含む。 結果は初期状態に依存 最適性の保障なし。 5 GAの一世代 準備 ①遺伝子のコード化、個体数決定、評価関数決定 ②淘汰と複製 繰り返し (一世代) ③交叉 ④突然変異 6 GAの概略 ①遺伝子のコード化 例:燃料噴射タイミング 3bit,排気還流量 2bit, 触媒温度2bit 1001001 8段階 4段階 4段階 評価:10分間運転時のNOx, CO2, 消費燃料量を シミュレータで推測 拘束:出力100ps以上 7 GAの概略 初期化:コードをランダムに生成 1011010 1111010 1011011 1111011 1011011 0011010 1000111 0011010 1000111 1011000 個体総数(ポピュレーション)は決めておく 8 GAの概略 ②淘汰と複製:「良さ」を評価、点数に応じて淘汰・複製 1011011 1011010 90 83 1111011 66 1011011 72 1000111 70 良さ=適合度(点数) 9 GAの概略 ③交叉:親を選んで子を作る 1011010 1011010 1111010 1011011 1011011 1011011 1011011 1000111 1011111 遺伝子の一部を入れ替える 1000011 10 GAの概略 ④突然変異:遺伝子を突然変える 1011110 1011010 1111010 1011011 1011011 1011011 1011011 1000011 1000111 1011111 再び②に戻る 12 淘汰と複製 (Selection) • • • 個体数を一定に保ち、優秀な個体(=良い 解)に収束させていくためのプロセス 「良さ」は事前に決めておいた「適合度」関数 の値で決める 淘汰と複製はセットで考えられるのが普通 大きく2種類の考え方がある 適合度の低い個体でも生き残るチャンスがある 適合度の低い個体は必ず死ぬ 13 (1)ルーレット選択法 適合度の低い個体でも生き残る可能性がある • • • • 適合度に応じて、面積の異なる「ルーレット」を作る 適合度が大きいほどルーレット上の面積も大きい ダーツを投げて、当たったところの個体を複製 個体数分ダーツを投げる (実際には乱数を使って決める) 個体iの適合度 複製確率 pi f ( si ) N f (s ) j j 1 全個体の適合度の和 14 (2)期待値選択法 適合度の低い個体は生き残れない • • • 適合度を個体数で割り、「期待値」を算出 期待値に応じた(四捨五入など)数に複製 個体数の少ないGAに適する 適合度 6 1 10 11 17 32 4 12 5 2 期待値 0.6 0.1 1.0 1.1 1.7 3.2 0.4 1.2 0.5 0.2 再生数 1 0 1 1 2 3 0 1 1 0 個体数10の場合の例 15 (3)ランキング選択法 適合度の低い個体は生き残れない • • 適合度の高い順にランキング(順位付け) 順位に応じた数を複製する 順位 1 2 3 4 . . . 複製数 個体 5 個体 2 個体 8 個体 1 . . . 10 9 8 7 . . . 10 6 4 3 . . . (線形) (非線形) 16 交叉 (Crossover) • • • 2つの親個体の遺伝子を入れ替えて子を作る 親の遺伝形質(その解の特徴)を引き継ぐことが望ましい 入れ替え方でいくつか種類がある (1)単純交叉(1点交叉、Simple Crossover) 親1: 11000|0001 親2: 10111|0100 子1: 110000100 子2: 101110001 遺伝子入れ替え区切りはランダムに決める 17 (2)多点交叉 (Multipoint Crossover) 親1: 11|0000|001 親2: 10|1110|100 子1: 111110001 子2: 100000100 親1: 11|000|000|1 3点交叉 親2: 10|111|010|0 子1: 111110000 子2: 100000101 2点交叉 (3)一様交叉 (Uniform Crossover) マスクパターンを使う 親1 親2 110000001 101110100 マスク 101101101 子1 子2 100010001 111000100 18 突然変異 (Mutation) • • ランダムに遺伝子の内容を変える 変えすぎるとランダムサーチになってしまう <1011101000> → <1001101000> 突然変異の例 19 GAのキモ 致死遺伝子:実行不可能な(制約条件を満た せない)コード コード化:個々の解の特徴をうまく表現 交差・突然変異:致死遺伝子を発生させない 20 適用例 図の関数 f(x)の最大値を与えるxを求める 要求精度 : 10-5 f(x) = x sin (10x) + 2.0 (-1.0≦x ≦ 2.0) 21 コード化 要求精度 10-5でxを調べるために、22ビットの2進数でコード化 1つ1つの遺伝子は、xのある値に対応する s1=<1000101110110101000111> xの範囲を考えて <0000000000000000000000>=-1.0 <1111111111111111111111>= 2.0. 初期状態では、ランダムに個体(遺伝子)を生成する 22 適合度 f(x) が大きければ良いので ある遺伝子に対する関数値 f(s*) を適合度とする s1=<1000101110110101000111> s2=<0000000111000000010000> s3=<1110000000111111000101> f(s1) = 2.586345 f(s2) = 1.078878 f(s3) = 3.250650 BEST 適用結果 23 真の値 1.850542 個体数 = 50, 突然変異確率 = 0.01 単純交叉、交叉確率 = 0.25 ルーレット選択 24 GAアルゴリズムを組んでみよう 第1回の問題Bについて、以下の項目を決 めてGAを完成させよう。 遺伝子コーディング 評価関数 選択(淘汰)と複製方法 交叉方法 突然変異方法 25 行商人問題(TSP)をGAで解く 行商人問題とは • ある行商人が、自分の町から出発して、地図に載っている全ての町 を訪問し、また自分の町に帰ってくることを考える。 • 最も効率よく(=移動時間が少なく)この行商をこなすためには、ど のような順序で地図上の町を訪問するのがよいのかを答える問題 が行商人問題である。 • 地図上の全ての都市間に何らかの移動方法があり、さらにそれら全 てについて所要時間が分かっているとすると、解を求めるために必 要な情報は全て分かっていることになる。 • しかし、最適な解を求めることは非常に困難である。 26 行商人問題の計算量 巡回順序数 = (都市数 –1)! 2 多すぎて調べきれない→GAの出番 27 問題Bを解くGA(1) 遺伝子コーディング → 都市の番号を並べたもの(番号列) 評価関数 → 番号列の前から順に移動距離を足し、 全て巡回し終わったときの総距離 28 問題Bを解くGA(2) 選択と再生 →ルーレット選択(何でも可) 交叉方法 →??? 突然変異方法 →ランダムに番号列の数字を入れ替える 29 コード化の問題 単純に都市名(番号)の列を遺伝子にしてみると・・・ 1 2 5 4 3 6 7 8 s1=<12345|6789> s2=<19283|7465> s’1=<12345|7465> s’2=<19283|6789> 9 (致死遺伝子) 単純交叉が適用できない 交叉方法を変えなくてはいけない 30 行商人問題用交叉法 任意の遺伝子間で交叉を行ってもキチンと実現可能な 解を出すための交叉法が複数提案されている • 部分一致交叉 (Partially Matched Crossover, PMX) • 順序交叉 (Ordered Crossover, OX) • 周期交叉 (Cycle crossover ,CX) 31 周期交差(CX) (i) 親 部分的な巡回順序を保持 情報の遺伝子上の位置を保持 致死遺伝子ができない s1=<123456789> s2=<412876935> (ii) サイクルを見つける s’1=< 1 2 3 4 * * * 8 * > s1=< 1 2 3 4 5 6 7 8 9 > s2=< 4 1 2 8 7 6 9 3 5 > (iii) 残りの遺伝子を入れ替える s’1=< 1 2 3 4 7 6 9 8 5 > (s’2 も同様) 32 まとめ 遺伝的アルゴリズムは自然淘汰の考えを 取り入れた解探索手法 最適性の保障はないが高速である 問題の性質(コード化)によっては、単純な 交叉法が適用できず、適切な方法を考え なくてはならない