用于电力系统故障后进行预测的DeepONet-Grid网络
本工作构建了一个高效的网络DeepONet-Grid,用于对故障后的电力系统进行动态安全分析,该网络
(i) 接收故障前和故障期间收集的轨迹作为输入,并且 (ii) 输出预测的故障后轨迹。
此外,本网络还通过不确定性量化(Uncertainty Quantification)为其方法赋予了在效率与可靠/可信预测之间取得平衡的能力。
原始代码仓:Github Link
电力系统作为关键基础设施,其稳定性和可靠性对现代社会至关重要。然而,电网经常面临罕见但严重的故障和扰动,这些事件可能导致系统不稳定,甚至引发大规模停电。
传统的动态安全分析需要求解复杂的非线性微分代数方程组,计算成本极高,难以实现实时分析。随着电网的转型,电力公司迫切需要能够进行近实时的动态安全评估。
现有的机器学习方法主要关注二分类问题(稳定/不稳定),缺乏对故障后轨迹的定量预测能力。系统运营商和规划者需要了解故障后各种状态变量的轨迹,以评估电压或频率是否会违反预定义限制并触发负荷切除等保护措施。
deeponet-grid/
├── configs/
│ └── config.yaml # 配置文件
├── src/
│ ├── model.py # DeepONet模型定义
│ ├── data.py # 数据加载和预处理
│ ├── utils.py # 一些有用的函数
│ ├── trainer.py # 训练器实现
│ └── metrics.py # 评估指标
├── train.py # 训练脚本
├── inference.py # 推理脚本
├── requirements.txt # 依赖包列表
├── README.md # 本文件
├── README_en.md # 英文版本
└── outputs/ # 输出目录(自动创建)安装MindSpore框架:
pip install mindspore编辑 configs/config.yaml 文件来配置模型参数:
branch: 分支网络配置(处理输入函数)trunk: 主干网络配置(处理评估点)use_bias: 是否使用偏置项learning_rate: 学习率batch_size: 批次大小epochs: 训练轮数optimizer: 优化器类型(adam)loss_type: 损失函数类型(nll, mse)data_path: 数据文件路径可以使用数据集: dataset. 感谢数据集提供者: lzh9673@163.com.
首先确保confis/config.yaml文件中的data_path参数指向训练数据的地址。
python train.py多卡:
msrun --worker_num 8 --local_worker_num 8 --log_dir msrun_log python train.py --distributed 1训练完成后,在输出目录中会生成:
best_model.ckpt: 最佳模型检查点final_model.ckpt: 最终模型检查点training_history.json: 训练历史记录test_results.json: 测试集评估结果training.log: 训练日志python train.py --resume outputs/best_model.ckptpython train.py --eval --resume outputs/best_model.ckpt执行src/utils.py中的extract_log函数,并将记录训练信息和评估信息的地址传入。
# 指定数据推理
python inference.py --checkpoint outputs/best_model.ckpt \
--data_path data/test-data-voltage-m-33-mix.npz \
--trajectory_prediction \
--data_index 0
# 数据集推理
python inference.py --checkpoint outputs/best_model.ckpt \
--data_path data/test-data-voltage-m-33-mix.npz \
--output_dir inference_results设置环境变量启用详细日志:
export MINDSPORE_LOG_LEVEL=DEBUG
python train.pyDeepONet由两个主要组件组成:
u(x)y输出通过点积计算:
G(u)(y) = Σᵢ bᵢ(u) tᵢ(y)
其中 bᵢ(u) 是分支网络的输出,tᵢ(y) 是主干网络的输出。
模型提供不确定性量化功能:
损失函数支持:
数据文件为 .npz 格式,包含以下字段:
u: 输入函数值,形状为 (n_samples, n_sensors)y: 评估点,形状为 (n_samples, n_points, n_dim)s: 真实解值,形状为 (n_samples, n_points, n_output)| 参数 | 指标 |
|---|---|
| 硬件资源 | Atlas 800T A2 |
| MindSpore版本 | >=2.5.0 |
| 数据量 | 80000 |
| 训练步数 | 1000 |
| Scheduler | Cosine |
| Batch Size | 1024 |
| 最小学习率 | 1e-7 |
| 最大学习率 | 5e-5 |
| MSE | 0.003331 |
| MAE | 0.024189 |
| L1 | 0.024222 |
| L2 | 0.057664 |