2017-03-24 17 views
0

私はNetLogoで新しく、これはあまりにも明白な質問かもしれませんが、私がやっていることが正しいかどうかをテストする方法は分かりません。NetLogo:距離照会エージェント

私はbreed2(ワニ)との距離に基づいてbreed1(カメ)のエージェントを選択しています。私はワニの周りのものからランダムに1頭のカメを選ぶことを望んでいますが、選ぶ可能性が高いほどカメは近くにあります。したがって、私はrndの拡張と距離のコマンドを使用しています。

distanceコマンドは、右エージェント(ワニやカメの間すなわち距離)を参照している場合は私の質問は次のとおりです。

ask crocodiles [ 
    let potential_preys turtles in-radius max_distance 
    let selected_prey rnd:weighted-one-of potential_preys [ (1 - (distance ?/max_distance)) ]   
    ask selected_prey [  
    scape 
    ] 
] 

答えて

1

私はあなたの質問に入る前に、私はあなたに気づいた別の問題がありますコード。

これまで私はこのことを認識していませんでしたが、NetLogoのセマンティクスは実際のカメをモデル化するのが難しいことになります。 (少なくとも他の品種が含まれている場合)

私がこれを意味するのは、turtlesは、その品種に関係なく、モデルのすべてのカメを指しています。それはあなたの場合には、crocodilesturtlesに含まれている、ということを意味するので、あなたが言うとき:

let potential_preys turtles in-radius max_distance 

...ワニが潜在的な獲物に含めることができます!この周りを取得

はいえ、十分に簡単です:ちょうどあなたのモデルでは、実際のカメを表す品種、例えばのための別の名前を選択します。

breed [ tortoises tortoise ] 

をそして、あなたは書くことができます:

let potential_preys tortoises in-radius max_distance 

そして今、distanceに関するあなたの質問のために、私はあなたが望むものがmyselfへの距離であると思います。ここでmyselfはその獲物を選んでいるワニです。 プリミティブは、ブロックを使用するブロックの「外部」コンテキストのエージェント、つまり「呼び出し元」エージェントを指します。

これはあなたのような何か与える:とにかく、それは、私の品種の実際の名前例ではありませんでした

let selected_prey rnd:weighted-one-of potential_preys [ 
    1 - (distance myself/max_distance) 
] 
0

ハハ、私は...確かに、カメの詳細について^^ を考えていなかったがだから問題はないが、気づいてくれてありがとう!質問自体について

、私はまた、myselfがそうなると思うので、私はこのようにそれを維持するが、今より高い信頼を持つでしょう:D

感謝ニコラス!