遺伝的アルゴリズム 遺伝的アルゴリズム(GAとは) • 生物の、遺伝と進化の仕組みを真似て問題 を解くアルゴリズム – 最適化や強化学習に用いられる 進化と遺伝 – – – – – – – – – 染色体 遺伝子 遺伝子座 対立遺伝子 遺伝子型 表現型 突然変異 交叉 選択 最適化問題 • いくつも答えがある中から一番優れた解を選 び出す – 例 : ナップサック問題 • ナップサックに荷物を詰めることを考える – – – – N個の荷物がある 各荷物には価値と重量が設定されている 詰める荷物の価値の総和を最大にしたい ナップサックには詰め込める重量の限界があり、全ての荷物 を詰めることは出来ない • 全ての組み合わせを調べれば(前回探索法)、 最良解が見つかる(当たり前) • しかし荷物数Nが増えると、組み合わせの数 が指数的爆発して現実的な時間で解けない • どうしよう ヒューリスティクス(発見的手法) – 必ず正しい答えが導けるわけではないが、ある 程度のレベルで正解に近い解を得ることが出来 る方法 – うまいルールを思いつければ、それに従って探索 する。 – 思いつけないかも – 見つかった答えは本当に最良か?ルールによっ て見つかる解は決まる – 例:欲張り法 遺伝的アルゴリズム • メタヒューリスティクス(何にでも使えるアルゴリズム、 その代わり、特化されたものより性能が低い)の一種 • 全ての解をではないが、色々比較検討する • ある程度のところで我慢する • 1個体とその遺伝子型 – 遺伝子型s 長さNの記号列(とりあえずバイナリ列) • s = s1 s2 …. sN • M個体からなる個体集合 • Sの様な個体がM個集まって1世代分の個体集合 • とりあえずM全世代で一定にしとく 遺伝演算子 – 交叉 • 個体集合の中から2個体をランダムに選び、ある確率 (交叉確率)で遺伝子列を交換 – 突然変異 • 各個体においてある確率(突然変異確率)で各遺伝子 座の値を変える – 選択 • 環境に適応した個体ほどたくさんコピーを残すように する • 適応度g • ステップ1:初期化ランダムにM 個の個体の遺伝子 型(N 文字からなる文字列)を生成して,初期世代 • における個体集合P(0) を作る.世代を表すループ 変数t は,t = 0 と設定する. • ステップ2-1:評価個体集合P(t) に含まれる全M 個 体に対して,その表現型xi に応じて決まる適応度 • gi (i = 1, . . . , M) を求める. • ステップ2-2:選択個体集合P(t) に対して,各個体の 適応度gi に基づき,前節2.2 に示した選択操作を • ほどこし,その結果得られた新たなM 個体からなる 集合P(t) を生成する. • ステップ3:交叉個体集合P(t) に対して,前節2.2 に示した交 叉操作をほどこし,その結果得られた新 • たなM 個体からなる集合P(t) を生成する. • ステップ4:突然変異個体集合P(t) に対して,前節2.2 に示し た突然変異操作をほどこし,その結果得 • られた新たなM 個体からなる集合を生成し,それをもって次 世代の個体集合P(t+1) とする.t を • t + 1 に1 増加する. • ステップ5:終了判定進化過程の最終世代数T をあらかじめ 設定しておき,t < T ならば,上記のステッ • プ2-1 に戻る.t ≥ T となった時点で,計算のループを終了さ せる.終了時点までに得られた最大適 • 応度をもつ個体をもって,一番良い個体とする.
© Copyright 2025 ExpyDoc