Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NetLogo中的空间自相关_Netlogo_Patch - Fatal编程技术网

NetLogo中的空间自相关

NetLogo中的空间自相关,netlogo,patch,Netlogo,Patch,有没有直接的方法来调整三种不同面片颜色的空间自相关性?我试图控制红色斑块的数量和空间自相关程度(相同颜色斑块之间的距离)。我可以控制红色斑块的比例,但不知道如何设置自相关 以下是我目前的代码: to setup-patches resize-world 0 15 0 15 set-patch-size 30 ask patches [ set pcolor one-of [ green brown ] ] ask patches [ let close-p

有没有直接的方法来调整三种不同面片颜色的空间自相关性?我试图控制红色斑块的数量和空间自相关程度(相同颜色斑块之间的距离)。我可以控制红色斑块的比例,但不知道如何设置自相关

以下是我目前的代码:

to setup-patches
  resize-world 0 15 0 15
  set-patch-size 30
  ask patches [
    set pcolor one-of [ green brown ]
  ]
    ask patches [
    let close-patches patches with [pcolor != red]

      ask  n-of ((proportion-red-plants * count patches) - count patches with [pcolor = red]) close-patches
      [set pcolor red]

    ]

end

比例红色植物是界面中的一个滑块

如果您知道AC为0意味着选择一个没有红色邻域的补丁,AC为1意味着选择任何红色补丁的邻域,那么所需的只是选择AC=1方法和给定概率,否则选择AC=0方法。这就是我所说的设计问题,在尝试编写这些步骤之前,您需要制定出所需的步骤

这几乎是一个解决方案。我没有费心去做一些事情,比如确保变红的补丁还没有变红,这样计数就不正确了

to setup
  clear-all
  let prop-red 0.1
  let AC 0
  ask one-of patches [set pcolor red]
  ask n-of (prop-red * count patches) patches
  [ ifelse random-float 1 < AC
    [ ask one-of patches with [ pcolor = red ]
      [ ask one-of neighbors [ set pcolor red ]
      ]
    ]
    [ let candidates patches with [not any? neighbors with [pcolor = red] ]
      if any? candidates
      [ ask one-of candidates [ set pcolor red ]
      ]
    ]
  ]
end
设置
清除所有
让道具红0.1
让AC为0
询问其中一个补丁[设置颜色为红色]
询问n个(道具红色*计数补丁)补丁
[ifelse随机浮动1
再次感谢JenB的帮助。这是我最后使用的代码,它被证明完成了任务(同时保持红色补丁的计数正确)

以设置修补程序
调整世界大小0 15 0 15
设置补丁大小为30
询问补丁[将pcolor设置为[绿棕色]之一]
让我们先修补其中一个修补程序
询问第一个补丁[设置颜色为红色]
重复(红色植物比例*计算斑块-1)[询问其中一个斑块[分配]]
结束
分派
ifelse随机浮点1
我怀疑这是一个模型设计问题,而不是编码问题。您需要制定出执行所需操作的步骤,然后我们可以帮助您编写每个步骤的代码。假设你想要一个特定的自相关值,如果你用手给一张纸着色,你会怎么做?好的,谢谢你帮我澄清。我想创建一个变量(例如,AC从0到1),这样随着AC的增加,红色斑块在空间上的自相关程度越高,在红色、绿色和棕色斑块的世界中。例如,AC为0意味着海龟不能从一个红色区域移动到另一个红色区域而不穿过不同的颜色区域。AC为1意味着海龟可以移动到世界上任何红色区域,而不必穿过不同的颜色区域。这是一个更好的描述吗?所以很清楚如何做第一个-AC为0,你真正的意思是没有红色斑块可以是任何红色斑块的邻居。AC为1时,每个红色贴片至少有一个红色贴片相邻,并且这些贴片都相互连接。你真的想要一个滑块来控制这两个吗?所以你不能有10%的面片是红色的,但它们都聚集在一起(AC=1),这是完全正确的,如果AC=0,没有红色面片可以是任何红色面片的邻居。。。我想要两个滑块,一个控制红色斑块的数量(在本例中为比例),另一个控制AC。我已经知道如何编码第一个滑块,但实现AC滑块是我遇到的麻烦。谢谢。这非常有用。我只需要找到一种方法来替换变红的补丁。干杯这并不总是会使足够多的补丁变红,因为您的
ask
可能会包含已经变红的补丁。要求
设置红色
的红色补丁不会增加红色补丁的数量,但会计入
重复
to setup-patches
 resize-world 0 15 0 15
 set-patch-size 30 
 ask patches [set pcolor one-of [green brown]]
 let first-patch one-of patches 
 ask first-patch [set pcolor red]
 repeat (proportion-red-plants * count patches - 1) [ask one-of patches [assign]]
end

to assign
 ifelse random-float 1 < AC
 [let candds patches with [any? (neighbors with [pcolor = red])]
   ask one-of candds [set pcolor red]]
 [ask one-of patches [set pcolor red]]
end