如何在netlogo中创建链接并让链接邻居根据链接长度执行命令?

时间:2016-05-11 14:56:37

标签: netlogo

我一直试图将BREED1(仍然)的海龟与来自BREED1邻居的品种2(移动)的海龟联系起来。我想这样做是为了根据BREED1和breed2之间的链接长度来改变变量。 (你可以说BREED1代表房子,而品种2代表人,我想改变这样一个事实:人们是否受到“保护”,根据他们与房子隔开的距离(BREED1与他们联系)) 我不知道这是否是最好的方法,但这是我的代码,我知道它不起作用,因为默认情况下“protected”变量总是为假。

to protect
ask n-of total-number-BREED1 BREED1
  [ if any? breed2-on neighbors
    [ create-link-with [who] of breed2-on neighbors]
  ask link-neighbors
    [ set protected true]
  ]

我还想添加一个关于链接长度的部分

ask link-neighbors
  [ ifelse link-length < 2
    [set protected true]
    [set protected false]]

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

尝试使用相邻补丁创建与品种2相关的链接:

ask BREED1
  [ 
    if any? breed2-on neighbors [ create-links-with breed2-on neighbors]
     ask link-neighbors [ set protected true]
  ]

这就得到了品种1和它的邻居之间的链接长度

ask BREED1
[
   ask link-neighbors
    [
        if [link-length] of link-with myself < 2 [ do something]
    ]  
]

注意:从链接的角度调用链接长度,因此您需要获取连接两个内容的链接。