Netlogo 条件网络邻居

Netlogo 条件网络邻居,netlogo,Netlogo,我想选择通过链接属性过滤的网络邻居,而不是海龟属性。例如,这可能是根据友谊链接上的强度分数仅选择最亲密的朋友。我可以通过为亲密的朋友提供不同的链接品种来做到这一点,但这需要不断地改变品种,因为条件是或不是必需的 下面是一个布尔条件的示例 links-own [flag?] to testme clear-all ask patches [set pcolor white] create-turtles 20 [ setxy 0.95 * random-xcor 0.95 * r

我想选择通过
链接
属性过滤的网络邻居,而不是
海龟
属性。例如,这可能是根据友谊链接上的强度分数仅选择最亲密的朋友。我可以通过为亲密的朋友提供不同的
链接
品种
来做到这一点,但这需要不断地改变品种,因为条件是或不是必需的

下面是一个布尔条件的示例

links-own [flag?]

to testme
  clear-all
  ask patches [set pcolor white]
  create-turtles 20
  [ setxy 0.95 * random-xcor 0.95 * random-ycor
    set color black
  ]
  ask n-of 3 turtles [set color red]
  repeat 40
  [ ask one-of turtles
    [ create-link-with one-of other turtles
      [ set flag? random-float 1 < 0.4
        set color ifelse-value flag? [red] [gray]
      ]
    ]    
  ]
;  colour-neighbours
  colour-neighbours2
end

to colour-neighbours
  ask turtles with [color = red ]
  [ ask my-links with [flag?]
    [ ask other-end [ set color blue ]
    ]
  ]
end

to colour-neighbours2
  ask turtles with [color = red ]
  [ ask turtle-set [ other-end ] of my-links with [flag?]
    [ set color blue ]
  ]
end
链接拥有[标志?]
考验我
清除所有
询问补丁[设置pcolor白色]
创造海龟20
[setxy 0.95*随机xcor 0.95*随机ycor
将颜色设置为黑色
]
询问3只海龟中的n只[设置红色]
重复40次
问一只海龟
[创建与其他海龟之一的链接
[设置标志?随机浮动1<0.4
设置颜色ifelse值标志?[红色][灰色]
]
]    
]
;  彩色邻居
彩色邻居2
结束
给邻居涂颜色
问海龟[颜色=红色]
[询问我与[旗帜?]的链接]
[询问另一端[设置蓝色]
]
]
结束
给邻居涂颜色
问海龟[颜色=红色]
[询问海龟设置我与[旗帜?]的链接的[另一端]
[设置颜色为蓝色]
]
结束
我目前正在做与颜色邻居相当的工作,但这涉及到几个方面。彩色邻居2版本在概念上更接近,因为它直接指的是网络邻居。但是,由于的
,我得到了一个邻居列表,然后我必须将其转换为代理集

这是为了教学,虽然两者都起作用,但与带有
链接邻居
原语的无条件网络邻居相比,它们似乎非常复杂。也就是说,如果我不关心标志,我可以简单地说
询问链接邻居[set color blue]


有没有一种更直接的方法可以根据链接属性识别网络邻居?

您已经介绍了大多数可能性。另一种方法是:

to colour-neighbours3
  foreach [ other-end ] of my-links with [ flag? ] [ t ->
    ask t [ set color blue ]
  ]
end

我会避免使用
color-neighturs2
,因为正如您所说,它需要从列表转换为代理集。我认为,您是否应该使用
颜色邻居
颜色邻居3
是个人偏好的问题。

只是为了添加一个更复杂(更糟糕?)的选项,该选项使用代理集:

to colour-neighbours4
  ask turtles with [ color = red ] [
    let flag-links my-links with [flag?]
    ask link-neighbors with [ any? my-links with [ member? self flag-links ] ] [ 
      set color blue 
    ]
  ]  
end

我不确定是否要感谢你的帮助,我很肯定学生们会因为
foreach
和匿名函数而脑残。但至少我确信我没有错过一个简单的方法。@JenB我认为这是实现结果的最网络化的方法查看代理集选项很好,但我认为你是对的,因为它引入了
成员?