2016-05-18 2 views
0

Netlogoでボックスバインドの世界があり、私の亀は私が望むやり方で動いていますが、壁にはまってしまいます。すべてのカメが壁に面して動かなくなるまで、バックボーンとしてのFlockingモデル)。私はGoにwall_jumpを含めようとしましたが、壁に向かって余りにも多くの群れがいたら、それは助けにならないので、別のブロックを壁に跳ね返るように呼び掛けますが、何の効果もないようです。問題全体を再現したい場合は、フロッキングモデルを開き、世界境界を閉じます。netlogoで世界の境界線から亀を跳ね返す方法を教えてください

他の人がこの問題をどのように解決しましたか?

to wall_jump 
    ifelse any? flockmates 
    [ 
    if ycor >= max-pycor * 0.95 [set heading (random-normal 180 2)] 
    if xcor >= max-pxcor * 0.95 [set heading (random-normal 270 2)] 
    if xcor <= min-pxcor * 0.95 [set heading (random-normal 90 2)]   
    if ycor <= min-pycor * 0.95 [set heading (random-normal 0 2)]   
    ] 

    [if ycor >= max-pycor * 0.95 [set heading (random-normal 180 2)] 
    if xcor >= max-pxcor * 0.95 [set heading (random-normal 270 2)] 
    if xcor <= min-pxcor * 0.95 [set heading (random-normal 90 2)]   
    if ycor <= min-pycor * 0.95 [set heading (random-normal 0 2)]   
    ] 
    end 
+0

if文とelse文の違いは何ですか? – mattsap

+0

flockmatesは私がこれをベースにしている "群れ"モデルからの持ち越しで、それはカメが所有しています。基本的に彼らは群れとして彼らの近くにいるカメを特定し、その群の平均的な見出しに基づいて新しい見出しを決定します。そのifelseの声明では、基本的に、あなたが近くの仲間を持っているかどうかを言うことでしたが、あなたが壁に突き当たっているので同じように新しい見出しを決定していました。しかし、うまくいきません。 – Jesse001

答えて

2

この問題は、(NetLogoモデルライブラリ内の)ランダム玉モデルで解決されています直接あなたの問題に関連していない http://ccl.northwestern.edu/netlogo/models/RandomBalls

が、あなたが見に興味深いだけでなく、それを見つけるかもしれないようです壁クラスタリング(臆病モード)を生成するヒーローズモデルと臆病モデル: http://ccl.northwestern.edu/netlogo/models/HeroesandCowards

+0

アランに向いてくれてありがとう。私は自分のモデルをソリューションの要件に合わせて調整しました。単にabsを設定するだけでした。abs pxcor = max-pxcor [セット見出し( - 見出し)] abs pycor = max-pycor [set heading - heading)] ' あなたの原点が中央にある場合(鉱山が角にあった場合)にのみ動作します。私は誰かがそれを必要としたら私が共有することができる副次的な機能を介して左端にスポーンするように私のカメに言った – Jesse001

関連する問題