dポイントプレゼントキャンペーン実施中!

サイトでざっくりで説明を読み6時間掛けて遺伝的アルゴリズムを用いた経路探索プログラムを作成しました。

300行もあり読みたくないと思うのでざっと箇条書きにしますと。
・左上からスタートし右下に進むプログラム(途中に障害物がある)
・20体生成し上位2組を各10体ずつと交叉させる
・突然変異は1%
以上です。
http://codepad.org/oCLtJP3d

ただ、私が作成したかったのは最適解を私が容易に想像できるものではなく。
「評価方法はわかるが最適解はわからない」というような問題です。
具体的にはyoutubeにアップロードされている【人工知能】物理エンジンで人工生命つくって学習させたみたいな

ものです。

じゃあそれをやればいいじゃないかと思われると思われますが高校を出てないので「物理って何?」というレベルです(汗)

何か勉強になるテスト方法とかありませんか?
よろしくお願いします。

A 回答 (1件)

ODEってやつのことを良く知らないのですが、やってることは、


・各関節に「目標画時系列」とかいうパラメータがある
・全ての関節についてそれを並べる(これをGAの世界ではコーディングといいます)
・コーディングされた遺伝子を使ってGAによる世代交代をする
・各遺伝子をデコードしてODEのパラメータを作り、ODEを利用して評価を行う
・評価関数は「単位時間当たりの移動距離」
じゃないかと思います。

1関節の情報をどのように遺伝子として表現しているかわかりませんが、
単純に多値のパラメータを羅列しているだけ(下手に値を二進数化したりしていない)だと思います。
突然変異は、えらばれた座のパラメータの値域の中からランダムに変化するだけだと思います。
きっとODEを使って評価するには、なんかAPIみたいなのがあって、それを利用できるんだと思います。

動画のような問題ですと、遺伝子長が10とかそれぐらいの非常に簡単な問題だと思います。
この問題は、きっと腕や足に当たる部分を近い座に配置してコーディングしていると思うので、
例えばいい動きをする右足といい動きをする左足のパラメータを持った遺伝子を掛け合わせることで、
劇的によく歩ける遺伝子が作られやすいんだと思います。
ある意味、GAのデモにうってつけの問題ですね。

なので、評価部分にODEを使う、突然変異のやり方を工夫する、
遺伝子のデータ構造をODEに合わせたものにする、
だけで、基本的には古典的なGAのプログラミングで簡単にできそうな気がします。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!