如何使用不同的道路网格获得相同的景观?

时间:2014-08-17 16:50:51

标签: random netlogo

我希望每次在NetLogo中创建景观时都能获得相同的格局。为此,我用了

random-seed 0
create-landscape

当我创建景观时,每次保持相同的道路配置(下图中以白色表示)时,它都有效:

图1:

enter image description here

但是,当我更改道路配置时,使用random-seed 0,蓝色,黑色和红色块的位置会有所不同(见下图)。

图2:

enter image description here

图3:

enter image description here

对于图2和图3,我正在寻找获得与图1相同的蓝色,黑色和红色块位置的方法。 道路是使用Traffic Grid建造的。为了构建我的风景,我第一次创建了道路网格,然后,我随机地放置了黑色,蓝色和红色块。

非常感谢你的帮助。

2 个答案:

答案 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 ]
]