我在我的模型中建模扩散,但我认为由于NetLogo按顺序更新单个补丁,我得到了一个计算工件。我不会使用漫反射命令(由于扩散不准确)。但是,就像这个命令的工作原理一样,我想同时更新补丁的所有计算,而不是顺序更新。我有一点点回忆,看到一些示例代码在 tick 的开头使用了值,但我现在似乎无法找到它。
具体来说,我需要帮助编写一种方法来在每个刻度的转折处存储补丁值,然后根据这些存储的值执行同步计算。
答案 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
这样所有补丁都会从相同的信息中计算出更新的值,然后实际同时更新这些值。