nDiki : 遺伝的アルゴリズム
Related term
2004年7月5日 (月)
■ Perl で遺伝的プログラミング

創発本(ソフトバンクパブリッシング)を読んでいたら、遺伝的プログラミングしてみたくなった。 余暇としてコードを書いてみる。 しかし遺伝的プログラミングも遺伝的アルゴリズムもきちんと学んだことがないのでかなり適当。もしかしてやっている事はGPではないかも。
- 終端記号集合を用意 ('1', ';', '+', 'if', ...)
- これらの列を遺伝子とする。
- ランダムに並べたものを、沢山用意。
- トークン列をjoin(' ')して、sub { } の中にいれて eval
- エラーが出なかったらパラメータを与えて実行。返り値をチェックして適応度を計算
- 選択 - 適応度の高いものを残すように
- 交叉 - ある遺伝子の前半と、ある遺伝子の後半をくっつける。長さはそれぞれランダム
- 突然変異 - 遺伝子の1つの終端記号をランダムに変更
'3' を返す関数とかは簡単にできあがる(sub { 1 + 1 + 1} など)。 max(a, b) に対応する関数を作ろうとしたら、これは今のところ駄目。
- eval (コンパイル) 成功したものの方が、失敗したものより適応度を高くするようにしていたため、交叉の長さをランダムにするとどんどん遺伝子が短くなる(長いものはほとんどコンパイルエラーになるので)
- '}' などの順序にによっては sub が閉じられてしまう。パターンによっては perl 自体がセグメンテーション例外で落ちてしまった。最低限 '{', '}' の対応があうように eval 前に '{', '}' を挿入するようにした。
- 遺伝子がちょっと長くなるとほとんど eval に失敗する。
- '<', '>' を終端記号集合に含めておくと、<$a> のようなものも生成してしまう事もあり危険。
- 無限ループ検出がないため、終端記号集合に for, while 等を入れられない。
やはり構文木を遺伝子にしないと駄目かな。
- ActivePerl で Ming (2005-02-23)
- Perl テストスクリプトの中で標準エラー出力を一時的に止める (2006-12-15)
- [ Perl ] Class::Virtual (2004-06-02)
- Perl の constant プラグマで1度に複数の定数を定義できるのは... (2007-03-08)
- 創発 蟻・脳・都市・ソフトウェアの自己組織化ネットワーク (2004-06-11)
■よく検索されるキーワード
perl(62) torrent(54) linux(48) 提案書(47) windows(43) 書き方(41) 使い方(29) アジェンダ(26) x31(25) 充電式カイロ(25) cvs(22) インストール(20) サンプル(20) thinkpad(19) アジェンダとは(19) f-01a(18) wiki(17) c#(16) 感想(16) カイロ(16) usb(16) java(16) 秋葉原(15) debian(15) ヨドバシカメラ(15) subversion(15) 壁紙(15) 作り方(15) 静電気(14) apache(14) グッズ(14) デロンギ(13) フリー(13) sh-01a(13) ganttproject(13) 修理(13) ssh(12) svn(12) ヨドバシ(12) truecrypt(12) ダイソー(11) 手帳(11) activeperl(11) ubuntu(11) ほぼ日手帳(11) firefox(10) mew(10) mp980(10) ドラマ(10) 日本語(10) n-01a(10) google(10) tc-1(10) 評判(10) ツール(10) djunit(9) cgi(9) 動画(9) mp3(9) オイルヒーター(9) docomo(9) rcs(9) 除去(9) centos(9) メモリ(9) エネループ(9) 設定(9) p-01a(9) tortoisesvn(9) 無印(8) ケース(8) 口コミ(8) ミノルタ(8) メール(8) インストーラ(8) 会議(8) xampp(8) 加湿器(8) af(7) 値段(7)■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザインProcess Time: 15.120107s / load averages: 0.36, 0.32, 0.26
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)



スポンサード リンク