問題タブ [artificial-life]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
genetic-algorithm - 染色体のセットを属性に変換する方法は?
それで、これに対する答えは基本的に私が自分の生き物*の遺伝子をコード化することを本当に調べなければならないと言ったので、私はそれをしました!
そこで、次の小さな(byte []-)構造を作成しました。
遺伝子={X、X、X、X、Y、Y、Y、Y、Z、Z、Z、Z}
どこ
X=クリーチャーの特定の特性を表します。
Y =これらのブロックは、クロスオーバーとミューテーションが発生する方法、発生する場合、発生するタイミングを制御します(16の可能な値、それで十分だと思います!)
Z =ストランドの長さ(基本的に、これは将来のビルド用であり、進化によってストランド全体の長ささえも制御できるようにします)。
(したがって、ZとYはMETA情報と考えることができます)
(尋ねる前に、はい、それは12バイトです:))
あなたへの私の質問は次のとおりです。
これらの各「生き物」の特徴をどのように結び付けるのでしょうか?
基本的に、私はそれをこのように見ています(そしてこれはおそらく私がそれを実装する方法になるでしょう):それぞれの「生き物」は走り回って、食べて繁殖することができます、基本的なもの。私はそうは思いません(少なくともそうは望んでいません!)私は適応度関数自体が必要になると思いますが、食物、パートナー、宇宙の競争のように、進化が生き物を進化に駆り立てることを願っています。
この見方は間違っていますか?それを1つの大きなグラフとして見て、そこから「単純に」取得する方が簡単でしょうか(私はプログラマーであり、数学者ではありません!)。
または、tl; dr:記事、研究、および/またはこれの実装例を正しい方向に向けてください。
(さらに多くのtl; dr;遺伝子を、たとえば脚の長さに変換するにはどうすればよいですか?)
*質問を読んでください、私は一種のシミュレーターを構築しています。
algorithm - セルオートマトンのようなワトル。セルを更新する順序は?
少し前に、私はセルオートマトンのような Wa-Tor を書きました (ウィキペディアを参照)。安定したシステムを得るために多くの微調整を行った以外は、非常にシンプルでうまく機能しました。しかし、それ以来、セルを「現実的に」更新する方法を自分自身 (そして今はあなた) に尋ねています。
私の「世界」はグリッドで、常に左上から右下に更新されていました。IMO は、上と左に近いセルが常に高速であることも意味します。たとえば、セル [3, 3] の魚は、更新される前に [3, 2] のサメに食べられる可能性があります。セルが反対の位置にある場合、魚は更新される前にサメから離れることができるため、常にサメから逃げます。
これは「問題」(または少なくとも非現実的)であるというのは正しいですか?
現実的な設定では、すべてのセルを同時に更新する必要がありますが、そのようなものを実装する方法がわかりません。私が想像できる別の方法は、「シャッフルされた」順序でセルを評価することです。
この問題をどのように解決しますか / そのような問題は通常どのように解決されますか?
artificial-intelligence - 遺伝的アルゴリズムによってトレーニングされている人工ニューラル ネットワークにバイアスを追加する必要がありますか?
私は人工草食動物を制御する ANN を持っています。入力は、最も近い植物の大きさと方向、最も近い仲間の大きさと方向、および草食動物の健康状態です。出力は移動ベクトル (方向と大きさ) です。遺伝的アルゴリズムによってトレーニングされている場合、バイアスを使用する必要がありますか?
algorithm - オペラントコンディショニングアルゴリズム?
エージェントにリアルタイムのオペラント条件付け (監視された報酬/罰ベースの学習) を実装する最良の方法は何ですか? ニューラル ネットワークを使用する必要がありますか (また、その種類は何ですか)? または、他の何か?
エージェントが犬のように命令に従うように訓練できるようにしたい. コマンドは、タッチスクリーン上のジェスチャの形式になります。エージェントが (連続する 2D 空間で) パスをたどり、コマンドで動作を変更し (FSM 状態遷移によってモデル化)、一連のアクションを実行できるようにエージェントをトレーニングできるようにしたいと考えています。
エージェントは、シミュレートされた物理環境にあります。
python - アリのコロニー シミュレーション - パスの最適化
簡単なアリのコロニー シミュレーションを構築しようとしています。世界は正方形のグリッドです。それらのそれぞれは、あるレベルのフェロモンと任意の数のアリで構成できます。フェロモンには、食物フェロモンと巣フェロモンの2種類があります。アリは環境について何も知りませんが、巣に戻ったアリは巣のフェロモンに従い (ほとんどの場合、近くのすべてのセルの中でフェロモン レベルが最大のセルに移動することを選択するという意味で)、食物フェロモンを残します。
時折、アリは最大のフェロモンの方向ではなくランダムな動きをします。シミュレーションの各ティックで、アリは 8 つの近くのセルのフェロモンのレベルをチェックし、現在のセルのフェロモン レベルがすべての近くのセルのフェロモン レベルの最大値よりも低い場合、いくつかのフェロモンを追加します。
現在のシミュレーションはうまく機能していますが、見つかったパスは最適なものではありません。解決方法がわからない2つの問題があります。
- 対角線の移動が非対角線の移動よりも長いという事実をシミュレートするにはどうすればよいですか (上、下、左、または右)?
- フェロモンの拡散をどのようにシミュレートすればよいですか? 現在、フェロモンは時間の経過とともに蒸発しますが、拡散はありません。シミュレーションの各ティックごとに、各セルから一定量のフェロモンを近くの 8 つのセルに転送しようとしましたが、結果は完全に混乱しました。環境全体がフェロモンでいっぱいでした。メカニズムが原因だったと思います。アリはフェロモンレベルを調整するために使用します。
python - ニューラルネットワークによる人工生命
ニューラル ネットワークによって制御されるエージェントの単純な進化シミュレーションを構築しようとしています。現在のバージョンでは、各エージェントに 1 つの隠れ層を持つフィードフォワード ニューラル ネットワークがあります。環境には、赤い点で表される一定量の食物が含まれています。エージェントは移動するとエネルギーを失い、食べ物の近くにいるとエネルギーを獲得します。エネルギーが0のエージェントは死ぬ。ニューラルネットの入力は、エージェントの現在の角度と、最も近い食べ物へのベクトルです。時間ステップごとに、各エージェントの移動角度は、そのニューラル ネットワークの出力によって変更されます。もちろん、その目的は、しばらくして食物を求める行動が進化するのを見ることです. しかし、何も起こりません。
問題はニューラルネットの構造(単純すぎる?)なのか、繁殖の仕組みなのかはわかりませんが、人口爆発を防ぐため、初期人口は20エージェント程度で、人口が50近くになると再生産のチャンスが近づいてきます。ゼロ。生殖が発生すると、エージェントのリストを最初から最後まで調べて、0 から 1 までの乱数がこのエージェントのエネルギーとすべてのエージェントのエネルギー。その場合、検索は終了し、このエージェントは親になります。このエージェントのコピーを環境に追加すると、ニューラル ネットワークの 1 つまたは複数の重みにある程度の確率で突然変異が生じます。
前もって感謝します!
python - Pythonのオブジェクトに関数を適用する
人工生命シミュレーションを書きました。各クリーチャーは、私が定義したクラス「動物」のオブジェクトであり、いくつかのプロパティがあります。Animalクラスの外部で関数「reproduce」を定義しました。
ご覧のとおり、各動物には異なるクラスのオブジェクトである脳があります。私が定義した動物ごとにanimals[i].brain = Brain()
。再生機能の「変異」部分は、子供の脳が親の脳と同一でないことを保証します。
ただし、問題は、リストの一部の動物にこの関数を適用すると、子供は実際にわずかに新しい脳を取得しますが、親の脳は子供の新しい脳と同じになるということです。reproduce(copy.deepcopy(animals[i]))
代わりに使用するとreproduce(animals[i])
発生しません。理由は何ですか?
ありがとう!
python - ニューラルネットワークの入力で人工生命シミュレーションに最も近いオブジェクトを入力するにはどうすればよいですか?
私は、Pybrain を使用して Python と Pygame で人工生命シミュレーションに取り組み始めたばかりです (再び... もう 1 つを失いました)。これがどのように機能するかを計画しています。これまでのところ、「食物ペレット」のある環境があります。食品ペレットは毎分追加されます。私はエージェント (別名「クリーチャー」) をまだ作成していませんが、いくつかの入力を備えた単純なフィード フォワード ニューラル ネットワークが必要であることはわかっています。出力はその動きになります。入力が目の前にあるものを表示するようにしたいのです。目の前にシミュレートされた世界を見ているようなものです。これについてどうすればよいですか?私は、実際に視線の色を「見る」か、最も近いオブジェクトを NN に入力することを望んでいます。どちらが最適で、どのように実装しますか?