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

AnyLogic仓库模型:如何识别各运输器(叉车/AGV)行驶距离并展示

AnyLogic运输器行驶数据:区分、实时显示与日志记录

1. 区分单台叉车/AGV的行驶数据

在车队的on release事件中,打印时带上运输器的名称或自定义标识,就能明确对应哪台设备:

  • 直接使用内置名称属性(AnyLogic自动给车队里的运输器命名为forklift1、forklift2等):
    traceln(transporter.getName() + " 累计行驶距离: " + transporter.getDistanceTravelled(METER) + " 米");
    
  • 自定义标识(更灵活,比如区分车队类型):在车队的On create transporter事件中给运输器赋值自定义参数:
    // 叉车车队的创建事件
    transporter.setParameter("transporterTag", "叉车-" + (forkliftFleet.size() + 1));
    // AGV车队的创建事件
    transporter.setParameter("transporterTag", "AGV-" + (agvFleet.size() + 1));
    
    之后打印时调用这个参数:
    traceln(transporter.getParameter("transporterTag") + " 累计行驶距离: " + transporter.getDistanceTravelled(METER) + " 米");
    

2. 实时显示到对应EditBox

需要把每个运输器和UI上的EditBox绑定,步骤如下:

  1. 在主Agent中创建两个List集合,分别存储叉车和AGV对应的EditBox:
    public List<EditBox> forkliftEditBoxes = new ArrayList<>();
    public List<EditBox> agvEditBoxes = new ArrayList<>();
    
  2. 在模型启动时(比如Main的On startup事件),把UI上的EditBox添加到对应集合:
    forkliftEditBoxes.add(ebForklift1);
    forkliftEditBoxes.add(ebForklift2);
    forkliftEditBoxes.add(ebForklift3);
    
    agvEditBoxes.add(ebAGV1);
    agvEditBoxes.add(ebAGV2);
    agvEditBoxes.add(ebAGV3);
    
    (注:ebForklift1等是你UI上EditBox的实际名称)
  3. 在车队的on release事件中,根据运输器在车队中的索引找到对应EditBox并更新:
    • 叉车车队事件:
      int idx = forkliftFleet.indexOf(transporter);
      forkliftEditBoxes.get(idx).setText(String.format("%.2f 米", transporter.getDistanceTravelled(METER)));
      
    • AGV车队事件:
      int idx = agvFleet.indexOf(transporter);
      agvEditBoxes.get(idx).setText(String.format("%.2f 米", transporter.getDistanceTravelled(METER)));
      

3. 将行驶数据写入日志

方法1:使用AnyLogic内置日志

在on release事件中调用log()方法,数据会自动进入模型日志:

log(Level.INFO, transporter.getName() + " | 累计行驶距离: " + transporter.getDistanceTravelled(METER) + " 米");

(可通过模型的「日志」面板查看,或导出为文件)

方法2:自定义日志文件

如果需要输出到独立的文本文件,用FileWriter实现追加写入:

try {
    // 日志文件路径,可自定义
    FileWriter writer = new FileWriter("transporter_distance_log.txt", true);
    // 写入时间、设备标识、距离
    writer.write(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) 
                 + " | " + transporter.getName() 
                 + " | 行驶距离: " + transporter.getDistanceTravelled(METER) + " 米\n");
    writer.close();
} catch (IOException e) {
    traceln("日志写入失败: " + e.getMessage());
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 06:37:14