Code Monkey home page Code Monkey logo

battery-competition-2024's Introduction

储能电池容量预测

新能源——储能系统电池容量预测

数境创新大赛平台 (industrial-bigdata.com)

得分情况2月23日第31名

数据分析

​ 每个电池数据保存在一个xlsx文件中,每个xlsx文件中包含三种sheet,分别是循环数据(1张)、工步数据(1张)、详细数据(n张)。其中循环数据记录了电池不同循环下的对应容量,工步数据记录了所有循环内的运行工步状态(包括恒流转恒压充电恒流放电静置),详细数据则记录了每次工步执行的具体时间。

思路

  • 首先,将每个电池的数据提取成一张表格数据,最终的表格中,每一行代表一个循环下的所有信息,包括容量工步状态的统计值(比如该循环内静置次数为2,则静置工步数为2)、工步执行时间(工步具体的执行总时长)。

  • 然后,建立回归预测模型,如LightGBM。使用当前循环的特征数据(工步状态和时间)预测当前循环下的电池容量。

问题

  • 部分电池中存在工步执行时间缺失的问题。建立时序自回归预测模型,即通过历史电池容量预测未来电池容量。这里使用DLinear作为baseline。输入和输出窗口大小均设置为10

  • 存在部分电池提取的特征异常,导致预测出的容量异常。对预测结果后处理。

  • 存在部分电池循环后期特征异常,导致预测结果异常,从循环中期开始,使用时序自回归预测未来容量。


改进思路

1. 这里我是使用pandas中的group来统计的工步状态,然后选择group中各部分的最大值作为工步执行的时间,然而当一个循环内某个工步执行多次时,则只能统计到执行时间最长的工步。而本来应该统计所有执行工步运行的总时间
1. 如何选择有效特征和进行特征工程。静置时间可能导致极化效应,放电时间可以反映电池的容量。数据集中的充电时间通常过长,或者多次充电,可能是为了保证满充。有可能引入误差
1. 进行自回归预测会导致误差累计等问题。可以考虑引入其他变量进行修正,比如考虑使用`容量`+三种`工步状态`进行回归预测下一步的`容量`。
1. 考虑不同数据集的分布情况,选择与测试集分布类似的数据集进行训练集。

训练集中6、12、13、16和测试集5、7、8、11、15运行工况差不多。

恒流放电_x 恒流转恒压充电_x 静置_x 恒流放电_y 恒流转恒压充电_y 静置_y
1 1 3 4000 4100 600

可以考虑不同的预处理和后处理方式。实验发现只进行后处理效果更好。可以参考fig文件夹下保存的实验效果。

训练集数据的原始容量

data_raw

使用滑动窗口和线性插值替换掉异常值后的容量

data_replace_outlier

基于局部窗口和四分位的异常点判断及线性插值进行替换的方法

import pandas as pd


def replace_outlier_IQR(df, col_name, window=4):
    """ 基于窗口的四分位数判断异常 """
    q1 = df[col_name].rolling(window=window, min_periods=window).quantile(0.25)
    q3 = df[col_name].rolling(window=window, min_periods=window).quantile(0.75)
    iqr = q3 - q1   # 计算IQR
    threshold = 1.5 * iqr  # 定义异常值阈值,这里使用1.5倍IQR
    lower_bound = q1 - threshold
    upper_bound = q3 + threshold
    df['is_outlier'] = ((df[col_name] < lower_bound) | (df[col_name] > upper_bound))

    """ 使用全局插值法替换异常值 """
    df.loc[df['is_outlier'], col_name] = np.nan  # 将异常值替换为NaN
    df[col_name] = df[col_name].interpolate(method='linear', limit_direction='both')  

    df.drop(columns='is_outlier', inplace=True)  # 删除标记列

    return df[col_name]

Acknowledge

[email protected]

battery-competition-2024's People

Contributors

cxl-edu avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.