我希望每次在NetLogo中创建景观时都能获得相同的格局。为此,我用了
random-seed 0
create-landscape
当我创建景观时,每次保持相同的道路配置(下图中以白色表示)时,它都有效:
图1:
但是,当我更改道路配置时,使用random-seed 0
,蓝色,黑色和红色块的位置会有所不同(见下图)。
图2:
图3:
对于图2和图3,我正在寻找获得与图1相同的蓝色,黑色和红色块位置的方法。 道路是使用Traffic Grid建造的。为了构建我的风景,我第一次创建了道路网格,然后,我随机地放置了黑色,蓝色和红色块。
非常感谢你的帮助。
答案 0 :(得分:2)
道路网络生成代码中的某些内容会影响随机数生成器的状态。它可以是很多东西。例如,即使是简单的ask
也会使用随机性(以随机顺序迭代代理)。请参阅the section on random numbers in the programming guide。
可能有几种不同的方法可以解决这个问题,但我建议使用with-local-randomness
来隔离创建块的代码并让它使用自己的随机数生成器。类似的东西:
to create-landscapes
create-roads
with-local-randomness [
random-seed 0
create-blocks
]
end
答案 1 :(得分:0)
也许先将风景画成......然后覆盖道路。这也可以简化横向代码,因为您的代码不必担心覆盖道路。
此外,也许是时候从仅使用颜色毕业了。也许补丁需要像“is-road”这样的变量。而另一个像“土地使用”......分别填写这些变量。然后,这只是你显示信息的问题,例如:
ask patches
[ ifelse is-road?
[ set pcolor white ]
[ set pcolor item land-use land-use-colors ]
]