我在这里看到如何创建两个代理集的交集或联合,但是我想说代理集a中的任何海龟是否在代理集b中,返回true。我在尝试
ifelse (member? (one-of my-intersections) destination-intersections)
但我很确定这只是测试我的交叉点中的一个元素是否在目标-Intersections中而不是测试每个元素。有没有办法使用每个?还是有其他我不知道的功能?
同样,我已经引用了
NetLogo two agentsets operations
谢谢!
答案 0 :(得分:1)
编写此类测试的最简单方法是:
to-report test [ as bs ]
report any? as with [ member? self bs ]
end
试一试:
create-turtles 5
show test (turtle-set turtle 0 turtle 1 turtle 2) (turtle-set turtle 3 turtle 4)
show test (turtle-set turtle 0 turtle 1 turtle 2) (turtle-set turtle 0 turtle 3 turtle 4)
将显示:
observer: false
observer: true
然而,这不是最有效的方法,因为 with
子句构建了一个并非真正需要的中间代理集。
更快的测试将是:
to-report test [ as bs ]
let result false
ask as [
if member? self bs [
set result true
stop
]
]
report result
end
修改强>
我讲的太快了。根据{{3}},any?
和with
的组合会得到优化以提前退出。底线:您应该使用第一个版本(即any? as with [ member? self bs ]
)。