Netlogo:相同的补丁集群,相同的命令,但结果不同

时间:2018-06-05 03:55:28

标签: netlogo

我正在进行城市模拟,其中补丁颜色代表土地使用。我从这张照片中显示的状态开始:

enter image description here

然后我运行以下命令:

to eliminate-isolated-patches
ask patches with [pcolor = 74] [if (count neighbors with [pcolor = 74] <= 2)
[set pcolor black
 ask neighbors with [pcolor = 74] [set pcolor black]]]
end

虽然模型以相同的补丁分布开始并且应用了相同的命令,但它会输出不同的结果。有时这是结果: enter image description here

其他时候这是结果: enter image description here

可以看出,存在变化。所以我有两个问题:

1)如果初始状态和命令相同,为什么会发生这种情况?

2)可以做些什么来始终获得相同的结果?

(注意:蓝色和粉红色的线条是GIS图层)

由于

1 个答案:

答案 0 :(得分:3)

世界的初始状态是相同的,但只要一个补丁在ask区块内变黑,该状态就会发生变化。由于ask以随机顺序运行,因此第一个变为黑色的补丁并不总是相同。

您的问题是,您检查<{1}}块中相同颜色的邻居数量,其中该状态不稳定。解决方案可能是在开始搞乱补丁状态之前进行检查。您可以通过移动ask块内的检查来执行此操作:

with

请注意,此版本(就像您之前的版本一样)可能仍会留下一些“隔离”的补丁,因为它们只会在邻居变黑后才会被隔离。如果这是一个问题,您可能希望将整个事件放在to eliminate-isolated-patches ask patches with [ pcolor = 74 and (count neighbors with [ pcolor = 74 ] <= 2) ] [ set pcolor black ask neighbors with [ pcolor = 74 ] [ set pcolor black ] ] end 循环中,直到while稳定为止。如果你想这样做并遇到麻烦,我建议你再问一个问题。