Register
Login
Resources
Docs Blog Datasets Glossary Case Studies Tutorials & Webinars
Product
Data Engine LLMs Platform Enterprise
Pricing Explore
Connect to our Discord channel
Li Chao 2e4da64e44
按庞工张超意见更新文档
5 years ago
e39cb9e51e
add dvc
5 years ago
2e4da64e44
按庞工张超意见更新文档
5 years ago
doc
ddbf26cca9
更新离散率算子文档
5 years ago
796eb09d2b
update doc & add joining table scripts
5 years ago
e39cb9e51e
add dvc
5 years ago
80b178ffdd
update doc
5 years ago
271e8378af
naive dask implementation
5 years ago
7932df258e
improve output format
5 years ago
a8c018e0c3
single process algorithm verified: pytest -s test_stations.py
5 years ago
5ea2a21119
PySpark job verified: python sparkjob.py
5 years ago
6d649e2da8
add multi-station implementaion
5 years ago
5ea2a21119
PySpark job verified: python sparkjob.py
5 years ago
d186adeabe
matrix-median and max-current operators verified
5 years ago
de2574bb08
initial implementaion based on max current method
5 years ago
Storage Buckets
Data Pipeline
Legend
DVC Managed File
Git Managed File
Metric
Stage File
External File

README.md

You have to be logged in to leave a comment. Sign In

Intro

基于最大电流法分析光伏组串状态和故障预警。

算子的训练和运行时说明参考 doc 中文件。

test_one_unit.py 中的测试使用的数据集(ycz6502.csv)格式: 所有组串都属于同一个相关性计算单元(集中式光伏系统:汇流箱, 或者分布式光伏系统:逆变器),只要取其中时间、组串ID、电流值3列即可。

test_stations.py 中的测试集(数据文件hbpv10days.csv尺寸过大未包含在代码库中) 包含时间戳、场站名称、小室编号、汇流箱编号、组串编号、测点ID、电流值,例如:

20181119 07:04:29,SYGD,01,01,01,1000611,0.0

用 场站名称 + 小室编号 + 汇流箱编号 组成分组标识符, 每个分组包含一个汇流箱中所有组串在整个时间域中的电流值, 按天分组后分别做相关性计算。

输入和输出定义

输入格式

DataFrame, 字段包括:

  • 场站编码: string, 例如:FD01

  • 设备编码: string, 由8个数字组成,例如:01010001, 前2位是小室编号,中间4位是汇流箱-逆变器编号,最后2位是组串编号, 如果编号为00,则表示此级别不存在,例如01000000表示编号为01的小室, 01010000表示编号为01的小室下面编号为01的汇流箱下面的01号组串 (00表示汇流箱下面没有逆变器);

  • 监测时间: datetime, 例如:2019-01-07 04:28:29.619

  • 电压值: float

  • 电流值: float

  • 功率值: float

  • 温度: float

  • 辐照度: float

输出格式

DataFrame, 字段包括:

  • 场站编码: 与输入相同;

  • 设备编码: 与输入相同;

  • 预警时间: datetime, 例如:2019-01-07 04:28:29.619

  • 预警类型: int, 0(日计算分析预警);

  • 预警级别: int, 0-正常,1-异常,2-关注,3-无数据异常。默认值为0

  • 计算结果:string, JSON格式字符串,结构见下面;

  • 是否处理:boolean, 0

  • 异常值:电流值恒为0: -1.5,电流值恒为非零:-1.1;

计算结果结构:

{
  “IsAlert”: [0,1,2]   //预警状态,0-正常,1-异常,2-关注异常
  “JunZhi”: 0.94,  //相关性系数中位数,为了保持与已有前端代码兼容,保留原有字段名
  “DataList”: [
    {
      “x”: 1, //x轴数据
      “y”: 1, //y轴数据
      “value”: 2.12 //数值
    },
    ...
  ]
}

计算方案

单进程 Python 方案

优点:可以使用全部 Pandas, scikit-learn, tensorflow 库, 适合算法复杂、依赖Python独有第三方库场景, GICS平台已支持,占用系统资源小,平台同时运行多个应用时,可以避免平台过载。 记录行数在千万行级别,数据文件小于GB时,计算速度与并行方案处于同一量级;

缺点:不适合数据量更大的场景;

性能分析:

  • 数据量大小:10个场站一天的数据,10,439,616 条(千万级),共439MB;

  • 算法语言和架构:Pandas 单进程;

  • 计算资源:节点数:1(物理机), CPU核数:1, 主频:3.44GHz, 内存:2.5 ~ 3 GB

  • 计算单元数:4000

  • 运行时间:270 ~ 300秒

PySpark 并行方案

基于 PySpark 2.3 的 pandas_udf 实现 Spark 并行 + 单点使用 Pandas 处理。 GICS平台已支持。

优点:结合 Spark 的并行能力和 Pandas 的高效灵活;

缺点:目前只支持 Pandas,无法使用 scikit-learn 等其他框架;

性能分析:

  • 数据量大小:10个场站一天的数据,10,439,616 条(千万级),共439MB;

  • 算法语言和架构: PySpark + Pandas;

  • 计算资源:节点数:1(虚拟机), CPU核数:10, 主频:2.40GHz, 内存:2 ~ 2.5 GB(不含 CDH 和 Spark 后台服务,每个 executor 使用 100MB 左右内存)

  • 计算单元数:4000

  • 运行时间:290 ~ 310 秒

Python 并行计算框架

优点: 不依赖 CDH,集群部署方便(Anaconda 默认集成,不需要额外安装组件); 与纯Pandas代码高度兼容,适合算法复杂、依赖Python独有第三方库场景, 可以在单节点多进程和多节点多进程间灵活切换;

缺点:多节点多进程并行场景下,需要启动Dask调度服务;

性能分析:

  • 数据量大小:10个场站一天的数据,10,439,616 条(千万级),共439MB;

  • 算法语言和架构: Pandas + Dask

  • 计算资源:节点数:1(物理机), CPU核数:20, 主频:2.10GHz, 内存:小于 5GB

  • 计算单元数:4000

  • 运行时间:40 ~ 50 秒

Tip!

Press p or to see the previous file or, n or to see the next file

About

No description

Collaborators 1

Comments

Loading...