# PowerFlowNet_pytorch
## 论文
`PowerFlowNet: Power flow approximation using message passing Graph Neural Networks`
- https://www.sciencedirect.com/science/article/pii/S0142061524003338
## 模型结构
利用消息传递图神经网络进行高质量电力流近似计算。
与现有的 PF GNN 方法相比,PowerFlowNet 的独特之处在于它巧妙地利用了消息传递 GNN 和高阶 GCN 的功能,并以一种名为 PowerFlowConv 的独特方式组合使用,以处理网络图的可训练掩码嵌入。这种创新方法使 PowerFlowNet 具有极高的扩展性,为 PF 问题提供了一种有效的解决方案。
## 算法原理
PowerFlowNet 将潮流问题转化为一个图神经网络节点回归问题,它将每个母线表示为一个节点,将每条输电线路表示为一条边,同时保持网络的连通性。
## 环境配置
### 硬件需求
DCU型号:K100_AI,节点数量:1台,卡数:1张。
### Docker(方法一)
```bash
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.4.1-ubuntu22.04-dtk25.04.1-py3.10
docker run -it --name {docker_name} --device=/dev/kfd --privileged --network=host --device=/dev/dri --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v /path/your_code_data/:/path/your_code_data/ -v /opt/hyhal:/opt/hyhal:ro --group-add video --shm-size 64G 12a8aef969d2 bash
cd /your_code_path/powerflownet_pytorch
pip install -r requirements.txt
```
### Dockerfile(方法二)
此处提供dockerfile的使用方法
```bash
cd docker
docker build --no-cache -t powerflownet:latest .
docker run -it --name {docker_name} --device=/dev/kfd --privileged --network=host --device=/dev/dri --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v /path/your_code_data/:/path/your_code_data/ -v /opt/hyhal:/opt/hyhal:ro --group-add video --shm-size 64G {imageID} bash
cd /your_code_path/powerflownet_pytorch
pip install -r requirements.txt
```
### Anaconda(方法三)
关于本项目DCU显卡所需的特殊深度学习库可从[光合](https://developer.sourcefind.cn/tool/)开发者社区下载安装。
```bash
DTK: 25.04
python: 3.10
torch: 2.4.1+das.opt1.dtk25041
```
`Tips:以上dtk驱动、torch等DCU相关工具版本需要严格一一对应`
其它非深度学习库安装方式如下:
```bash
pip install -r requirements.txt
```
## 数据集
下载后解压到 ./powerflownet_pytorch/data/raw/ 文件夹
- https://surfdrive.surf.nl/files/index.php/s/Qw4RHLvI2RPBIBL
## 训练
```bash
python3 train.py --cfg_json ./configs/standard.json\
--num-epochs 10\
--data-dir ./data/
--batch-size 128\
--train_loss_fn mse_loss\
--lr 0.001\
--case 118v2\
--model MaskEmbdMultiMPN\
--save
```
## 推理
暂无
## result
详见./res 文件夹
### 精度
DCU(K100_AI)与GPU(A800)训练powerflownet精度一致,框架:pytorch
## 应用场景
### 算法类别
`图神经网络`
### 热点应用行业
`制造,电力,教育`
## 预训练权重
- [PowerFlowNet](https://surfdrive.surf.nl/files/index.php/s/iunfVTGsABT5NaD)
## 源码仓库及问题反馈
- https://developer.sourcefind.cn/codes/modelzoo/powerflownet_pytorch
## 参考资料
- https://github.com/StavrosOrf/PoweFlowNet