如何让NetLogo海龟与链接邻居的邻居创建符合规则的链接?
解决NetLogo中海龟与链接邻居的非重叠邻居创建链接的问题
完整代码实现
to go ask turtles [ make-friends ] end to make-friends ;; 收集所有链接邻居的邻居,转成集合去重 let potential-friends (turtle-set [link-neighbors] of link-neighbors) ;; 排除自身和已有链接邻居,得到符合条件的候选 set potential-friends difference potential-friends (turtle-set self link-neighbors) ;; 存在候选时,随机选一个创建链接 if any? potential-friends [ create-link-with one-of potential-friends ] end
代码逻辑说明
[link-neighbors] of link-neighbors:获取当前海龟所有链接邻居的邻居列表,用turtle-set转换为集合自动去重,避免重复处理同一只海龟。difference potential-friends (turtle-set self link-neighbors):从候选集合中剔除自身以及已有的链接邻居,精准筛选出符合要求的目标海龟。if any? potential-friends:先判断是否存在有效候选,避免空集合操作报错,随后用one-of随机选取一个候选创建链接。
示例验证
对应你给出的场景:
- 海龟1的链接邻居是[2,3],它们的邻居集合为{1,2,3,4}
- 排除自身(1)和已有链接邻居(2,3)后,剩余候选仅为{4},海龟1会与海龟4创建链接,完全符合需求。
内容的提问来源于stack exchange,提问作者Greenhill
相关产品推荐
相关产品推荐

