from pathlib import Path # ============================================================ # 路径配置(请根据实际环境修改) # ============================================================ # Parquet 数据根目录,目录结构: {PARQUET_ROOT}/{model_name}/{farm_name}/{turbine_name}.parquet # TODO: 替换为实际路径 PARQUET_ROOT = Path("/Volumes/P3/大唐标准化数据/stander_parquet") # 模型保存目录,按机型子目录存储 # TODO: 替换为实际路径 MODEL_SAVE_DIR = Path("/Users/xmia/Desktop/ZN/项目/大唐25-26/Dtest_code/code_abnormal/anomaly_detection/saved_models") # 结果数据库路径(SQLite,可替换为其他数据库连接字符串) # TODO: 替换为实际数据库地址 DB_PATH = "/Users/xmia/Desktop/ZN/项目/大唐25-26/Dtest_code/code_abnormal/anomaly_detection/anomaly_results.db" # ============================================================ # IsolationForest 通用参数 # ============================================================ ISO_CONTAMINATION = 0.01 # 预期异常比例,可按机型调整 ISO_RANDOM_STATE = 42 ISO_N_ESTIMATORS = 100 # ============================================================ # 状态打标参数 # ============================================================ # 功率越界倍数(相对额定功率) STATUS_POWER_UPPER_RATIO = 1.25 # 功率上限倍数 STATUS_POWER_LOWER_RATIO = -0.10 # 功率下限倍数 STATUS_SHUTDOWN_RATIO = 0.005 # 停机功率阈值(额定功率的比例),最小取 10kW STATUS_CURTAIL_LOW_RATIO = 0.02 # 限功率下限(额定功率比例) STATUS_CURTAIL_HIGH_RATIO = 0.95 # 限功率上限(额定功率比例) STATUS_CURTAIL_PITCH_OFFSET = 3.0 # 限功率桨距角偏移量(基准桨距角 + 此值) # 风速越界阈值(m/s) STATUS_WIND_MAX = 75.0 STATUS_WIND_MIN = -2.0 # 变桨越界阈值(°) STATUS_PITCH_MAX = 105.0 STATUS_PITCH_MIN = -10.0 # 转速/扭矩越界倍数 STATUS_SPD_UPPER_RATIO = 1.25 STATUS_TORQUE_UPPER_RATIO = 1.25 STATUS_TORQUE_LOWER_ABS = -2000.0 # 逻辑悖论阈值 STATUS_LOGIC_WIND_MIN = 0.1 # 风速低于此值但功率大则为逻辑异常 STATUS_LOGIC_POWER_MIN = 100.0 # 配合上面风速阈值的功率下限 # 机型特殊规则: {model_name: [(wind_thresh, power_thresh), ...]} # 风速 < wind_thresh 但 功率 > power_thresh 时追加逻辑异常 STATUS_MODEL_SPECIAL_RULES = { "EN156-3300": [(2.7, 450)], } # ============================================================ # 风速功率分箱参数 # ============================================================ WIND_BIN_WIDTH = 0.5 # m/s WIND_BIN_MIN = 0.0 WIND_BIN_MAX = 25.0 # 有效发电风速区间(过滤切入/切出段噪声) WIND_VALID_MIN = 3.0 # m/s,切入风速 WIND_VALID_MAX = 25.0 # m/s,切出风速 # ============================================================ # 测点列名(与 parquet 字段名对应) # ============================================================ COL_WIND_SPD = "wind_spd" COL_P_ACTIVE = "p_active" COL_YAW_ANG = "yaw_ang" COL_TWIST_ANG = "twist_ang" COL_PITCH_SET_1 = "pitch_ang_set_1" COL_PITCH_SET_2 = "pitch_ang_set_2" COL_PITCH_SET_3 = "pitch_ang_set_3" COL_PITCH_ACT_1 = "pitch_ang_act_1" COL_PITCH_ACT_2 = "pitch_ang_act_2" COL_PITCH_ACT_3 = "pitch_ang_act_3" COL_PITCH_SPD_1 = "pitch_spd_1" COL_PITCH_SPD_2 = "pitch_spd_2" COL_PITCH_SPD_3 = "pitch_spd_3" COL_ROTOR_SPD = "rotor_spd" COL_THEORY_P_ACTIVE = "theory_p_active" COL_AMBIENT_TEMP = "ambient_temp"