Netlogo随机补丁程序设置,完全不接触

Netlogo随机补丁程序设置,完全不接触,netlogo,Netlogo,我正在尝试设置完全没有角接触的随机面片,这些面片的颜色是不同的绿色(在视觉上表示模型中具有随机质量值的每个面片)。我在概念上的想法是如何做到这一点,让我的“ifelse”语句中的“false”部分基本上告诉程序,如果有另一个补丁接触到补丁的任何部分,则继续尝试将补丁分配到不同的位置,直到所有补丁都有一个没有其他补丁接触到它的位置(包括角)。我只是不知道这是否可能,或者什么代码可以做到这一点。是否存在与“直到”等效的netlogo原语?任何帮助或想法都将不胜感激! 以下是我代码的一部分: patc

我正在尝试设置完全没有角接触的随机面片,这些面片的颜色是不同的绿色(在视觉上表示模型中具有随机质量值的每个面片)。我在概念上的想法是如何做到这一点,让我的“ifelse”语句中的“false”部分基本上告诉程序,如果有另一个补丁接触到补丁的任何部分,则继续尝试将补丁分配到不同的位置,直到所有补丁都有一个没有其他补丁接触到它的位置(包括角)。我只是不知道这是否可能,或者什么代码可以做到这一点。是否存在与“直到”等效的netlogo原语?任何帮助或想法都将不胜感激! 以下是我代码的一部分:

patches-own [ quality ]

to setup
  clear-all
  setup-patches
  setup-turtles
  reset-ticks
end

to setup-patches
  ask n-of number-of-patches patches 
  [ ifelse sum [ pcolor ] of neighbors = 0
    [ set quality random (2 + random 8)
      set pcolor scale-color green quality 0 10
    ]
    [ set pcolor black ; this is the line I need to change
    ]
  ]
end

查看NetLogo字典中的原语
while
邻居。我不完全清楚您希望在代码中使用的顺序,因此无法提供完整的答案。但是,您需要以下内容:

 while any? neighbors [(however you define the ones you don't want to touch]
 [(try again)
 ]

请注意,
补丁
始终接触其他
补丁
,因为世界是由
补丁
构成的网格。因此,您可能希望具有特定条件(例如高质量值)的
修补程序不相互接触。

请查看NetLogo字典中的
邻居
时的原语
。我不完全清楚您希望在代码中使用的顺序,因此无法提供完整的答案。但是,您需要以下内容:

 while any? neighbors [(however you define the ones you don't want to touch]
 [(try again)
 ]

请注意,
补丁
始终接触其他
补丁
,因为世界是由
补丁
构成的网格。因此,您可能希望具有特定条件(例如高质量值)的
修补程序不相互接触。

正如JenB所说,修补程序总是接触其他修补程序,因此我假设问题是“如何生成不接触任何其他绿色修补程序的修补程序的数量?”。然后我会这样做:

to setup-patches
  while [ count patches with [ shade-of? green pcolor ] < number-of-patches ]
  [ ask one-of patches with [ quality = 0 and count neighbors with [ shade-of? green pcolor ] = 0 ]
    [ set quality random (2 + random 8)
      set pcolor scale-color green quality 0 10 ] ]
end
以设置修补程序
而[用[绿色的阴影]<斑块数量]计算斑块数]
[询问[quality=0的一个补丁,并计算[shade of?green pcolor]=0的邻居]
[设置质量随机(2+随机8)
设置P颜色比例颜色绿色质量0 10]]
结束

基本上,虽然绿色斑块的数量小于所需的绿色斑块数量,但请选择一个非绿色且没有任何绿色邻居的斑块。然后将其变为绿色。

正如JenB所说,补丁总是接触其他补丁,因此我假设问题是“如何生成不接触任何其他绿色补丁的补丁数量?”。然后我会这样做:

to setup-patches
  while [ count patches with [ shade-of? green pcolor ] < number-of-patches ]
  [ ask one-of patches with [ quality = 0 and count neighbors with [ shade-of? green pcolor ] = 0 ]
    [ set quality random (2 + random 8)
      set pcolor scale-color green quality 0 10 ] ]
end
以设置修补程序
而[用[绿色的阴影]<斑块数量]计算斑块数]
[询问[quality=0的一个补丁,并计算[shade of?green pcolor]=0的邻居]
[设置质量随机(2+随机8)
设置P颜色比例颜色绿色质量0 10]]
结束

基本上,虽然绿色斑块的数量小于所需的绿色斑块数量,但请选择一个非绿色且没有任何绿色邻居的斑块。然后将其变为绿色。

请不要使用文字处理器复制编程代码,它会将文字大写并引入空行。此外,当您在问题上附加标签时,请检查您看到的定义,以确保标签(如“补丁”)的使用方式符合您的意思。我已经澄清了你的问题。请不要使用文字处理器复制编程代码,它会将文字大写并引入空行。此外,当您在问题上附加标签时,请检查您看到的定义,以确保标签(如“补丁”)的使用方式符合您的意思。我已经澄清了你的问题。