xiaoguohua 4928f4103e 中大功率预测模块的第二个版本 пре 5 дана
..
__pycache__ b221f6ba1d feature: 加入功率预测算法 пре 2 недеља
archive b221f6ba1d feature: 加入功率预测算法 пре 2 недеља
assets 4928f4103e 中大功率预测模块的第二个版本 пре 5 дана
base b221f6ba1d feature: 加入功率预测算法 пре 2 недеља
layers b221f6ba1d feature: 加入功率预测算法 пре 2 недеља
model b221f6ba1d feature: 加入功率预测算法 пре 2 недеља
saved_model b221f6ba1d feature: 加入功率预测算法 пре 2 недеља
scripts 4928f4103e 中大功率预测模块的第二个版本 пре 5 дана
test 4928f4103e 中大功率预测模块的第二个版本 пре 5 дана
utils b221f6ba1d feature: 加入功率预测算法 пре 2 недеља
.DS_Store b221f6ba1d feature: 加入功率预测算法 пре 2 недеља
._README.md 4928f4103e 中大功率预测模块的第二个版本 пре 5 дана
._requirements.txt b221f6ba1d feature: 加入功率预测算法 пре 2 недеља
._requirements_CPU.txt 4928f4103e 中大功率预测模块的第二个版本 пре 5 дана
._requirements_GPU.txt 4928f4103e 中大功率预测模块的第二个版本 пре 5 дана
._test 4928f4103e 中大功率预测模块的第二个版本 пре 5 дана
README.md 4928f4103e 中大功率预测模块的第二个版本 пре 5 дана
requirements.txt b221f6ba1d feature: 加入功率预测算法 пре 2 недеља
requirements_CPU.txt 4928f4103e 中大功率预测模块的第二个版本 пре 5 дана
requirements_GPU.txt 4928f4103e 中大功率预测模块的第二个版本 пре 5 дана

README.md

OuLiPower V1.0


一、项目结构说明

# 整体目录树
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 测试文件

二、运行环境和代码部署

  1. 把OuLiPowerV1.0项目复制到你想要安装的目录。如:$HOME(默认我放在这里,大家随意!)

  2. 安装代码运行环境

    # 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
       
    
  3. 进入测试目录,进行测试

    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行是读取气象变量的代码部分,这部分需要和欧力这边服务器联合起来,暂时没有实现。现在使用的是模拟数据。后期替换就行。

image-20261026105801289

prediction.py 约第321至330行是上传预报数据至指定服务器的部分,可根据需求更换。

Local_files 是预报文件存档的路径, 对应OuLiPowerV1.0项目的 archive/

remote_files 是远程服务器的地址。需要构造成完整的路径

image-20261026110303842

五、多场站调用方式

代码调研路径: 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"