9

ニューラルネットワークによって制御されるエージェントの簡単な進化シミュレーションを構築しようとしています。現在のバージョンでは、各エージェントは、1つの隠れ層を有するフィードフォワードニューラルネットを有する。環境には、赤い点で表される一定量の食品が含まれています。エージェントが動くと、彼はエネルギーを失い、食べ物の近くにいるとき、彼はエネルギーを得る。 0エネルギーのエージェントが死ぬ。ニューラルネットの入力はエージェントの現在の角度と最も近い食品へのベクトルです。時間ステップごとに、各エージェントの動きの角度は、ニューラルネットの出力によって変化する。もちろん、食料を求める行動がしばらくしてから進展するのを目指すことです。しかし、何も起こらない。ニューラルネットワークによる人工生命

ニューラルネットの構造(あまりに単純か?)や再生メカニズム:人口の爆発を防ぐために、初期集団は約20人のエージェントであり、集団が50に近づくと、再生確率はゼロに近づく。再生が発生すると、エージェントのリストを最初から最後まで調べ、0から1の間の乱数がこのエージェントのエネルギーとすべての薬剤のエネルギー。そうであれば、探索は終了し、このエージェントは親になります。ニューラルネットワークの1つ以上の重みに突然変異のある確率でこのエージェントのコピーが環境に追加されるためです。

ありがとうございます!

+0

「何も起こらない」ということは、正確にはどういう意味ですか? – timday

+0

エージェントはランダムに移動し、時々方向を変えますが、食べ物は探しません。 – user1767774

+1

あなたがまだそれを見ていない場合、この種のプロジェクトのためにいくつかのインスピレーションが必要な場合は、読んでください:http://ttapress.com/553/crystal-nights-by-greg-egan/ – timday

答えて

6

環境が十分に悪い場合(例えば、食べ物を見つけるのが簡単な場合)、無作為に動くだけで完全に実行可能な戦略になり、生殖の成功は他の何よりもはるかに運の影響を受ける可能性があります。例えば、子孫が親と共存する場合、両者は地元の地域で互いに競合しており、長期的には両者が死に至るには十分に不利になる可能性がある。

あなたのシステムをテストするには、 "premade"ニューラルネットワークを使って、その人を最も近い食べ物に向かって直接誘導するような人を紹介してください(あなたのモデルは存在していて、書き留めるのは簡単です。もしそうでなければ、それが進化すると期待するのは無理です!)。愚かな大衆の間であなたのシミュレーションにその人を紹介してください。個人がすぐに支配的でない場合、そのような行動を強化するためにシミュレーションが設定されていないことが示唆されます。しかし、個人が生殖の成功を楽しんで、その子孫が引き継ぐならば、あなたのシミュレーションは正しいことをしており、そのような行動が進化していない理由を別の場所で見る必要があります。コメントに応答して

更新:

角度とベクトルのこの混合は怪しげである私には思えます。個人が「最も近い食べ物に近づく」行動に向かって進化するかどうかは、あなたのネットワークによってアタンク関数がどの程度うまく近似できるか(私は懐疑的です)に依存しなければなりません。彼らは期待される機能に向けて進化させることができるかどうかを確認するために、ランダムなネットワークのあなたのスタイルの人口 を乱すすべての生態系のシミュレーションとだけテストを脇に置き

  • :繰り返しますが、これはより多くのテストを示唆しています。
  • (より簡単、より良い)ネットワーク出力に、(角度ではなく)ベクトルを出力させます。個人が移動する方向です(もちろん、1つではなく2つの出力ノードを持つことを意味します)。明らかに、「食べ物に向かう方向へ」戦略は、「食品に向かう方向」のベクトル成分をまっすぐパススルーさせることです。興味深いのは、あなたのランダムなネットワークがこの単純な「アイデンティティ機能」に向かって進化しているかどうかを見極めることです上記のようにレディメイド最適化個体の導入を可能にする)。

「固定量の食べ物」についても私は疑念を抱いています。 (私はあなたが赤い点が消費されるとすぐに別のものが導入されることを意味すると仮定します)。より現実的なモデルは、食料を一定の割合で導入し、人口制限を課すものではない。人口の制限は食料供給の限界によって決まる。例えば、毎分100単位の食物を導入し、生存するために1分あたり1単位の食物が必要な場合、シミュレーションでなければなりません。 (ブーム・アンド・バスト、詳細に応じて、饗宴や飢饉のダイナミクスが実際に出現するかもしれないが)、「人口爆発」と呼ばれている。

+0

ありがとう、それは素晴らしいアイデアですが、私はどのように適切なウエイトを選ぶべきか分かりません。私は活性化関数としてtanh(x)を使用します。 a、b、cを重みとし、α、dx、dyはエージェントの角度、最も近い食品までの水平距離および垂直距離をそれぞれとする。 tanh(a * alpha + b * dx + c * dy)=ε*(tan(dy/dx)-alpha) - 出力をある一定の時間差にしたい現在の角度までの食物に対する角度(tan(dy/dx))。これは3つの未知数を持つ1つの方程式です。ところで、私が説明した再生メカニズムについてどう思いますか? – user1767774

+1

私はあなたの提案に従い、ネットワーク出力をベクターにしました。数分後に食物探索行動が進化しました!ありがとうございます( - :この重要な変更の理由は何ですか?直感的には、ベクトルは角度に関する情報と関連性の低い情報の両方を保持していますので、出力が単純なスカラー(角度) ... – user1767774

+1

私の推測:あなたの神経ネットワークモデルが、運動方向への食べ物の方向の単純な「パススルー」に向かって進化するのは、それらがatan機能を進化させるよりもはるかに容易だからです。 – timday

関連する問題