遺伝的アルゴリズム
生命が世代を重ねつつ進化す様子をモデル化し、
改善を重ねながら最終的に問題をとこうとするアルゴリズム。
求める正解との乖離を点数(などの評価可能なもの)で表し、
各世代で優秀だったものを組合せて子の世代を作る。
これを繰り返すことで最終的に解に至る。
点数の付け方(評価方法)を誤ると結果が収束しない事があるので難しい。
また、子を作るための組合せではランダムな変更も加える。(突然変異)
サンプルプログラム
javascriptで簡単な例を書いてみた。
テキストエリアに文章(半角英字と半角空白のみOK)を入力し「開始」押下で動く。
ランダムに生成した10個の文字列から、100個の子を作り、優秀な10個を選び・・・
と繰り返していく。
細かい説明はこちら。
酔いどれまさになう。