2024 电工杯高校数学建模竞赛(A题)数学建模完整思路+完整代码全解全析

你是否在寻找数学建模比赛的突破点?数学建模进阶思路!

作为经验丰富的数学建模团队,我们将为你带来2024电工杯数学建模竞赛(B题)的全面解析。这个解决方案包不仅包括完整的代码实现,还有详尽的建模过程和解析,帮助你全面理解并掌握如何解决类似问题。

完整内容在文章末尾阅读全文获取!

让小天先来带大家看看《A题:园区微电网风光储协调优化配置》,本次A题有着浓浓的电工背景,这题小天建议相关专业的同学选择。

问题一需要我们设计各园区独立运营储能配置方案及其经济性分析。

根据题目给出的条件,我们可以得到以下假设:

  1. 系统结构不变,即三个园区各自独立接入主电网,各园区的光伏和风电装机容量不变;

  2. 购电成本分别为固定值,与光伏和风电发电量无关;

  3. 系统运行规则不变,即各园区优先满足本区域负荷,不足部分从主电网购电,多余电量不允许向主电网出售;

  4. 系统运行规律不变,即风光发电和负荷的波动特性保持不变;

  5. 储能系统为磷酸铁锂电池,其功率单价和能量单价固定,充放电效率为95%,运行寿命为10年;

  6. 储能系统的SOC允许范围为10%~90%;

  7. 系统考虑一天中每个小时的运行情况。

我们可以得到以下变量:

  1. Ppv.A,Ppv.C,Pw.B,Pw.C分别为园区A、C的光伏和风电装机容量;

  2. PLmax.A,PLmax.B,PLmax.C分别为园区A、B、C的最大负荷值;

  3. Ppv,Pw分别为联合园区的总光伏和风电装机容量;

  4. PLmax为联合园区的最大负荷值;

  5. SOC为储能系统的储能状态;

  6. P,Ppv.A,Ppv.C,Pw.B,Pw.C分别为每小时系统的总功率、园区A、C的光伏和风电功率;

  7. PL,PLmax.A,PLmax.B,PLmax.C分别为每小时系统的总负荷、园区A、B、C的负荷;

  8. Pcharge,Pdischarge分别为储能系统的充电和放电功率;

  9. Echarge,Edischarge分别为储能系统的充电和放电能量。

我们可以得到以下约束条件:

  1. 系统的总功率不能超过总负荷:P ≤ PL,其中P为系统的总功率,PL为系统的总负荷;

  2. 各园区的电力平衡方程:P = Ppv + Pw + Ppurchase - PL,其中P为系统的总功率,Ppv和Pw为各园区的光伏和风电功率,Ppurchase为从主电网购买的电量,PL为系统的总负荷;

  3. 储能系统的充电和放电功率不能超过其额定功率:Pcharge ≤ 50kW,Pdischarge ≤ 50kW;

  4. 储能系统的SOC范围为10%~90%:0.1 ≤ SOC ≤ 0.9;

  5. 储能系统的充电和放电能量满足以下关系:Echarge = Pcharge * Δt,Edischarge = Pdischarge * Δt,其中Δt为每个小时的时间长度;

  6. 储能系统的充放电功率和SOC满足以下关系:SOC(t+1) = SOC(t) + η*(Pcharge(t)-Pdischarge(t))-k,其中η为充放电效率,k为储能系统的自放电率;

  7. 储能系统的总能量不超过其容量:E ≤ 100kWh,其中E为储能系统的总能量。

我们可以得到以下目标函数:

  1. 未配置储能时的总电费:Cost = Ppurchase * Cpurchase,其中Ppurchase为从主电网购买的电量,Cpurchase为电价;

  2. 未配置储能时的总弃风弃光电量:Waste = Pwaste * Δt,其中Pwaste为从园区弃风或弃光的电量;

  3. 未配置储能时的总供电成本:TotalCost = Cost + Pwaste * Cwaste,其中Cwaste为弃风弃

首先,

1.分析未配置储能时各园区运行的经济性

未配置储能时,各园区的经济性取决于购电量、弃风弃光电量、总供电成本和单位电量平均供电成本。

设园区A、B、C的光伏发电功率分别为Ppv,A、Ppv,B、Ppv,C,风电功率分别为Pw,A、Pw,B、Pw,C,主电网电价为Pelec=1元/kWh,园区从主电网购电的电量为Pbuy,A、Pbuy,B、Pbuy,C,园区负荷为Pload,A、Pload,B、Pload,C,则未配置储能时各园区购电量为:

Pbuy,A=Pload,A-Ppv,A-Pw,A

Pbuy,B=Pload,B-Pw,B

Pbuy,C=Pload,C-Ppv,C-Pw,C

各园区的弃风弃光电量为:

Pwind,A=Ppv,A+Pw,A-Pload,A

Pwind,B=Pw,B-Pload,B

Pwind,C=Ppv,C+Pw,C-Pload,C

各园区的总供电成本为:

TotalCost=A(Pbuy,A·Pelec+Pwind,A·Pelec)+B(Pbuy,B·Pelec+Pwind,B·Pelec)+C(Pbuy,C·Pelec+Pwind,C·Pelec)

各园区的单位电量平均供电成本为:

AvgCost=A·Pelec+B·Pelec+C·Pelec

关键因素:

未配置储能时,各园区运行经济性的关键因素为光伏发电功率、风电功率以及主电网电价。光伏发电和风电功率的波动性越大,会导致弃风弃光电量增加,从而增加购电量和总供电成本。主电网电价较高时,园区从主电网购电的电量越大,单位电量平均供电成本越高,从而影响园区的经济性。

2.各园区分别配置50kW/100kWh储能,制定储能最优运行策略及购电计划,分析各园区运行经济性是否改善,并解释其原因

各园区分别配置50kW/100kWh储能后,储能的充放电效率为η=95%,运行寿命为10年,储能的成本为:

Cost=50kW·800元/kW+100kWh·1800元/kWh=140000元

园区A:

园区A的储能最优运行策略为:当光伏发电功率大于园区A负荷时,储能中充电;当光伏发电功率小于园区A负荷时,从储能中放电补足缺少的电量。此时,园区A的购电量为:

Pbuy,A=Pload,A-η·Pwind,A

园区B:

园区B的储能最优运行策略为:当风电功率大于园区B负荷时,储能中充电;当风电功率小于园区B负荷时,从储能中放电补足缺少的电量。此时,园区B的购电量为:

Pbuy,B=Pload,B-η·Pwind,B

园区C:

园区C的储能最优运行策略为:当光伏发电功率大于园区C负荷时,储能中充电;当光伏发电功率小于园区C负荷时,从储能中放电补足缺少的电量。此时,园区C的购电量为:

Pbuy,C=Pload,C-Ppv,C-η·Pwind,C

各园区运行经济性的改善原因:

配置储能后,园区的弃风弃光电量减少,从而减少了购电量和总供电成本,使得园区的经济性得到改善。

3.是否最优?

50kW/100kWh的方案并非最优

# 导入相关库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt# 读取数据文件
df_load = pd.read_excel('附件1:各园区典型日负荷数据.xlsx')
df_renewable = pd.read_excel('附件2:各园区典型日风光发电数据.xlsx')# 计算各园区购电量
df_load['A购电量'] = df_load['园区A负荷(kW)'] - df_renewable['园区A 光伏出力(p.u.)'] * 750 - df_renewable['园区C 光伏出力(p.u.)'] * 600
df_load['B购电量'] = df_load['园区B负荷(kW)'] - df_renewable['园区B风电出力(p.u.)'] * 1000 - df_renewable['园区C风电出力(p.u.)'] * 500
df_load['C购电量'] = df_load['园区C负荷(kW)'] - df_renewable['园区C 光伏出力(p.u.)'] * 600 - df_renewable['园区C风电出力(p.u.)'] * 500# 计算各园区弃风弃光电量
df_load['A弃风弃光电量'] = df_renewable['园区A 光伏出力(p.u.)'] * 750 + df_renewable['园区C 光伏出力(p.u.)'] * 600
df_load['B弃风弃光电量'] = df_renewable['园区B风电出力(p.u.)'] * 1000 + df_renewable['园区C风电出力(p.u.)'] * 500
df_load['C弃风弃光电量'] = df_renewable['园区C 光伏出力(p.u.)'] * 600 + df_renewable['园区C风电出力(p.u.)'] * 500# 计算总购电量和总弃风弃光电量
df_load['总购电量'] = df_load['A购电量'] + df_load['B购电量'] + df_load['C购电量']
df_load['总弃风弃光电量'] = df_load['A弃风弃光电量'] + df_load['B弃风弃光电量'] + df_load['C弃风弃光电量']

其中,E 表示单位电量平均供电成本,T_{p}、T_{b}、T_{c} 分别表示园区 A、B、C 的总购电成本,E_{total} 表示联合园区的总供电量。

联合运营的经济收益主要受到园区 A、B、C 的发电量和负荷量的影响,以及各园区的购电成本。当园区 A、B、C 的发电量增加时,总供电量也会增加,从而降低单位电量平均供电成本,增加经济收益。

另外,当园区 A、B、C 的负荷量增加时,总供电量也会增加,从而降低单位电量平均供电成本,增加经济收益。同时,当园区 A、B、C 的购电成本降低时,总供电成本也会降低,从而降低单位电量平均供电成本,增加经济收益。

因此,影响经济收益改变的主要因素为园区 A、B、C 的发电量和负荷量的增加,以及购电成本的降低。

import pandas as pd
import numpy as np# 读取数据
df_load = pd.read_excel('附件1.xlsx')
df_generation = pd.read_excel('附件2.xlsx')# 计算联合园区总负荷最大值
df_load['PLmax'] = df_load['园区A负荷(kW)'] + df_load['园区B负荷(kW)'] + df_load['园区C负荷(kW)']# 计算联合园区总光伏、风电装机容量
df_generation['Ppv'] = df_generation['园区A 光伏出力(p.u.)'] * 750 + df_generation['园区C 光伏出力(p.u.)'] * 600
df_generation['Pw'] = df_generation['园区B 风电出力(p.u.)'] * 1000 + df_generation['园区C 风电出力(p.u.)'] * 500# 计算联合园区总购电量
df_load['Pbuy'] = np.maximum(df_load['PLmax'] - df_generation['Ppv'] - df_generation['Pw'], 0)# 计算联合园区总弃风弃光电量
df_generation['Pdiscarded'] = np.maximum(df_generation['Ppv'] + df_generation['Pw'] - df_load['PLmax'], 0)# 计算联合园区总供电成本和单位电量平均供电成本
df_load['Cost'] = df_load['Pbuy'] * 1 + df_generation['Pdiscarded'] * 0.5
df_load['Average cost'] = df_load['Cost'] / df_load['PLmax']# 输出结果
print("联合园区总购电量为:", df_load['Pbuy'].sum(), "kWh")
print("联合园区总弃风弃光电量为:", df_generation['Pdiscarded'].sum(), "kWh")
print("联合园区总供电成本为:", df_load['Cost'].sum(), "元")
print("联合园区单位电量平均供电成本为:", df_load['Average cost'].mean(), "元/kWh")# 计算联合园区储能最优配置方案# 定义储能功率和容量的范围
power_range = range(1, 100) # 储能功率范围:1-100 kW
capacity_range = range(1, 1000) # 储能容量范围:1-1000 kWh# 初始化最优配置方案及其经济性指标
best_power = 0
best_capacity = 0
min_cost = float('inf')# 遍历所有可能的储能功率和容量组合,找出最优方案
for power in power_range:for capacity in capacity_range:# 计算储能运行策略及购电计划df_generation['Pstorage'] = np.minimum(df_load['PLmax'], power)df_generation['Pbuy'] = np.maximum(df_load['PLmax'] - df_generation['Ppv'] - df_generation['Pw'] - df_generation['Pstorage'], 0)# 计算储能运行成本和购电成本storage_cost = power * 800 + capacity * 1800 * 0.95 # 储能运行成本:功率单价 * 储能功率 + 能量单价 * 储能容量 * 充放电效率buy_cost = df_generation['Pbuy'] * 1 # 购电成本:购电量 * 购电单价# 计算总成本total_cost = sum(storage_cost) + sum(buy_cost)# 更新最优配置方案及其经济性指标if total_cost < min_cost:min_cost = total_costbest_power = powerbest_capacity = capacity# 输出最优配置方案及其经济性指标
print("最优储能功率为:", best_power, "kW")
print("最优储能容量为:", best_capacity, "kWh")
print("最优配置方案的总成本为:", min_cost, "元")# 计算各园区独立运营的风光储协调配置方案# 定义风光储协调配置方案
df_generation['Pstorage.A'] = 0
df_generation['Pstorage.B'] = 0
df_generation['Pstorage.C'] = 0
df_generation['Pbuy.A'] =

第三题可视化:

更多内容具体可以看看我的主页!
和 《小天数模》 团队,同名公众号 一起拿奖!里面包含本次竞赛全部思路与分析!

包含本次比赛全部题目和单题思路与代码,代码和文章会不断更新

关注小天数模,你们的支持是我更新的动力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/14233.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文说透组织中的利润中心建设

当前&#xff0c;规模型企业越来越重视利润中心建设&#xff0c;华为的实践表明&#xff0c;建好了利润中心&#xff0c;利润自然好&#xff0c;组织也会上台阶。很多企业利润上不去&#xff0c;就是没有搞好利润中心这个火车头。然而&#xff0c;很多人误以为利润中心只是财务…

TCP—三次握手和四次挥手

目录 一、三次握手和四次挥手的目的 二、TCP可靠的方面 三、什么是三次握手 四、第三次握手的目的 五、什么是四次挥手 六、超时时间的目的 七、SYN包、ACK包、FIN包 八、解决丢包和乱序 九、参考资料 一、三次握手和四次挥手的目的 TCP三次握手的目的主要是为了确保两…

基于机器学习模型预测信用卡潜在用户(XGBoost、LightGBM和Random Forest)

基于机器学习模型预测信用卡潜在用户&#xff08;XGBoost、LightGBM和Random Forest&#xff09; 随着数据科学和机器学习的发展&#xff0c;越来越多的企业开始利用这些技术来提高运营效率。在这篇博客中&#xff0c;我将分享如何利用机器学习模型来预测信用卡的潜在客户。此…

【Java】/*类和对象(下)*/

目录 一、封装 1.1 初识封装 1.2 如何封装成员变量 1.3 如何使用封装后的成员变量 二、访问限定符 三、包 3.1 包的概念 3.2 如何自定义包 3.3 导入包中的类 3.4 包的访问权限控制举例 示例一&#xff1a;private修饰成员变量 示例二&#xff1a; 不去修饰成员变…

【排序算法】插入排序和希尔排序

制作不易&#xff0c;三连支持一下吧&#xff01;&#xff01;&#xff01; 文章目录 前言一、插入排序的原理及实现二、希尔排序的原理及实现总结 前言 从这篇博客开始&#xff0c;我们将介绍几种常见的排序算法&#xff01; 插入排序算法是希尔排序的基础&#xff0c;所以理…

QT5.15.2及以上版本安装

更新时间&#xff1a;2024-05-20 安装qt5.15以上版本 系统&#xff1a;ubuntu20.04.06 本文安装&#xff1a;linux-5.15.2 下载安装 # 安装编译套件g sudo apt-get install build-essential #安装OpenGL sudo apt-get install libgl1-mesa-dev# 下载qt安装器 https://downl…

Centos 7.9 使用 iso 搭建本地 YUM 源

Centos 7.9 使用 iso 搭建本地 YUM 源 1 建立挂载点 [rootlocalhost ~]# mkdir -p /media/cdrom/ 2 创建光盘存储路径 [rootlocalhost ~]# mkdir -p /mnt/cdrom/ 3 上传 CentOS-7-x86_64-Everything-2207-02.iso 到 光盘存储路径 [rootlocalhost ~]# ls /mnt/cdrom/ CentOS-…

echarts取消纵坐标,自定义提示内容,完整 echarts 布局代码

效果图 实现代码 开启点击柱子时的提示内容 //完整写法请看下面tooltip: {trigger: axis,axisPointer: {type: shadow}},自定义提示内容 //完整写法请看下面formatter: function (param) {// param是悬浮窗所在的数据&#xff08;x、y轴数据&#xff09;let relVal "&…

免费,Python蓝桥杯等级考试真题--第10级(含答案解析和代码)

Python蓝桥杯等级考试真题–第10级 一、 选择题 答案&#xff1a; 解析&#xff1a;range取首不取尾&#xff0c;即产生了数1234&#xff0c;list&#xff08;&#xff09;函数可以把产生的数1234转化为列表&#xff0c;故答案为A。 答案&#xff1a;B 解析&#xff1a;sort&a…

【芯片IC】常见拆解欣赏 单片机、FPGA、RS232

1. Giga Devices GD32F103CBT6 2.Altera Cyclone EP1C3 is the smallest 1-st generation FPGA from Altera. 在多晶硅层面&#xff0c;我们可以看到每个 M4K 块被细分为两半&#xff08;两列共 26 个 “矩形”&#xff09;。逻辑元件阵列是非对称的&#xff0c;在阵列右侧正中…

jetcache缓存

1 介绍 是阿里的双极缓存&#xff0c;jvm-->redis-->数据库 文档&#xff1a;jetcache/docs/CN at master alibaba/jetcache GitHub 2 注意事项 使用的实体类一定实现序列化接口定时刷新注解&#xff0c;慎用 它会为每一个key创建一个定时器 &#xff1a;场景为&…

Node.js —— Express 中间件、接口编写、接口跨域 【0基础向Express模块学习】

目录 中间件的概念 什么是中间件 现实生活中的例子 Express 中间件的调用流程 ​编辑 Express 中间件的格式 next 函数的作用 Express 中间件的初体验 定义中间件函数 全局生效的中间件 定义全局中间件的简化形式 中间件的作用 ​编辑 定义多个全局中间件 局部生…

前端绘制流程节点数据

根据数据结构和节点的层级、子节点id&#xff0c;前端自己绘制节点位置和关联关系、指向、已完成节点等 <template><div><div>通过后端节点和层级&#xff0c;绘制出节点以及关联关系等</div><div class"container" ref"container&…

java面试框架篇(Spring常见问题、SpringBoot、SpringMVC、mybatis经典问题、SpringCloud组件)

文章目录 面试专题-java框架篇1. spring常见问题1.1. spring是什么?1.2. 谈谈你对AOP的理解1.3. 谈谈你对IOC的理解1.4. Spring Boot、 Spring MVC和Spring有什么区别1.5. spring bean 生命周期1.6. spring事务传播机制有哪些?1.7. 循环依赖1.8. spring框架中使用了哪些设计模…

vue3插槽solt 使用

背景增加组件的复用性&#xff0c;个人体验组件化还是react 方便。 Vue插槽solt如何传递具名插槽的数据给子组件&#xff1f; 一、solt 原理 知其然知其所以然 Vue的插槽&#xff08;slots&#xff09;是一种分发内容的机制&#xff0c;允许你在组件模板中定义可插入的内容…

Python 实现Word (DOC或DOCX)与TXT文本格式互转

目录 引言 安装Python库 使用Python将Word转换为TXT文本格式 使用Python将TXT文本格式转换为Word 引言 Word文档和TXT文本文件是日常工作和生活中两种常见的文件格式&#xff0c;各有其特点和优势。Word文档能够保留丰富的格式设置&#xff0c;如字体、段落、表格、图片等…

Java入门基础学习笔记42——常用API

API&#xff08;全称&#xff1a;Application Programming Interface&#xff1a;应用程序编程接口&#xff09; 就是Java自己写好的程序&#xff0c;给程序员调用&#xff0c;方便完成一些功能的。 为什么要学别人写好的程序&#xff1f; 不要重复造轮子。 开发效率高。 面…

YOLOv5改进 | 主干网络 | 用repvgg模块替换Conv【教程+代码 】

&#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 尽管Ultralytics 推出了最新版本的 YOLOv8 模型。但YOLOv5作为一个anchor base的目标检测的算法&#xff0c;YOLOv5可能比YOLOv8的效果更好。…

2024电工杯数学建模选题建议及各题思路来啦!

大家好呀&#xff0c;2024电工杯数学建模竞赛开始了&#xff0c;来说一下初步的选题建议吧&#xff1a; 首先定下主基调&#xff0c; 本次电工杯建议选B。A题目难度较高&#xff0c;只建议有相关专业知识和优化经验的队伍选择&#xff0c;小白队伍无脑选B即可。是比较经典的数…

网页加载时,大图片文件如何分片加载,有示例代码。

浏览网页时候&#xff0c;碰到大图片半天加载不出来&#xff0c;急死人&#xff0c;本问分享一种分片加载的方式&#xff0c;其实还有其他方式&#xff0c;比如先模糊后清晰等。 一、为什么要分片加载 大图片文件可以通过分片加载来提高加载性能和用户体验。分片加载的基本思…