You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NetLogo社区聚类点击簇显示海龟编号代码调试

原代码无效原因
  • 类型不匹配:nw:louvain-communities返回值是海龟代理集合构成的列表,原代码用member?判断单个海龟的who数值是否在列表中,条件永远为假,不会触发后续逻辑。
  • 逻辑错误:就算条件触发,原代码是给所有海龟设置标签,不是仅显示被点击簇的海龟。
  • 触发逻辑问题:普通按钮点击仅单次执行,无法持续监听鼠标状态;且每次调用nw:louvain-communities都会重新计算社区划分,不仅效率低,还可能和之前着色的社区结果不一致。
方案1:点击簇浮动显示编号(自动避免重叠)

首先在代码顶部声明全局变量,用于存储固定的社区划分结果:

修改原有社区检测过程,将计算结果存入全局变量,避免重复计算:

新增点击检测与标签显示过程,将该过程放入持续运行的go循环中即可实时响应鼠标操作:

方案2:监视器显示(实现最简单)

如果不需要浮动标签,用监视器显示更稳定:

  1. 在全局变量中新增selected-cluster-ids,用于存储当前选中簇的海龟编号列表。
  2. 将方案1中detect-cluster-click过程里给海龟设置标签的代码,替换为set selected-cluster-ids sort [who] of target-cluster。
  3. 在NetLogo界面添加一个监视器组件,将监视器的报告者设置为selected-cluster-ids,点击任意簇时监视器就会自动输出该簇所有海龟的编号。

如果需要通过观察者命令直接查询指定簇的海龟,在命令中心执行对应代码即可:

内容的提问来源于stack exchange,提问作者razimbres

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 04:57:25