首页 > 解决方案 > Netlogo:设置相互之间具有特定距离的pcolor色块

问题描述

我正在尝试为不同的补丁设置 pcolor orange 。我希望它们是随机创建的,但彼此之间始终保持 R 的距离。在当前的代码中,它随机创建补丁就好了,但如果橙色补丁在半径范围内,它会简单地删除它们,导致少于 N 个橙色补丁。我该如何解决这个问题,以便在距离 R 处创建所有 N 个补丁,而不仅仅是随机落在彼此半径 R 之外的补丁?

      ask n-of N patches
      [ 
        if not any? other patches with [pcolor = orange] in-radius R [
    set pcolor orange
    ]]

标签: netlogo

解决方案


您非常接近,但是询问N随机补丁可能会导致任意数量的橙色补丁,也许一个补丁会被着色,而其他随机N-1补丁将在半径范围内R,即使有很多补丁仍然可以着色。也许如果你问所有的补丁你会得到更一致的结果,

ask patches
[
  if not any? other patches with [pcolor = orange] in-radius R 
     and count patches with [pcolor = orange] < N
  [
    set pcolor orange
  ]
]

如果您希望所有可能的补丁都着色,而不仅仅是N您可以删除(或注释)整行and count patches with [pcolor = orange] < N

另请注意,ask patches它将随机迭代补丁,因此如果您需要补丁的可重复或有序着色,这不是理想的方法。


推荐阅读