Netlogo扩散混乱

时间:2017-06-09 14:26:48

标签: netlogo

我一直在玩diffuse关键字。

考虑以下3x3世界,左上角有3个化学梯度,其他地方没有化学物质。此外,边缘没有包裹。

[3  0  0 ]
[0  0  0 ]
[0  0  0 ]

如果我的扩散率为.5,我希望渐变的3 (gradient) * .5 (diffusion rate) / 3 (#neighbors) = .5将给予其3个邻居。我还希望原来的补丁还剩1.5个单位。

然而,当我运行漫反射代码时,似乎渐变的3 (gradient) * .5 (diffusion rate) / 8 (#neighbors) = .1875被设置为3个邻居。然后原始补丁具有2.4375个剩余单位,其不是原始梯度的.5。这里发生了什么?这是错误还是我的理解不正确?

见下文:

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

1 个答案:

答案 0 :(得分:1)

对代码进行一次快速编辑是,如果您希望左上角的补丁值为3,则需要询问补丁0 2.您当前正在询问右下角的补丁。

现在,你的问题来自这样一个事实:当你进行漫反射时,它试图将1.5个值分散到8个补丁上,给每个相邻的补丁0.1875。由于您的起始补丁位于一个角落,因此只能分散在3个补丁中,并且只能提供0.5625(3 * .1825)。

这使原始补丁保留为2.4375。

请注意,如果允许环游世界,你会得到预期的结果。