NetLogo中如何监测并绘制每只海龟的生命周期交互数据?
解决NetLogo单只海龟生命周期交互曲线绘制问题
问题根源
你之前的代码有两个核心问题:
count XX是全局统计值,不是单只海龟的交互次数,无法体现个体的生命周期变化;- 仅创建了绘图画笔,但没有在每个tick持续更新对应海龟的绘图数据。
解决方案
1. 定义海龟专属变量
给每只海龟添加一个变量,用来记录自身与dummy海龟的交互次数:
turtles-own [ interactions ] ; 存储单只海龟的交互次数
2. 初始化与海龟创建逻辑
在setup阶段初始化初始海龟,同时为每只海龟创建专属绘图画笔;每个tick新增海龟时重复该操作:
to setup clear-all setup-plots ; 创建初始5只海龟 create-turtles 5 [ set interactions 0 ; 初始交互次数为0 create-temporary-plot-pen (word "Turtle " who) ; 创建专属画笔 set-plot-pen-color color ; 设置画笔颜色 ] reset-ticks end
3. 核心运行逻辑
每个tick完成「创建新海龟→交互计数→更新绘图→海龟死亡」的流程:
to go ; 1. 每个tick创建1只新海龟 create-turtles 1 [ set interactions 0 create-temporary-plot-pen (word "Turtle " who) set-plot-pen-color color ] ; 2. 模拟海龟与dummy的交互(替换成你的实际交互逻辑) ask turtles [ ; 示例:随机触发交互,你可以替换成真实的交互条件 if random 2 = 0 [ set interactions interactions + 1 ] ] ; 3. 更新每只存活海龟的生命周期曲线 ask turtles [ set-current-plot-pen (word "Turtle " who) ; 切换到当前海龟的画笔 plotxy ticks interactions ; 绘制当前tick的交互次数 ] ; 4. 海龟死亡逻辑(替换成你的实际死亡条件) ask turtles [ if interactions >= 5 [ die ] ; 示例:交互5次后死亡 ] tick end
关键说明
- 必须用海龟自身的
interactions变量替代全局count,才能追踪个体的交互变化; - 每次tick都要让存活海龟调用
plotxy更新数据,否则画笔只会创建但无数据点; set-current-plot-pen用来指定要更新的画笔,确保数据对应到正确的海龟曲线。
内容的提问来源于stack exchange,提问作者V_sqrt
相关产品推荐
相关产品推荐

