config.py 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. """5 号机缸体振动实验配置。
  2. 本目录与 _tmp_temperature 一样是临时实验区,不进入 models/。
  3. 温度只作为事后参考,不参与特征、阈值、标签生成。
  4. """
  5. from __future__ import annotations
  6. from pathlib import Path
  7. UNIT = 5
  8. UNIT_PREFIX = "5号机组"
  9. POINT_SUFFIX = "缸体振动"
  10. BASE_DIR = Path(__file__).resolve().parent
  11. OUTPUT_DIR = BASE_DIR / "out"
  12. PLOT_DIR = OUTPUT_DIR / "plots"
  13. TEMPERATURE_LABELS = BASE_DIR.parent / "_tmp_temperature" / "out" / "温度异常段.csv"
  14. CYLINDERS = {
  15. "一缸": {"stage": "一级", "stage_cylinder": "一级1#", "point": "5号机组一缸缸体振动"},
  16. "二缸": {"stage": "一级", "stage_cylinder": "一级2#", "point": "5号机组二缸缸体振动"},
  17. "三缸": {"stage": "一级", "stage_cylinder": "一级3#", "point": "5号机组三缸缸体振动"},
  18. "四缸": {"stage": "二级", "stage_cylinder": "二级1#", "point": "5号机组四缸缸体振动"},
  19. "五缸": {"stage": "二级", "stage_cylinder": "二级2#", "point": "5号机组五缸缸体振动"},
  20. "六缸": {"stage": "二级", "stage_cylinder": "二级3#", "point": "5号机组六缸缸体振动"},
  21. }
  22. POINT_TO_CYLINDER = {meta["point"]: name for name, meta in CYLINDERS.items()}
  23. CYLINDER_TO_INDEX = {name: index for index, name in enumerate(CYLINDERS, start=1)}
  24. STAGE_PEERS = {
  25. "一级": ["一缸", "二缸", "三缸"],
  26. "二级": ["四缸", "五缸", "六缸"],
  27. }
  28. # 5#/6# 温度点位使用“级内编号”;温度点位的 2# 缸对应同级的二缸。
  29. STAGE_CYLINDER_TO_GLOBAL = {
  30. ("一级", "1#"): "一缸",
  31. ("一级", "2#"): "二缸",
  32. ("一级", "3#"): "三缸",
  33. ("二级", "1#"): "四缸",
  34. ("二级", "2#"): "五缸",
  35. ("二级", "3#"): "六缸",
  36. }
  37. # 只用于事后验证,不参与振动标签生成。
  38. EVENTS = [
  39. {
  40. "event_id": "2026-06-12",
  41. "date": "2026-06-12",
  42. "cylinder": "二缸",
  43. "description": "5#压缩机一级2#缸温度异常",
  44. "fault_category": "气阀故障",
  45. },
  46. {
  47. "event_id": "2026-06-21",
  48. "date": "2026-06-21",
  49. "cylinder": "五缸",
  50. "description": "5#压缩机二级2#缸温度异常",
  51. "fault_category": "气阀故障",
  52. },
  53. {
  54. "event_id": "2026-07-11",
  55. "date": "2026-07-11",
  56. "cylinder": "二缸",
  57. "description": "一级二缸排温高停机",
  58. "fault_category": "气阀故障",
  59. },
  60. ]
  61. # 只用跨缸残差评分:抵消全厂工况/启停造成的共同抬升,突出单缸异常。
  62. SCORE_FEATURES: list[str] = []
  63. RESIDUAL_FEATURES = ["rms_log", "kurt", "hf_ratio", "env_1x_log", "env_2x_log"]
  64. PLOT_FEATURES = ["rms_log", "kurt", "hf_ratio", "env_1x_log", "env_2x_log"]
  65. # 基线剔除:事件日前后各 7 天/1 天不参与正常基线。
  66. BASELINE_EXCLUDE_BEFORE_DAYS = 7
  67. BASELINE_EXCLUDE_AFTER_DAYS = 1
  68. # 事件验证窗口:事件前 7 天 ~ 事件后 1 天。
  69. VALIDATION_BEFORE_DAYS = 7
  70. VALIDATION_AFTER_DAYS = 1
  71. MIN_SCORE_Z = 4.5
  72. SCORE_QUANTILE = 0.99
  73. MIN_CONTRAST = 2.5
  74. MIN_CONSECUTIVE_HITS = 2
  75. STRONG_SINGLE_SCORE = 4.5
  76. STRONG_SINGLE_CONTRAST = 3.0
  77. STRONG_SINGLE_SPECIFICITY = 1.2
  78. MERGE_GAP_POINTS = 8
  79. ROLLING_WINDOW_HOURS = 168
  80. ROLLING_MIN_HOURS = 24
  81. CONTRAST_WINDOW_HOURS = 24
  82. ONSET_LOOKBACK_DAYS = 7
  83. ONSET_FACTOR = 0.7
  84. FEATURE_VERSION = "v1"