【问题标题】: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)。有任何想法吗?提前谢谢你。

【问题讨论】:

    标签: netlogo social-networking


    【解决方案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 按预期工作!非常感谢!
    猜你喜欢
    • 2018-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 2021-03-18
    • 2017-05-01
    • 2022-01-02
    相关资源
    最近更新 更多