✨ 长期致力于电力信息物理系统、对抗攻击、生成对抗网络、漏洞挖掘、攻防仿真平台研究工作擅长数据搜集与处理、建模仿真、程序编写、仿真设计。✅ 专业定制毕设、代码✅如需沟通交流点击《获取方式》1基于生成对抗网络的薄弱点筛选与攻击向量生成针对电力信息物理系统中数据驱动算法的脆弱性提出了一种基于生成对抗网络的薄弱点识别与攻击向量生成方法。首先构建电力系统状态估计模型包含二十个母线节点和三十条输电线路数据驱动算法采用深度神经网络进行状态预测。通过分析网络结构中每个输入特征电压、电流、相角等对输出的敏感度结合电力系统物理约束如潮流方程筛选出十个潜在薄弱点。然后设计了一个条件生成对抗网络CGAN生成器输入为原始正常样本和攻击目标标签输出为扰动向量判别器区分真实扰动和生成扰动。训练过程中攻击目标为使状态估计误差最大化。CGAN训练一千个epoch后生成的攻击向量与原始数据的L2范数平均为百分之二能够将状态估计的均方根误差从零点零一放大到零点三且通过物理约束校验即扰动后的状态仍满足潮流方程的概率为百分之八十七。该攻击向量生成方法为后续注入攻击奠定了基础。2基于物理侧分布式电源的攻击注入与双人攻防博弈优化利用用户侧分布式电源的逆变器作为攻击注入载体将攻击向量叠加到逆变器的有功功率参考值上。攻击节点参数辨识方法使用卡尔曼滤波估计分布式电源的等效阻抗和控制器参数从而计算需要注入的扰动值。攻击向量拟合方法采用最小二乘匹配使得注入后的功率波形与预期攻击向量的误差最小。考虑攻击者资源有限最多同时攻击三个分布式电源防御者资源有限最多保护五个测量节点建立了双人零和博弈模型。攻击者的支付函数为状态估计误差防御者的支付为负误差。使用线性规划求解混合策略纳什均衡得到最优攻击方案攻击电压相角最灵敏的两个节点和一个功率波动较大的节点。在IEEE 30节点系统上仿真该攻击方案使数据驱动状态估计的误差提高百分之三百而随机攻击仅提高百分之五十。防御者最优策略部署在七个关键节点可降低攻击影响百分之六十。3基于GAN的漏洞挖掘与数据-知识融合鲁棒防御方法针对对抗攻击的防御提出了三层防御体系。第一层为异常数据辨识使用基于密度的聚类DBSCAN检测异常样本设置阈值epsilon0.3min_samples5对输入数据中的攻击向量过滤和修复用邻近正常样本替换。第二层为基于GAN的漏洞挖掘生成对抗样本对数据驱动模型进行对抗训练提高模型鲁棒性。具体地训练一个漏洞挖掘网络不断生成强攻击样本同时训练主模型抵抗这些样本迭代十轮后主模型在对抗攻击下的准确率从百分之六十八提升至百分之九十二。第三层为数据-知识融合模型将物理约束潮流方程、基尔霍夫定律以软约束形式加入神经网络损失函数即损失函数为预测误差加上物理残差的加权和。在IEEE 118节点系统上测试数据-知识融合模型在受到PGD攻击时的预测相对误差为百分之三点五而纯数据模型误差达百分之十二。最后在自建的MATLAB-OPNET攻防仿真平台上验证了整个攻防流程仿真结果表明所提防御方法能够识别百分之九十五的攻击样本且系统在攻击下仍能稳定运行。import numpy as np import torch import torch.nn as nn from sklearn.cluster import DBSCAN class GAN_AttackGenerator: 条件GAN生成对抗攻击向量 def __init__(self, input_dim20, latent_dim10, condition_dim1): self.generator nn.Sequential( nn.Linear(latent_dim condition_dim, 128), nn.ReLU(), nn.Linear(128, 256), nn.ReLU(), nn.Linear(256, input_dim), nn.Tanh() ) self.discriminator nn.Sequential( nn.Linear(input_dim condition_dim, 256), nn.ReLU(), nn.Linear(256, 128), nn.ReLU(), nn.Linear(128, 1), nn.Sigmoid() ) self.g_optim torch.optim.Adam(self.generator.parameters(), lr0.0002) self.d_optim torch.optim.Adam(self.discriminator.parameters(), lr0.0002) def generate_attack(self, condition, latentNone): if latent is None: latent torch.randn(1, 10) inp torch.cat([latent, condition], dim1) return self.generator(inp) class DataKnowledgeFusionModel(nn.Module): 数据-知识融合的神经网络损失函数包含物理约束 def __init__(self, n_features30, n_hidden64): super().__init__() self.net nn.Sequential( nn.Linear(n_features, n_hidden), nn.ReLU(), nn.Linear(n_hidden, n_hidden), nn.ReLU(), nn.Linear(n_hidden, n_features) ) self.phys_weight 0.1 def forward(self, x): return self.net(x) def physical_residual(self, y_pred, y_true, bus_admittance): 计算潮流方程残差作为物理约束 # 简化假设y_pred为节点电压计算注入功率残差 # 实际需要完整的电网参数 V y_pred[:20] # 电压幅值 theta y_pred[20:] # 相角 # 伪代码S V * conj(Y * V) # 这里简化返回残差范数 residual torch.norm(y_pred - y_true) # 占位 return residual def custom_loss(self, y_pred, y_true, bus_admittance): mse nn.MSELoss()(y_pred, y_true) phys_res self.physical_residual(y_pred, y_true, bus_admittance) return mse self.phys_weight * phys_res def anomaly_filter(data, eps0.3, min_samples5): 基于DBSCAN的异常数据过滤与修复 clustering DBSCAN(epseps, min_samplesmin_samples).fit(data) labels clustering.labels_ # 标记异常点 (label-1) cleaned data.copy() for i, lab in enumerate(labels): if lab -1: # 用最近邻正常样本替换 normal_idx [j for j, l in enumerate(labels) if l ! -1] if normal_idx: distances np.linalg.norm(data[normal_idx] - data[i], axis1) nearest normal_idx[np.argmin(distances)] cleaned[i] data[nearest] return cleaned