switch-analysis.md 3.6 KB

非固定预处理任务:整机切换与稳定窗口

measurements.batch.data_preparation=fixed_code的本地批次直接采用prepared_data.agent_data_path中的切换和风量结果,不执行本文流程;见批次工作流。以下仅适用于需要自行处理原始时序的其他任务。

原始时序往往同时包含运行段、停机零值和过渡段。整条 operating_series 的平均值不是稳定运行风量;也不能仅筛 value>0 后平均就替代按规则选择的窗口。将这些平均值用于风量差会误判。

根据实际数据实现事件定位

  • 按矿井与 fan_id 分组、按 observed_at 排序。使用完整整机状态;保留未知和冲突。
  • 从连续有效记录定位 running→stopped、stopped→running;相邻状态的采样间隔超过规则允许缺口时,不跨缺口推断动作。相同时间有冲突也不能强行挑一条。
  • 配对原机停机和另一台启动,保存 from_fan_id、to_fan_id、from_stopped_at、to_started_at。只有 switched_at 不够。
  • 等待间隔为 max(启动时刻−停机时刻, 0),用分钟表示;先启动后停机时另存重叠时长。
  • 不用一号、二号编号直接猜当前主用/备用;由实际动作确定方向。

按冻结规则建立两个运行窗口

令 stop 为原机停机,start 为另一台启动;transition_minutes 和 window_minutes 来自 rules.json。

  • before_end = min(stop, start) − transition_minutes。
  • before_start = before_end − window_minutes。
  • after_start = max(stop, start) + transition_minutes。
  • after_end = after_start + window_minutes。

在原机上取 before_start≤t<before_end,在新机上取 after_start≤t<after_end。统一使用同一时区和同一边界约定。不要使用所有样本,不把停机等待段、未启动零值或未来数据混入窗口,也不为凑均值平移窗口。

对每个窗口分别检查:

  1. 传感器属于相应风机,metric 为风量,单位有明确依据,映射确实已确认。
  2. 样本时间、数值、状态有效;重复时刻不能重复计数,冲突要保留。
  3. expected_count 按窗口长度和 sample_interval_seconds 计算;有效唯一采样数/expected_count 不低于 minimum_completeness。
  4. mean、标准差和 CV=标准差/|mean| 使用这一窗口的有效样本。CV 与 maximum_cv 比较,单位都是比例,不能把0.05误当5。
  5. 观察对应整机运行状态。窗口内真实零值不能为通过而随意删除;若零值反映停机或异常,说明该窗口不满足稳定运行条件。

窗口不完整、不稳定、均值无效或原机均值为零时,该事件风量差项是证据不足。不能将不稳定整段均值的差异大,直接判成 WARNING/ABNORMAL。 已独立证明的有效参数差异或切换间隔超限仍可单独保留。

两个窗口均有效后才算:abs(after_mean−before_mean)/before_mean×100%。在同一单位比较;把m³/min统一成m³/s时两边同时转换,展示值和单位保持对应。

保存足以复算的细节

在自己的中间文件和最终 details 中保存事件停启时刻、两个窗口起止、风机和传感器、单位、expected_count、有效样本数、完整率、均值、标准差、CV、窗口是否有效、切换间隔、风量差及各自限值。结构由你组织,但这些信息不能用一个 passed=true 代替。

在生成最终报告前,自己写断言或诊断输出检查:所有入选时间都在窗口内;前后确实是对应运行风机;不混入窗口之外的零值;完整率/CV判断与实际数字一致;无效窗口没有参与比例或严重线判断。读实际诊断输出后再写综合结论。