私はdiffuseキーワードで遊んでいます。Netlogo Diffusion Confusion
左下に3つの化学勾配があり、他の場所には化学薬品がない場合、次の3x3の世界を考えてみましょう。また、端に折り返しがありません。私は0.5の拡散速度を持っている場合は
[3 0 0 ]
[0 0 0 ]
[0 0 0 ]
は、私は、勾配の3 (gradient) * .5 (diffusion rate)/3 (#neighbors) = .5
は、その3人の隣人に与えられるであろうことを期待します。元のパッチには1.5ユニットが残っていると思います。
ただし、拡散コードを実行すると、グラデーションの3 (gradient) * .5 (diffusion rate)/8 (#neighbors) = .1875
が3近傍に設定されているようです。元のパッチは2.4375の残りの単位を持ち、元の勾配の0.5ではありません。何が起きてる?これはエラーですか、私の理解は間違っていますか?
以下を参照してください:あなたのコードに対する一つの迅速な編集を使用すると、3の値を持つように左上のパッチをしたい場合、あなたはパッチ0 2を依頼する必要がある
patches-own [value]
to setup
cp
ask patch 0 2 [ set value 3]
diffuse value .5
ask patch 1 1 [ show value]
end
observer: show [value] of patches
observer: [0.1875 0.1875 0 2.4375 0 0 0 0.1875 0]
observer> ask patch 0 2 [ show count neighbors]
(patch 0 2): 3
これは、拡散率が、実際の拡散量ではなく、より多くの拡散を意味することを意味する。残念ながら、建物を通って煙をモデリングしているので、私は自分自身の拡散を実装する必要があります(煙は壁を通過できません)。私はちょうど内蔵の拡散で私のモデルを検証していた。また、「パッチに8人以下の人がいる場合、各隣人にはまだ8人のシェアが割り当てられ、パッチには残りのシェアが保持されます」 ccl.northwestern.edu/netlogo/docs/dictionary.html#diffuseこれはちょうど私にとって奇妙なようです。誰もがこの意思決定の背後にある論理を知っていますか? – mattsap
ここでは簡単な拡散を誤解しているかもしれませんが、「粒子」が無作為に動き、「壁」を通って周囲のパッチ(潜在的に8つ)に拡散するパッシブ拡散のように拡散が設定されているかもしれません。あなたの変数が与えられた壁を通って拡散する割合を本質的に設定したからです。 [this](https://imgur.com/a/Kzko5)のようなものですが、8辺がありますか?明らかに、私はここにたわごとですが、今私は興味があります。 –
同じ火災が2つの場所にある場合 - 壁のあるものとないもの - 実際には何が起こるのですか? NetLogoは、エスケープできない場合はそのままとします。私は煙(おそらく)すべての方向に行くしようとするため、これは悪い仮定ではないと確信していません。つまり、それが北にブロックされている場合、それは回って南に行くことはありませんが、それはちょうど北の壁に押し付けられたままです。もちろん、差圧のために煙が特別な場合もあります。 – JenB