我正在进行城市模拟,其中补丁颜色代表土地使用。我从这张照片中显示的状态开始:
然后我运行以下命令:
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
虽然模型以相同的补丁分布开始并且应用了相同的命令,但它会输出不同的结果。有时这是结果:
可以看出,存在变化。所以我有两个问题:
1)如果初始状态和命令相同,为什么会发生这种情况?
2)可以做些什么来始终获得相同的结果?
(注意:蓝色和粉红色的线条是GIS图层)
由于
答案 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
稳定为止。如果你想这样做并遇到麻烦,我建议你再问一个问题。