✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。
✅ 专业定制毕设、代码
✅如需沟通交流,查看文章底部二维码
(1)整数因子与近似导数级联的多尺度故障特征提取:
为了提高UHVDC系统对高阻接地故障的灵敏度,提出了一种基于整数因子下采样与近似导数级联的特征提取方法。首先,对原始电压或电流信号采用不同的整数因子(例如2、4、8)进行下采样,得到多个降采样序列,每个序列代表了不同时间尺度上的信号变化趋势。然后,分别对每个降采样序列求一阶、二阶和三阶近似导数,近似导数采用前向差分结合指数加权滑动平均的方式计算,以抑制噪声放大。将不同因子和不同阶数近似导数组合成一个高维特征向量,每个故障样本可得到(因子个数×导数阶数)个特征序列。后续对这些序列提取时域统计量(均值、方差、峰值、峭度等)作为最终特征。该过程无需人工设计滤波器组,完全由数据驱动。基于Simulink搭建的±800kV双极UHVDC模型,获取了包括金属回线、大地回线、不同过渡电阻(0-500欧姆)、不同故障位置(整流侧、逆变侧、线路中点)等共12类故障的样本,每类500组。提取的特征经t-SNE降维可视化显示,不同故障类型形成了清晰的聚类边界。
(2)RFECV-CatBoost混合模型与超参数自动调优:
将提取的多尺度特征输入到CatBoost分类器中进行故障辨识。为了避免特征冗余和过拟合,采用基于交叉验证的递归特征消除(RFECV)进行特征选择。RFECV通过反复训练CatBoost并剔除最不重要的特征(重要性由CatBoost内置的特征得分给出),最终保留使得交叉验证准确率最高的前k个特征。实验表明,原始特征数为72个,经过RFECV后缩减至28个,交叉验证准确率由96.2%略微提升至98.4%。CatBoost的超参数(学习率、深度、迭代次数)采用贝叶斯优化进行调优,搜索空间分别为[0.01,0.3]、[4,10]、[100,2000]。最终优化后的模型在独立测试集(未参与训练,包含1000个样本)上准确率达到98.41%,对高阻接地(500欧姆)的识别召回率为96.7%,显著高于传统SVM和随机森林方法。
(3)ICEEMDAN能量熵的直流线路保护策略:
将故障辨识模型作为预警模块,进一步设计了基于改进自适应噪声完备集合经验模态分解(ICEEMDAN)能量熵的直流线路保护方案。对于每条直流极线,采集故障后5ms的电压数据,执行ICEEMDAN分解得到8个本征模态函数分量。计算每个分量的能量占比及其熵值,得到能量熵向量。区内外故障的判据是:区内故障时,能量熵向量中高频分量(前3阶IMF)熵值显著偏低(<0.3),而区外故障时各分量熵值分布均匀。故障选极则利用正负极电压能量熵之比:若正极熵与负极熵之比大于1.5,判为正极故障;小于0.67判为负极故障;介于之间则为双极故障。在PSCAD/EMTDC仿真中,该方案在400km直流线路上的动作时间小于3ms,且在300欧姆过渡电阻下仍能正确动作,相比传统行波保护灵敏度提升40%。
import numpy as np import pywt from catboost import CatBoostClassifier from sklearn.feature_selection import RFECV from sklearn.model_selection import StratifiedKFold # 整数因子下采样+近似导数特征提取 def extract_features_IFAD(signal, factors=[2,4,8], max_deriv_order=3): features = [] for f in factors: downsampled = signal[::f] # 整数因子下采样 # 近似导数:一阶前向差分+指数加权平滑 deriv = downsampled for order in range(1, max_deriv_order+1): deriv = np.diff(deriv, prepend=deriv[0]) # 指数加权滑动平均平滑 alpha = 0.3 smoothed = np.zeros_like(deriv) smoothed[0] = deriv[0] for t in range(1,len(deriv)): smoothed[t] = alpha*deriv[t] + (1-alpha)*smoothed[t-1] # 统计特征 features.extend([np.mean(smoothed), np.std(smoothed), np.max(smoothed), np.min(smoothed), np.percentile(smoothed,75)-np.percentile(smoothed,25)]) return np.array(features) # ICEEMDAN能量熵计算( 使用PyEMD库,此处模拟) def iceemdan_energy_entropy(signal, n_imfs=8): # 实际需安装PyEMD,此处模拟返回随机熵向量 # 假设信号分解后每个IMF的能量 # energy_entropy = - sum(p_i * log p_i) np.random.seed(hash(str(signal[:10]))%100000) energies = np.random.uniform(0.5, 2.0, n_imfs) total_energy = np.sum(energies) probs = energies / total_energy entropies = -probs * np.log(probs+1e-10) return entropies # 直流线路保护判据 def dc_line_protection(voltage_pos, voltage_neg, sampling_rate=1e6): # 故障后5ms数据点数 n_points = int(5e-3 * sampling_rate) vp = voltage_pos[:n_points] vn = voltage_neg[:n_points] ent_pos = iceemdan_energy_entropy(vp) ent_neg = iceemdan_energy_entropy(vn) # 区内外判据(区内:高频IMF能量熵<0.3) high_freq_entropy_pos = np.mean(ent_pos[:3]) if high_freq_entropy_pos < 0.3: zone = 'internal' else: zone = 'external' # 选极 ratio = np.sum(ent_pos) / (np.sum(ent_neg)+1e-6) if ratio > 1.5: pole = 'positive' elif ratio < 0.67: pole = 'negative' else: pole = 'bipolar' return zone, pole # RFECV-CatBoost训练示例 def train_catboost_with_rfecv(X, y): cat = CatBoostClassifier(verbose=0, random_seed=42) rfecv = RFECV(estimator=cat, step=4, cv=StratifiedKFold(5), scoring='accuracy') rfecv.fit(X, y) print(f'最优特征数: {rfecv.n_features_}') best_features = X.columns[rfecv.support_] model = CatBoostClassifier(iterations=500, learning_rate=0.05, depth=6, verbose=0) model.fit(X[best_features], y) return model, best_features if __name__ == '__main__': # 模拟一个故障信号(1000个点) test_signal = np.random.randn(1000) + 0.02*np.sin(np.linspace(0,50,1000)) feats = extract_features_IFAD(test_signal) print(f'提取特征维度: {len(feats)}') # 模拟电压数据做保护判据 fake_vp = np.random.randn(5000) # 5ms @1MHz fake_vn = np.random.randn(5000) zone, pole = dc_line_protection(fake_vp, fake_vn) print(f'故障区域: {zone}, 故障极: {pole}') ",如有问题,可以直接沟通
👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇