|
|
2 nedēļas atpakaļ | |
|---|---|---|
| .. | ||
| common | 2 nedēļas atpakaļ | |
| datas | 2 nedēļas atpakaļ | |
| generalized | 2 nedēļas atpakaļ | |
| markdown | 2 nedēļas atpakaļ | |
| migrations | 2 nedēļas atpakaļ | |
| results | 2 nedēļas atpakaļ | |
| service | 2 nedēļas atpakaļ | |
| vibration | 2 nedēļas atpakaļ | |
| README.md | 2 nedēļas atpakaļ | |
| __init__.py | 2 nedēļas atpakaļ | |
| realtime_service.py | 2 nedēļas atpakaļ | |
| scan_all.py | 2 nedēļas atpakaļ | |
本目录把原先合并在一起的 PKS 故障算法与泛化模型拆开、规范化重排,是本项目
压力/振动算法与模型的唯一实现。原 backend/model_assistant_generalized/ 已删除,
其逻辑与文档已全部迁入本目录;backend/scan_pks_fault_evolution.py(合并版扫描器)
保留作为历史参照。
| 目录 | 内容 |
|---|---|
common/ |
公共层:数据库连接、报警阈值、小时聚合、数据查询、稳健统计、CSV 输出、窗口切分、训练/评估/推理、自动校验 |
generalized/ |
压力算法 + 压力模型:pressure_algorithm.py、features_pressure.py、build_datasets.py、split_datasets.py、train_model.py、evaluate_model.py、infer_and_combine.py、run_pipeline.py |
vibration/ |
振动算法 + 振动模型:与 generalized/ 对称 |
datas/ |
中间数据与训练数据:hourly/(小时中间表)、pressure/、vibration/(窗口样本)、artifacts/(训练产物)、reference/(golden 基准) |
results/ |
算法扫描结果与模型测试结果:common/、pressure/、vibration/、verification/ |
markdown/ |
文档:压力算法、压力模型、振动算法、振动模型、模型辅助确认方案 |
service/ |
实时服务定时脚本:mac/(launchd)、linux/(systemd)、windows/(schtasks) |
migrations/ |
数据库结构变更 SQL(如 alarm_des 扩到 4000) |
scan_all.py |
全量扫描(压力+振动),按设备号输入,结果可存本地或数据库 |
realtime_service.py |
实时扫描(--once / --loop / --simulate),结果合并写入 compressor_alarm |
算法与扫描统一使用 --device 7# 8# 9#(默认 7# 8# 9#),设备通过
compressor_data_import.directory_path 解析到 PKS 导入批次。4#/5#/6# 暂不纳入。
算法内部仍按 批次 分组,因此本地全量结果与历史 CSV 逐字节一致。
# 本地:自动查询起止时间(floor(最小)..floor(最大)+1h),先清理旧中间/结果再生成
python models/scan_all.py --device 7# 8# 9# --store local
# 数据库:本地结果与中间文件照常生成,并额外把最终段写入 compressor_alarm
python models/scan_all.py --device 7# 8# 9# --store db
# 开启模型预测参考:对每个故障段做 3 小时滑动预测,写入概率均值/最大/最小
python models/scan_all.py --device 7# 8# 9# --store db --with-model
# 也可显式指定时间,或复用已缓存小时中间表
python models/scan_all.py --start "2025-01-01 00:00:00" --end "2026-09-01 00:00:00"
python models/scan_all.py --hourly-csv models/datas/hourly/pks_hourly_full.csv
数据库存储映射(表 compressor_alarm):
| 结果 | device_code | device_part | device_point | alarm_type | alarm_level |
|---|---|---|---|---|---|
| 压力段 | 7# |
润滑油压力 |
YSJ_5 |
润滑油压力故障 |
压力阶段 |
| 振动段 | 7# |
按 最强异常侧 取 联轴器端振动 / 链轮端振动 |
对应 YSJ_10 / YSJ_11 |
振动故障 |
振动阶段 |
alarm_des=阶段触发依据(≤4000)、alarm_info_json=对应 CSV 行 JSON、status=1。
全量写库会先删除所选设备的历史压力/振动告警再插入。
--with-model,默认关闭)模型异常概率均值 / 最大值 / 最小值。alarm_info_json 增加上述 3 个字段及 模型预测参考
(模型预测参考:3小时窗口异常概率 均值x/最大y/最小z(n次));alarm_des 只保留 阶段触发依据;本地 CSV 同步增加这 4 列。models/datas/artifacts/* 缺失会直接报错(先跑对应 run_pipeline.py)。python models/realtime_service.py --once # 单次
python models/realtime_service.py --loop --interval 300 # 每 5 分钟(命令行定时)
python models/realtime_service.py --once --with-model # 同时写入模型预测参考
end = min(floor(now), floor(最新数据)+1h),start = end - 45 天。(设备, 类型, 等级) 且时间重叠或间隔 ≤6h 的段合并为一条,
同一等级连续段不会因跨小时或“最强侧”切换被拆开;等级变化保留为不同行,
合并时 device_part/device_point 更新为最新 最强异常侧。models/service/README.md。python models/realtime_service.py --simulate "2026-02-03 20:00:00,2026-02-04 00:00:00"(默认结束后回滚)。# 1) 算法扫描结果
python models/scan_all.py --device 7# 8# 9# --store local
# 2) 压力模型 3h:build -> split -> train -> evaluate -> infer
python models/generalized/run_pipeline.py --window-hours 3
# 3) 振动模型 3h
python models/vibration/run_pipeline.py --window-hours 3
# 4) 自动校验(含 compressor_alarm 对应关系)
python models/common/verify.py --with-db
--window-hours 6 的参数化代码路径保留,但本轮不重新生成 6h 产物。
python models/common/verify.py --with-db 会比对:
models/datas/reference/ 逐字节一致;0.862553/0.916630,异常 F1 96.59%/71.43%,事件召回 10/10、4/4);compressor_alarm 行数与参考 CSV 对应(压力 72、振动 25,共 97)。报告写入 models/results/verification/verification_report.json。
模型标签来自算法扫描结果(润滑油压力小时阶段段.csv / 振动异常段.csv),
指标衡量的是对规则标签的泛化一致性,不等同于物理故障诊断。