2023年第六届河北省研究生数学建模竞赛题目B题Python求解代码
2023年第六届河北省研究生数学建模竞赛题目B题
本文文档与代码视频讲解与下载:【2023河北省研究生数学建模竞赛B题数据集和代码-哔哩哔哩】 https://b23.tv/weulGAO
光伏电池的异常检测与发电产能预测在碳达峰-碳中和的战略背景下,我国的光伏发电技术发展迅猛。我国风电、太阳能发电总装机容量预计在 2030年目标达到 12亿千瓦以上。光伏发电是利用半导体界面的光生伏特效应而将光能直接转变为电能的一种技术。这种技术的关键元件是 光伏 电池, 其 经过串联后进行封装保护可形成大面积的 光伏 电池组件,再配合功率控制器等部件就形成了光伏发电装置。
光伏发电受到光伏组件质量、 气象因素、太阳辐照度和使用情况等因素影响,从而出现发电量的波动。光伏组件主要是由许多个光伏晶体硅片组成的半导体硅太阳能电池拼接而成。在组件的制造、运输以及使用过程中会产生各种缺陷, 例如线状裂纹、星形裂纹、断栅、黑芯、粗线等 (同一光伏电池可具有多项 缺陷 。 这些缺陷会不同程度地降低组件的光电转换效率和可靠性。 例 如图 1 的光伏电池电致发光( EL)图像标记为无缺陷,表面能明显看出电池整体完好;图 2 的光伏电池 EL图像 包含线状 裂纹 类型缺陷 。

图 1 无缺陷的光伏电池样品

图 2 表面缺陷的光伏电池样品
同时气象因素也是影响光伏发电的一个重要因素,包括风速、温度、湿度、太同时气象因素也是影响光伏发电的一个重要因素,包括风速、温度、湿度、太阳辐照度、突发的极端天气情况等等,可能导致光伏发电效率下降,从而影响整个阳辐照度、突发的极端天气情况等等,可能导致光伏发电效率下降,从而影响整个能源系统的稳定性。阴天、大气污染、太阳高度等也会影响照射在光伏板上的太阳能源系统的稳定性。阴天、大气污染、太阳高度等也会影响照射在光伏板上的太阳光的强度。此外,太阳辐射强度和方向的变化也可能导致光伏发电量的波动,从而光的强度。此外,太阳辐射强度和方向的变化也可能导致光伏发电量的波动,从而影响整个能源系统的稳定性。影响整个能源系统的稳定性。
现有一批某地区光伏发电的相关数据,工作者依据这些数据已将其分为图像现有一批某地区光伏发电的相关数据,工作者依据这些数据已将其分为图像和数据两种类型。附件和数据两种类型。附件1给出了一些光伏给出了一些光伏EL电池图像,电池图像, 附件附件 2给出了给出了2020年年和和2021年的气象数据,附件年的气象数据,附件3给出了给出了2020年和年和2021年的发电产能数据,附件年的发电产能数据,附件4给出了历史数据。给出了历史数据。
请你们团队依据附件中的相关数据进行分析建模,解决以下问题:请你们团队依据附件中的相关数据进行分析建模,解决以下问题:
问题1数据集
问题 1 自行查阅光伏EL电池组件图像资料,并构建自己的光伏电池缺陷数,对构建的数据集进行建模,对附件1的图片进行缺陷检测,将检测结果填入下表,并对检测结果的合理性进行分析。
目前已找到的数据集如下,分为标注和图片,以及测试图片,共400+MB,含标注,
数据集:太阳能电池的 PV EL 异常检测数据集,其中包含 36,543 个具有各种内部缺陷和异质背景的近红外图像。该数据集包含 1 类无异常图像和 12 个不同类别的异常图像,包括裂纹(线和星)、手指中断、黑芯、错位、粗线、划痕、碎片、角和材料缺陷等。此外,还为 12 种缺陷提供了 40358 个真实边界框
数据集处理:可使用目标检测方法如yolo、SSD等算法,对训练的mAP进行评估等



问题2
2023年河北省研究生数学建模B题问题 2:请根据附件 2气象数据( 15min时间间隔),对数据进行预处理,建立气象模型,对2021年 11月 12-18日的风速、风向、温度等数据进行预测,并完成下表。
当涉及时间序列预测时,ARIMA(自回归移动平均模型)和SARIMA(季节性自回归移动平均模型)是常用的统计模型。它们都用于拟合时间序列数据,捕捉其中的趋势、季节性和周期性等特征,并进行未来值的预测。同时,ACF(自相关函数)和PACF(偏自相关函数)是时间序列数据的重要工具,用于确定ARIMA和SARIMA模型的阶数。
1. ARIMA(自回归移动平均模型):- ARIMA是一个常用的时间序列预测模型,它结合了自回归(AR)和移动平均(MA)的特性,用于拟合非平稳时间序列数据。
-
AR(自回归)部分使用时间序列数据自身的滞后值来预测未来值,表示为AR(p);MA(移动平均)部分使用滞后误差项来预测未来值,表示为MA(q)。
-
差分(d)用于将非平稳数据转换为平稳数据,使其满足ARIMA模型的前提条件。
-
ARIMA(p, d, q)是AR、I(差分)和MA的组合,其中p、d和q是分别对应AR、I和MA的阶数。
2. SARIMA(季节性自回归移动平均模型):- SARIMA是ARIMA模型的扩展版本,专门用于处理具有季节性的时间序列数据。
-
除了ARIMA模型的p、d和q参数外,SARIMA还有季节性的AR、I和MA参数,表示为AR(P)、I(D)和MA(Q)。
-
季节性周期(s)用于指定数据中季节性的间隔,例如一年365天或一周7天。
-
SARIMA(p, d, q) × (P, D, Q, s)是SARIMA模型的表示方式,其中p、d、q分别对应AR、I和MA的阶数,P、D、Q分别对应季节性AR、I和MA的阶数,s是季节性周期。
3. ACF(自相关函数):- ACF用于衡量时间序列数据与其自身滞后值之间的线性相关性。
-
绘制ACF图可以帮助确定时间序列数据是否具有自回归(AR)模型的特征,即数据与其滞后值之间是否存在相关性。
-
如果ACF在滞后值为0之外的阶数上呈现出显著的相关性,则可能需要AR模型。
4. PACF(偏自相关函数):- PACF用于衡量时间序列数据与其自身滞后值之间的直接线性关系,消除了中间滞后值的影响。
-
绘制PACF图可以帮助确定时间序列数据是否具有移动平均(MA)模型的特征,即数据与其滞后值之间是否存在直接的线性关系。
-
如果PACF在滞后值为0之外的阶数上呈现出显著的相关性,则可能需要MA模型。
首先加载数据:
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.arima.model import ARIMA
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
from statsmodels.stats.diagnostic import acorr_ljungbox
from statsmodels.tsa.stattools import adfuller# 1. 数据预处理
data = pd.read_excel("附件2.xlsx")
data['timestamp'] = pd.to_datetime(data['timestamp'])
data.set_index('timestamp', inplace=True)
然后使用使用线性插值填充缺失值

数据可视化:
plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体)
plt.rcParams['axes.unicode_minus'] = False # 步骤二(解决坐标轴负数的负号显示问题)
# 2. 数据可视化
plt.figure(figsize=(12, 6), dpi=300)
plt.plot(data['风速(m/15min)'])
plt.title('风速趋势图')
plt.xlabel('时间戳')
plt.ylabel('风速(m/15min)')
plt.tight_layout() # 调整图像布局,避免坐标轴标注超出边界
plt.savefig('风速趋势图.png')

然后建立风速的气象模型,进行ACF和PACF检验:
# 3. 建立气象模型 - 风速
wind_speed_data = data['风速(m/15min)']# Stationarity Check
result = adfuller(wind_speed_data)
print(f'ADF Statistic: {result[0]}')
print(f'p-value: {result[1]}')
print('Critical Values:')
for key, value in result[4].items():print(f' {key}: {value}')
然后进行时间序列训练和预测:
# ARIMA 模型拟合 -风向
model_wind_direction = ARIMA(wind_direction_data, order=(p, d, q))
model_fit_wind_direction = model_wind_direction.fit()# 残差分析 - 可视化并检查残差是否存在模式或显著的偏差。
residuals = model_fit_wind_direction.resid
plt.figure(figsize=(10, 6))
plt.plot(residuals)
plt.title('ARIMA 模型残差(风向)')
plt.xlabel('时间戳')
plt.ylabel('残差')
plt.tight_layout() # 调整图像布局,避免坐标轴标注超出边界
plt.savefig('ARIMA模型残差(风向).png')# ARIMA模型预测
考虑到季节性因素,也可以使用季节性时间序列预测SARIMA来预测:(代码略,下载地址见文章开头)
问题 3 结合问题2所得到的气象数据进行建模,对数据进行预处理,建立气象与发电产能的数学模型,并对2021年年11月月18日的光伏发电产能进行预测,并完成下表
建立气象与发电产能的数学模型,这是个回归问题,可以先使用主成分分析提取主成分,然后使用多种回归方法,如决策树回归、支持向量机回归、XGBoost回归等等
相关文章:
2023年第六届河北省研究生数学建模竞赛题目B题Python求解代码
2023年第六届河北省研究生数学建模竞赛题目B题 本文文档与代码视频讲解与下载:【2023河北省研究生数学建模竞赛B题数据集和代码-哔哩哔哩】 https://b23.tv/weulGAO 光伏电池的异常检测与发电产能预测在碳达峰-碳中和的战略背景下,我国的光伏发电技术发…...
【三维点云处理】顶点、面片、邻接矩阵、邻接距离矩阵以及稀疏存储概念
文章目录 vts和faces基础知识vertices-节点(3是点的三维坐标)faces-面片(3是构成三角形面片的3个点) 邻接矩阵邻接距离矩阵(NN500)稀疏矩阵 vts和faces基础知识 vertices-节点(3是点的三维坐标…...
ansible 中的fetch模块的作用是什么
Ansible中的fetch模块用于从远程主机上复制文件到控制主机上。 fetch模块允许用户在远程主机上复制文件或目录,并将其下载到控制主机上的指定位置。它可以在执行Playbook期间执行此操作,也可以在Ad-Hoc命令中使用。 fetch模块的一些常见用途包括&#…...
Zabbix-6.4.4部署及监控配置
一、目标 对zabbix-6.4.4版本进行调研。了解并测试zabbix-6.4.4部署以及监控配置。 二、过程 前言:最新版本的zabbix-6.4.4的要求有所增加,配置要求如下: MySQL版本:8.0.X PHP版本:7.4.X libXML:2.6.1…...
解决 npm ERR! missing script: build 错误的方法
系列文章目录 文章目录 系列文章目录前言一、错误原因二、解决方法:三、注意事项:总结 前言 在使用 npm 进行前端项目构建时,有时会遇到错误信息 “npm ERR! missing script: build”,该错误通常发生在没有定义构建脚本时。本文将…...
json-server创建静态服务器2
上次写的 nodejs创建静态服务器 这次再来个v2.0 利用json-server很方便就可以实现。 vscode打开文件夹,文件夹所在终端: json-server.cmd --watch db.json 这里视频教程是没有上述命令标红的,但是会报错,具体不详,…...
开源视频监控管理平台国标GB28181视频EasyCVR电子地图功能展示优化
视频监控综合管理平台EasyCVR可提供的视频能力包括:视频监控直播、云端录像、云存储、录像检索与回看、告警上报、平台级联、云台控制、语音对讲、电子地图、H.265自动转码等,也具备接入AI智能分析的能力。 视频汇聚平台EasyCVR可拓展性强、视频能力灵活…...
端口复用与重映射
端口复用和重映射 STM32F1有很多的内置外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫做复用。 大家都知道,MCU都有串口…...
ros2 launch 集合 gazebo yolov8 rviz2
目录 1. ros2 yolov8 检测需要以来一些库,分别是:rclpy cv_bridge std_msgs sensor_msgs sensor_msgs_py vision_msgs 2. 创建一个新的功能包 3. 建立 yolo_launch.py 里面先加载gazebo和rviz2,在创建好本地的yolov8的node文件后也加入进来。 4. 创建好本地的yol…...
SD NAND【商业】
SD NAND【商业】 前言版权推荐SD NAND外观NAND与TF卡的区别雷龙CS SD NAND(贴片式TF卡)性能体验及应用 最后 前言 2023-7-23 16:20:19 因为本人对硬件了解不是很多,所以该篇参考自官方文档。 以下内容源自《【商业】》 仅供学习交流使用 版权 禁止其他平台发布…...
实现任意进制(2—32)转换
2020/01/01 实现原理参考代码测试样例其他补充后记交流 实现原理 本程序借助10进制数为中介数据,实现任意进制数之间的相互转换(2-36进制范围) 需要注意的是,数值范围不可超出 long long int 所表示的范围,即所输入需…...
Spring Boot 集成 Redis 三种模式实践汇总
背景 项目的某个模块集成了 SpringBoot Redis 包,客户端使用 Lettuce,Redis 测试环境单机模式。但是现场反馈的 Redis 环境是集群,如果简单的修改 spring.redis 配置为集群的配置信息,程序能否能无缝衔接呢? 本文记录…...
MySQL DQL语法
MySQL DQL语法 DQL语法简介 DQL(Data Query Language)语句是一种用于从数据库中检索数据的语言。它主要用于数据查询和数据分析,而不是对数据库中的数据进行更新、插入或删除。DQL语句通常用于获取特定条件下的数据,进行聚合计算…...
算法之线性表1.1.1(7)带头结点链表的反向输出
设L为带头结点的单链表,编写算法实现从尾到头反向输出每个节点的值。 算法思想: 方法一:将链表压栈再输出,时间复杂度为O(n),空间复杂度为O(n) 方法二:用头插法重新建立单链表在输出,时间复杂度为O(n),空…...
设计模式三:抽象工厂模式(Abstract Factory Pattern)
抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一种方式来创建一系列相关或相互依赖的对象,而无需指定具体实现类。 在软件开发中,有时候需要根据不同的条件或环境来创建一组相关的对象。抽象工…...
Linux用户权限问题详解
Linux用户权限问题详解 【一】Linux权限的概念(1)用户类型(2)如何切换用户(3)用户相关的一些命令 【二】Linux文件权限管理(1)文件访问者的分类(2)文件类型和…...
flask中的session介绍
flask中的session介绍 在Flask中,session是一个用于存储特定用户会话数据的字典对象。它在不同请求之间保存数据。它通过在客户端设置一个签名的cookie,将所有的会话数据存储在客户端。以下是如何在Flask应用中使用session的基本步骤: 首先…...
记录联想拯救者R720重装系统
文章目录 bios里找不到U盘启动项2023.7.23重装系统后数据记录C盘内存修改默认AppData的路径(亲测,没用) bios里找不到U盘启动项 制作好启动盘后,开机按F2进入bios后,找不到U盘启动项,如下图所示࿱…...
Spring Alibaba Sentinel实现集群限流demo
1.背景 1.什么是单机限流? 小伙伴们或许遇到过下图这样的限流配置 又或者是这样的Nacos动态配置限流规则: 以上这些是什么限流?没错,就是单机限流,那么单机限流有什么弊端呢? 假设我们集群部署3台机器&a…...
102、SOA、分布式、微服务之间有什么关系和区别?
SOA、分布式、微服务之间有什么关系和区别? 分布式架构是指将单体架构中的各个部分拆分,然后部署到不同的机器或进程中去,SOA和微服务基本上都是分布式架构师SOA是一种面向服务的架构,系统的所有服务都注册在总线上,当调用服务时…...
shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...
【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...
