如何在某些条件下识别邻居

Posted

技术标签:

【中文标题】如何在某些条件下识别邻居【英文标题】:How to identify neighbors with some conditions 【发布时间】:2021-10-16 19:34:46 【问题描述】:

我正在尝试建立一个连接海龟的玩具模型。每只海龟都有一个随机信念[0,1],我想实现一些条件:

如果是乌龟的信念 > .5,乌龟什么都不做。 如果它是一只信念 .5,那么他们的新信念(信念 如果信念 .5 的直接邻居,则海龟不会做任何事情。

基本设置:

turtles-own [belief]

to setup
  ca
  reset-ticks
  crt 5 [
   set shape "person"
   layout-circle turtles 5
   set belief random-float 1
   ]

ask turtles [ create-links-with min-n-of 2 other turtles [distance myself] ]

end

这将创建一个 5 海龟循环网络。现在他们必须检查他们(两个)最近邻居的信念。我试过这个:

to go

ask turtles with [one-of link-neighbors with [belief > .5]] [

set belief belief + .1
]

end

因此,基本思想是,每只具有连接邻居且信念 > .5 的乌龟都必须将 0.1 添加到自己的信念中。我尝试了ask turtles with 行的几种变体,但它总是向我显示此类运行时错误: WITH 预期来自 (turtle 0) 的真/假值,但得到了 (turtle 2)。有任何想法吗?提前谢谢你。

【问题讨论】:

【参考方案1】:

one-of 返回一个代理。在这种情况下,它不适合使用 with 评估条件 - 条件不完整,因为 ask turtles with [one-of link-neighbors with [belief > .5]] 行(大致)转换为“让条件为 turtle x 的海龟做某事”。

我认为您所追求的是使用count 来计算相信turtlesany? 的数量以评估是否存在代理集:

to go-1
  ask turtles with [ (count link-neighbors with [belief > 0.5]) > 0 ] [
    set belief belief + 0.1
  ]
end

to go-2
  ask turtles with [ any? link-neighbors with [ belief > 0.5 ] ] [
    set belief belief + 0.1
  ]  
end

【讨论】:

很好,any? link-neighbors with 按预期工作!非常感谢!

以上是关于如何在某些条件下识别邻居的主要内容,如果未能解决你的问题,请参考以下文章

如何在某些条件下添加 0 行?

如何在给定的前提条件下仅删除某些字符

如何在reactJs中的数组内部条件下禁用某些单选按钮

基于OpenCV修复表格缺失的轮廓--如何识别和修复表格识别中的虚线

如何在某些匹配条件下 LEFT ANTI 加入

张量相对于元素邻居的条件值