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

如何在AnyLogic中处理EVENT提取的运输机Fleet速度数据?

解决方案:运输机速度采集、存储/可视化及最大速度获取

一、实时速度的采集、存储与图表展示

1. 周期性采集速度(EVENT组件配置)

  • 将EVENT组件的触发类型设为周期性,周期值填1(单位为秒)。
  • 在EVENT的动作代码中,根据需求选择采集方式:
    • 采集舰队平均速度:
      double fleetAvgSpeed = transporterFleet.getSpeed();
      
    • 采集单台运输机的速度(遍历舰队):
      for(Transporter t : transporterFleet) {
          double singleTransSpeed = t.getSpeed();
          // 后续单台数据处理逻辑
      }
      

2. 存储到数据库

  • 先配置数据库连接(如SQLite、MySQL),创建存储表(示例表结构:transporter_speed_data,含timestamp、fleet_speed、transporter_id、single_speed字段)。
  • 在EVENT动作中写入插入逻辑:
    • 插入舰队平均速度:
      try {
          insertInto(transporter_speed_data)
              .columns(transporter_speed_data.timestamp, transporter_speed_data.fleet_speed)
              .values(new Date(), fleetAvgSpeed)
              .execute();
      } catch(SQLException e) {
          traceln("数据存储失败:" + e.getMessage());
      }
      
    • 插入单台运输机速度:
      try {
          for(Transporter t : transporterFleet) {
              insertInto(transporter_speed_data)
                  .columns(transporter_speed_data.timestamp, transporter_speed_data.transporter_id, transporter_speed_data.single_speed)
                  .values(new Date(), t.getId(), t.getSpeed())
                  .execute();
          }
      } catch(SQLException e) {
          traceln("单台数据存储失败:" + e.getMessage());
      }
      

3. 展示到时间序列图表

  • 拖入Time Series Chart组件到画布,可提前配置数据系列(如“舰队平均速度”“运输机1速度”等)。
  • 在EVENT动作中添加数据到图表:
    • 舰队平均速度:
      chartSpeed.addDataPoint(new Date(), fleetAvgSpeed);
      
    • 单台运输机速度:
      for(Transporter t : transporterFleet) {
          chartSpeed.addDataPoint(t.getName(), new Date(), t.getSpeed());
      }
      

二、正确获取运输机最大速度(解决getMaximumSpeed(MPS)报错)

报错原因是调用方式错误:getMaximumSpeed()是单个Transporter的方法,且无需传入单位参数(MPS是单位枚举,用于单位转换而非方法入参)。

1. 获取单台运输机的最大速度

// 先判断舰队非空,避免空指针
if(!transporterFleet.isEmpty()) {
    double singleMaxSpeed = transporterFleet.get(0).getMaximumSpeed();
    // 如需转换单位(如转成KMH)
    double maxSpeedKMH = Units.convert(singleMaxSpeed, Units.METERS_PER_SECOND, Units.KILOMETERS_PER_HOUR);
}

2. 获取舰队中所有运输机的最大速度(取最大值)

double fleetMaxSpeed = 0;
for(Transporter t : transporterFleet) {
    double tMax = t.getMaximumSpeed();
    if(tMax > fleetMaxSpeed) {
        fleetMaxSpeed = tMax;
    }
}

三、注意事项

  • 触发EVENT前确保运输机舰队已初始化,避免空指针异常。
  • 数据库操作需用try-catch包裹,防止模型因存储失败崩溃。
  • 若舰队规模较大,可适当调整采集周期,避免性能损耗。

内容的提问来源于stack exchange,提问作者Jahidul Hasan Razib

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 07:36:35