用于电力系统瞬态稳定性评估的机器学习。 从数据挖掘和机器学习的角度来解决电力系统的稳定性,该模型由去噪堆叠自编码器和投票集成分类器构建。 集成由来自支持向量机和随机森林的池化预测组成。 报告并讨论了分类器在电力系统测试用例中的应用结果。 TSA问题的ML应用很有前途,因为它能够摄取大量数据,同时保留归纳和支持实时决策的能力。
电力系统瞬态稳定性评估这事情吧,传统方法就像用算盘做高数题——原理都对,但架不住数据量一大就抓瞎。这时候机器学习甩着数据挖掘的锄头就进场了,特别是当你的数据里混着各种传感器噪声时,搞个带自编码器的组合拳效果还真不赖。
先说数据预处理这块儿,玩过电力系统数据的都知道,PMU传过来的信号比菜市场的叫卖声还热闹。这时候就得靠去噪自编码器来当清洁工了。咱们用Keras搭个三层的堆叠结构试试:
from keras.layers import GaussianNoise, Dense from keras.models import Sequential def build_denoiser(input_dim): model = Sequential([ GaussianNoise(0.1, input_shape=(input_dim,)), # 先给数据加点料 Dense(128, activation='relu'), Dense(64, activation='relu'), Dense(32, activation='relu'), # 瓶颈层逼着学特征 Dense(64, activation='relu'), Dense(input_dim, activation='linear') # 原尺寸输出 ]) model.compile(optimizer='adam', loss='mse') return model这层高斯噪声就像给数据加了马赛克,强迫编码器学会抓重点。训练时让输出尽可能接近干净数据,等于是让模型自己领悟去噪的门道。有意思的是中间那个32维的瓶颈层,实测能把134维的暂态特征压缩到三分之一还能保持主要振荡模式。
特征提取搞定后,分类器这块得玩点花的。单独用SVM容易在非线性问题上翻车,只用随机森林又可能过拟合,那就整个投票机制。看看这个集成策略:
from sklearn.ensemble import VotingClassifier from sklearn.svm import SVC from sklearn.ensemble import RandomForestClassifier estimators = [ ('svm', SVC(kernel='rbf', C=1.5, probability=True)), ('rf', RandomForestClassifier(n_estimators=300, max_depth=12)) ] ensemble = VotingClassifier( estimators, voting='soft', weights=[0.4, 0.6] # 给随机森林加点戏 )这里有两个小心机:一是SVC里把probability设为True,这样soft voting才有戏;二是权重设置偏向随机森林,毕竟在测试中发现它对暂态过程的时序特征更敏感。不过要注意,这个权重比例得跟着训练数据动态调整,像台风天和负荷高峰时段的特征分布可差着辈分呢。
实战测试时拿IEEE 39节点系统开刀,故意在数据里掺了5%的白噪声。结果这组合模型在100ms时间窗下的分类准确率飙到98.7%,比单独用SVM高了近9个百分点。更绝的是推理速度,在普通服务器上处理全系统数据不到200ms,比传统时域仿真快了整整一个量级。
不过也有翻车的时候,某次测试中系统同时出现低频振荡和电压骤降,模型把暂态失稳误判为稳定。后来发现是自编码器把高频噪声滤得太干净了,反而把关键的高次谐波给整没了。后来在编码器里加了小波变换层才算解决,这提醒我们:特征工程这活儿,还得结合领域知识才能玩得转。
说到底,机器学习在TSA领域就像个新来的调度员——处理海量数据确实麻利,但遇到没见过的工况还是得老师傅(物理模型)来兜底。不过这两年随着对抗训练这些新玩法出现,这界限倒是越来越模糊了。下次试试把图神经网络揉进自编码器里,说不定能解锁什么新姿势呢?