Files
lingniu-vehicle-ingest/reports/hydrogen-diagnostics/粤AGP3080-2026-08-11-用氢差异诊断.ipynb
T

4.5 KiB
Raw Blame History

粤AGP3080 2026-08-11 用氢量差异诊断

tl;dr

  • 生产数据库当前值为 5.992 kg,分段关键帧合并值为 12.051 kg,差 6.059 kg+101.12%
  • 根因已确认:同一车辆当天使用了3个 source_endpoint。现有算法按 VIN + source_endpoint 分组后只选择样本最多的一组,导致后续两个连续时间段被舍弃。
  • 三个来源片段按现有算法分别得到5.992、0.697、5.349 kg,合计12.038 kg;与分段关键帧结果仅差0.013 kg。

Context & Methods

诊断对象:粤AGP3080VIN LB9A32A25R0LS14522026-08-11Asia/Shanghai)。

对比口径:生产表日结果、现有算法按连接来源分组的结果、合并全部来源后按工作段首尾5帧中位数做差的结果。加氢、异常跳变和超过5分钟的数据断点用于切段。

Key Assumptions

三个端口属于同一VIN当天的连接重连,不是三个独立车辆数据源;百公里氢耗采用生产日里程502.4km。

执行状态:生产查询已于2026-08-19完成并复核。本地缺少 nbformatjupyter 和可用内核,因此本笔记本保存可复算代码但未在本机执行。复跑命令:python -m jupyter nbconvert --execute --to notebook --inplace <notebook>

Data

来源连接 时间范围 原始帧 工作帧 现有算法用氢量
8.134.95.166:54760 06:28:1212:34:43 1542 1539 5.992kg
8.134.95.166:41692 12:35:1314:38:29 328 328 0.697kg
8.134.95.166:37898 14:54:0019:59:02 1357 1357 5.349kg
In [ ]:
mileage_km = 502.4
stored_kg = 5.992
source_consumption_kg = [5.992, 0.697, 5.349]
segment_consumption_kg = [0.462, 2.537, 3.685, 0.000, 2.629, 2.738]
source_sum_kg = round(sum(source_consumption_kg), 3)
proposed_kg = round(sum(segment_consumption_kg), 3)
gap_kg = round(proposed_kg - stored_kg, 3)
gap_pct = round((proposed_kg / stored_kg - 1) * 100, 2)
omitted_sources_kg = round(source_sum_kg - stored_kg, 3)
method_residual_kg = round(proposed_kg - source_sum_kg, 3)
current_rate = round(stored_kg / mileage_km * 100, 3)
proposed_rate = round(proposed_kg / mileage_km * 100, 3)
assert (source_sum_kg, proposed_kg, gap_kg) == (12.038, 12.051, 6.059)
{
    '数据库用氢量_kg': stored_kg,
    '新算法用氢量_kg': proposed_kg,
    '差值_kg': gap_kg,
    '差值比例_pct': gap_pct,
    '被舍弃来源片段_kg': omitted_sources_kg,
    '方法残差_kg': method_residual_kg,
    '数据库百公里氢耗': current_rate,
    '新算法百公里氢耗': proposed_rate,
}

Takeaways

  1. 差值不是压力换算公式造成的;被舍弃的两个连接片段贡献6.046kg,解释总差值的99.79%。
  2. 问题在聚合粒度:source_endpoint 包含临时TCP端口,重连会改变端口,不能作为车辆日统计的互斥来源键。
  3. 当前生产结果只保留06:2812:34的数据,12:35–19:59的连续有效工作数据没有进入日用氢量。
  4. 建议先按VIN和事件时间合并去重,再识别工作段;来源字段只用于追踪。