【问题标题】:NetLogo two agentsets operationsNetLogo 两个代理集操作
【发布时间】:2011-12-08 02:49:35
【问题描述】:

我有两个代理集。是否有查找功能:

  1. 存在于两个(交叉点)中的代理的代理集
  2. 存在于一个中而不存在于另一个中的一组代理

我发现手动实现这一点非常困难,尤其是在三元组ask 中需要它时

理想用法类似于with 语法:

let cross set1 and-in set2
let uniq set1 with [color = red] not-in set2

诸如“代理 A 在代理集 X 中吗?”之类的简单问题。有问题

【问题讨论】:

    标签: intersection netlogo


    【解决方案1】:

    对于第一个,您使用turtle-set 原语。对于第二个,您需要member? 原语,它也适用于代理集。因此:

    to setup
      ca
      create-turtles 10 [set color red]
      create-turtles 10 [set color blue]
      let red-ones turtles with [color = red]
      let blue-ones turtles with [color = blue]
    
      ;join 2 agent sets
      let joinset (turtle-set red-ones blue-ones)
      show joinset
    
      let even-ones (turtles with [who mod 2 = 0])
      ;subtract even-ones from red-ones
      let subtractset red-ones with [not member? self even-ones]
      show subtractset
    end
    

    【讨论】:

    • 我没有意识到[with] 可以接收“记者”。我的第一个问题是找到一个交集,而不是一个联合,但是看到你对第二个问题的回答我猜它就像red-ones with [member? self even-ones] 一样简单。谢谢!
    • 谢谢。我有同样的问题,但没有意识到可以在with 构造中使用self。起初我尝试?,但收到一条错误消息,然后对如何继续没有其他想法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    相关资源
    最近更新 更多