如何在某些条件下识别邻居
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
来计算相信turtles
或any?
的数量以评估是否存在代理集:
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
按预期工作!非常感谢!以上是关于如何在某些条件下识别邻居的主要内容,如果未能解决你的问题,请参考以下文章