|
|
5 dias atrás | |
|---|---|---|
| .. | ||
| __pycache__ | 2 semanas atrás | |
| archive | 2 semanas atrás | |
| assets | 5 dias atrás | |
| base | 2 semanas atrás | |
| layers | 2 semanas atrás | |
| model | 2 semanas atrás | |
| saved_model | 2 semanas atrás | |
| scripts | 5 dias atrás | |
| test | 5 dias atrás | |
| utils | 2 semanas atrás | |
| .DS_Store | 2 semanas atrás | |
| ._README.md | 5 dias atrás | |
| ._requirements.txt | 2 semanas atrás | |
| ._requirements_CPU.txt | 5 dias atrás | |
| ._requirements_GPU.txt | 5 dias atrás | |
| ._test | 5 dias atrás | |
| README.md | 5 dias atrás | |
| requirements.txt | 2 semanas atrás | |
| requirements_CPU.txt | 5 dias atrás | |
| requirements_GPU.txt | 5 dias atrás | |
# 整体目录树
OuLiPowerV1.0/ 根目录
├── requirements.txt 部署环境 Python 依赖清单。
├── base/ 模型抽象基类目录。
│ ├── __init__.py
│ └── base_model.py 定义 PyTorch 模型基类,统一设备设置等基础能力。
├── layers/ 可复用的神经网络层。
│ └── layers.py 主要服务于 TSMixer 系列的时序网络结构。
├── model/ 候选预测模型集合。
│ ├── CNN_LSTM.py
│ ├── DLinear.py
│ ├── GRU.py
│ ├── Mamba.py
│ ├── TCN.py
│ ├── TSMixer.py
│ ├── TransformerEn.py
│ └── lightbgm.py
├── scripts/ 部署运行与模型加载入口。
│ ├── ModelLoading.py 通用模型工厂与推理封装
│ ├── pipeline.py 训练数据管线,读取按日 CSV,构造 PyTorch Dataset,生成/加载。
│ ├── prediction.py 预测主流程:加载模型、生成短期/中期预测、夜间功率归零、保存 CSV,并上传到远端服务器。
│ └── run.sh 批量运行脚本,依次为 JMJD01、YUWEI、ZHONGXIN 三个场站生成预测。
├── utils/ 数据处理和通用工具。
│ ├── metrics_utils.py
│ ├── processed.py
│ ├── train_utils.py
│ └── weather_utils.py
├── saved_model/ 已训练模型资产--目录规则:<场站ID>/<模型名>/<序列长度>/<特征版本>/
│ ├── JMJD01/
│ │ └── GRU/
│ │ ├── 288/
│ │ │ └── v24/
│ │ │ ├── best_model.pth
│ │ │ ├── best_tpe_params.json
│ │ │ └── scaler.pkl
│ │ └── 960/
│ │ └── v24/
│ │ ├── best_model.pth
│ │ ├── best_tpe_params.json
│ │ └── scaler.pkl
│ ├── YUWEI/
│ │ └── GRU/
│ │ ├── 288/v24/
│ │ │ ├── best_model.pth
│ │ │ ├── best_tpe_params.json
│ │ │ └── scaler.pkl
│ │ └── 960/v24/
│ │ ├── best_model.pth
│ │ ├── best_tpe_params.json
│ │ └── scaler.pkl
│ └── ZHONGXIN/
│ └── GRU/
│ ├── 288/v24/
│ │ ├── best_model.pth
│ │ ├── best_tpe_params.json
│ │ └── scaler.pkl
│ └── 960/v24/
│ ├── best_model.pth
│ ├── best_tpe_params.json
│ └── scaler.pkl
├── archive/ 预测结果归档目录--<场站ID>/<ShortTerm|MediumTerm>/YYYY/MM/YYYYMMDDHH.csv
│ ├── JMJD01/
│ │ ├── ShortTerm/
│ │ │ └── 2026/
│ │ │ ├── 2026010100.csv
│ │ │ ├── 2026090100.csv
│ │ │ └── 01/
│ │ │ └── 2026011000.csv
│ │ └── MediumTerm/
│ │ └── 2026/
│ │ └── 01/
│ │ └── 2026011000.csv
│ └── YUWEI/
├── test/ 测试目录
├── prediction_test.py 测试文件
把OuLiPowerV1.0项目复制到你想要安装的目录。如:$HOME(默认我放在这里,大家随意!)
安装代码运行环境
# python 3.12.14
# pytorch 2.6.0+cu124 这里根据客户需求,推理时安装CPU版本也开始可以的。
conda create -n oulipower python=3.12 -y
conda activate oulipower
# CPU版本
#python -m pip install -r requirements_CPU.txt
# GPU版本
python -m pip install -r requirements_GPU.txt
进入测试目录,进行测试
cd test/
python prediction_test.py \
--projs "JMJD01" \
--model_name "GRU" \
--release "v24" \
--lat 22.555907 \
--lon 113.135232 \
--short_term_seq 288 \
--medium_term_seq 960 \
--capacity 4050 \
--saved_model_root "$HOME/OuLiPowerV1.0/saved_model" \
--saved_result_root "$HOME/OuLiPowerV1.0/archive" \
--init_time 2026101612
输出“测试成功🏅” 则表示部署成功!
#模型输入:
短期:(1, 288, 9)
中期:(1, 960, 9)
9个特征按固定顺序:
ssrd, tcc, lcc, mcc, hcc, 2t, 2d, 10u, 10v
#模型输出:
短期:288 个 15 分钟功率点
中期:960 个 15 分钟功率点
#目前适配场站:
JMJD01 江门光伏场 容量 4050 kW lat 22.555907 lon 113.135232
YUWEI 北流煜炜光伏场 容量 3000 kW lat 22.615142 lon 110.305066
ZHONGXIN 清远忠信光伏场 容量 2250 kW lat 23.542156 lon 112.996233
代码调用路径:scripts/prediction.py
# 江门光伏场 在2026年10月26日12时 进行短期和中期预测
python $HOME/OuLiPowerV1.0/scripts/prediction.py \
--projs "JMJD01" \ 场站ID
--model_name "GRU" \ 加载的模型
--release "v24" \ 加载的特征版本
--lat 22.555907 \ 场站纬度
--lon 113.135232 \ 场站经度
--short_term_seq 288 \ 短期序列长度
--medium_term_seq 960 \ 中期序列长度
--capacity 4050 \ 场站装机容量
--saved_model_root "$HOME/OuLiPowerV1.0/saved_model" \ 权重保存路径
--saved_result_root "$HOME/OuLiPowerV1.0/archive" \ 输出csv存档位置
--init_time 2026102612 预报时间(UTC)
注意⚠️:
prediction.py 约第245至260行是读取气象变量的代码部分,这部分需要和欧力这边服务器联合起来,暂时没有实现。现在使用的是模拟数据。后期替换就行。
prediction.py 约第321至330行是上传预报数据至指定服务器的部分,可根据需求更换。
Local_files 是预报文件存档的路径, 对应OuLiPowerV1.0项目的 archive/
remote_files 是远程服务器的地址。需要构造成完整的路径
代码调研路径: scripts/run.sh
bash run.sh 2026102612
注意⚠️:
使用代码之前,需要提前配置好run.sh文件
#!/bin/bash
init_time="$1"
# 江门光伏场
echo "江门光伏场"
python $HOME/OuLiPowerV1.0/scripts/prediction.py \
--projs "JMJD01" \
--model_name "GRU" \
--release "v24" \
--lat 22.555907 \
--lon 113.135232 \
--short_term_seq 288 \
--medium_term_seq 960 \
--capacity 4050 \
--saved_model_root "$HOME/OuLiPowerV1.0/saved_model" \
--saved_result_root "$HOME/OuLiPowerV1.0/archive" \
--init_time "$init_time"
# 北流煜炜光伏场
echo "北流煜炜光伏场"
python $HOME/OuLiPowerV1.0/scripts/prediction.py \
--projs "YUWEI" \
--model_name "GRU" \
--release "v24" \
--lat 22.615142 \
--lon 110.305066 \
--short_term_seq 288 \
--medium_term_seq 960 \
--capacity 3000 \
--saved_model_root "$HOME/OuLiPowerV1.0/saved_model" \
--saved_result_root "$HOME/OuLiPowerV1.0/archive" \
--init_time "$init_time"
# 清远忠信光伏场
echo "清远忠信光伏场"
python $HOME/OuLiPowerV1.0/scripts/prediction.py \
--projs "ZHONGXIN" \
--model_name "GRU" \
--release "v24" \
--lat 23.542156 \
--lon 112.996233 \
--short_term_seq 288 \
--medium_term_seq 960 \
--capacity 2250 \
--saved_model_root "$HOME/OuLiPowerV1.0/saved_model" \
--saved_result_root "$HOME/OuLiPowerV1.0/archive" \
--init_time "$init_time"