如何在Source块创建Pallet Agent时设置Tracker参数及后续统计?
解决Pallet Agent的Tracker参数设置与Queue统计问题
一、正确按指定覆盖率设置Tracker参数
- 先确认Pallet Agent类型已添加布尔参数:在Pallet Agent的Parameters面板中,创建类型为
boolean、名称为Tracker的参数。 - 在Source块的On creation代码框中,使用以下代码分配参数值:
常见报错原因:// 先定义覆盖率变量,比如在Main画布或Source所在代理中定义double coverage = 0.4;(代表40%的Agent设为true) agent.Tracker = randomTrue(coverage); // 也可直接写数值,比如30%覆盖率:agent.Tracker = randomTrue(0.3);- Source块的Agent type未选择
Pallet,导致agent不是Pallet实例; - 变量
coverage未定义或类型错误; - 参数名拼写错误(如大小写不一致,Tracker写成tracker)。
- Source块的Agent type未选择
二、统计Queue中不同Tracker值的Agent数量
方法1:直接使用统计函数
在需要获取数量的位置(如仪表盘、按钮事件、日志输出)调用以下代码:
- 统计
Tracker=true的Agent数量:count(queue, p -> p.Tracker) - 统计
Tracker=false的Agent数量:count(queue, p -> !p.Tracker)
方法2:使用Dashboard统计组件
- 从Palette的Analysis面板拖入两个Statistic Counter组件;
- 第一个计数器的Value设为
count(queue, p -> p.Tracker),命名为trackerTrueCount; - 第二个计数器的Value设为
count(queue, p -> !p.Tracker),命名为trackerFalseCount; - 搭配Text组件即可显示两个计数器的实时值。
方法3:手动维护计数变量
- 在Queue所在的代理中定义两个整数变量:
int trackerTrueNum = 0;、int trackerFalseNum = 0;; - 在Queue的On enter事件中添加代码:
if(agent.Tracker) { trackerTrueNum++; } else { trackerFalseNum++; } - 在Queue的On exit事件中添加代码:
之后直接调用if(agent.Tracker) { trackerTrueNum--; } else { trackerFalseNum--; }trackerTrueNum和trackerFalseNum即可获取实时数量。
内容的提问来源于stack exchange,提问作者Charlotte Fränkel
相关产品推荐
相关产品推荐

