如何避免单个补丁更新

时间:2014-09-22 14:42:46

标签: netlogo

我在我的模型中建模扩散,但我认为由于NetLogo按顺序更新单个补丁,我得到了一个计算工件。我不会使用漫反射命令(由于扩散不准确)。但是,就像这个命令的工作原理一样,我想同时更新补丁的所有计算,而不是顺序更新。我有一点点回忆,看到一些示例代码在 tick 的开头使用了值,但我现在似乎无法找到它。

具体来说,我需要帮助编写一种方法来在每个刻度的转折处存储补丁值,然后根据这些存储的值执行同步计算。

1 个答案:

答案 0 :(得分:2)

好问题。如您所示,基本上您希望在一个ask块中计算变量的新值,但将其存储在单独的变量中,然后在第二个ask块中更新变量的实际值,像这样:

turtles-own [
  value
  new-value
]

...
to go
  ask patches [
    ;; Change this line to however you want the diffusion to work
    set new-value 0.5 * value + sum [  0.5 * value / 4 ] of neighbors4
  ]
  ask patches [
    set value new-value
  ]
end

这样所有补丁都会从相同的信息中计算出更新的值,然后实际同时更新这些值。