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.rhkb.cn/news/329927.html

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

相关文章

AI网络爬虫:批量爬取电视猫上面的《庆余年》分集剧情

电视猫上面有《庆余年》分集剧情&#xff0c;如何批量爬取下来呢&#xff1f; 先找到每集的链接地址&#xff0c;都在这个class"epipage clear"的div标签里面的li标签下面的a标签里面&#xff1a; <a href"/drama/Yy0wHDA/episode">1</a> 这个…

玩转OpenHarmony PID:教你打造两轮平衡车

简介 此次为大家带来的是OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;系统与PID控制算法相结合并落地的平衡车项目。 PID控制算法是一种经典的&#xff0c;并被广泛应用在控制领域的算法。类似于这种&#xff1a;需要将某一个物理量保持稳定的场合&…

增强版 Kimi:AI 驱动的智能创作平台,实现一站式内容生成(图片、PPT、PDF)!

前言 基于扣子 Coze 零代码平台&#xff0c;我们从零到一轻松实现了专属 Bot 机器人的搭建。 AI 大模型&#xff08;LLM&#xff09;、智能体&#xff08;Agent&#xff09;、知识库、向量数据库、知识图谱&#xff0c;RAG&#xff0c;AGI 的不同形态愈发显现&#xff0c;如何…

Redis系统架构中各个处理模块是干什么的?no.19

Redis 系统架构 通过前面的学习&#xff0c;相信你已经掌握了 Redis 的原理、数据类型及访问协议等内容。本课时&#xff0c;我将进一步分析 Redis 的系统架构&#xff0c;重点讲解 Redis 系统架构的事件处理机制、数据管理、功能扩展、系统扩展等内容。 事件处理机制 Redis…

分布式限流总结

1、计数器 java内部可以使用原子计数器AtomicInteger\Semaphore信号量来做简单的限流 // 限流的个数private int maxCount 10;// 指定的时间内private long interval 60;// 原子类计数器private AtomicInteger atomicInteger new AtomicInteger(0);// 起始时间private lon…

【笔记】树(Tree)

一、树的基本概念 1、树的简介 之前我们都是在谈论一对一的线性数据结构&#xff0c;可现实中也有很多一对多的情况需要处理&#xff0c;所以我们就需要一种能实现一对多的数据结构--“树”。 2、树的定义 树&#xff08;Tree&#xff09;是一种非线性的数据结构&#xff0…

百度智能云参与信通院多项边缘计算标准编制,「大模型时代下云边端协同 AI 发展研讨会」成功召开

1 中国信通院联合业界制定、发布多项标准化成果&#xff0c;推动产业发展 大模型开启了 AI 原生时代&#xff0c;云边端协同 AI 构建了「集中式大规模训练」、「边缘分布式协同推理」新范式&#xff0c;有效降低推理时延和成本&#xff0c;提升数据安全和隐私性&#xff0c;也…

基于Vue3 + js-tool-big-box工具库实现3个随机数字的小游戏动画,快来挑战你的非凡手气!

不知你是否和我一样&#xff0c;我曾有一个猜3个随机数字的梦&#xff0c;但通过多次的努力&#xff0c;梦想最终未能实现&#xff0c;而且还波多了我的饭票。所以&#xff0c;我要通过vue3 js-tool-big-box 这个工具库&#xff0c;来实现一个猜3个随机数字的小游戏动画&#…

学习通高分免费刷课实操教程

文章目录 概要整体架构流程详细步骤云上全平台登录步骤小结 概要 我之前提到过一个通过浏览器的三个脚本就可以免费高分刷课的文章&#xff0c;由于不方便拍视频进行实操演示&#xff0c;然后写下了这个实操教程&#xff0c;之前的三个脚本划到文章末尾 整体架构流程 整体大…

一键批量提取TXT文档前N行,高效处理海量文本数据,省时省力新方案!

大量的文本信息充斥着我们的工作与生活。无论是研究资料、项目文档还是市场报告&#xff0c;TXT文本文档都是我们获取和整理信息的重要来源。然而&#xff0c;面对成百上千个TXT文档&#xff0c;如何快速提取所需的关键信息&#xff0c;提高工作效率&#xff0c;成为了许多人头…

我的第一个JAVA程序IDEA版

目录 第一步 新建一个空项目第二步 新建模块第三步 新建包第四步 新建类第五步 新建main方法 第一步 新建一个空项目 第二步 新建模块 第三步 新建包 第四步 新建类 然后在包文件夹下新建类 第五步 新建main方法

Java开发之JDBC

JDBC 介绍JDBC程序&#xff08;Statement&#xff09;相关细节URLResultSet 连接池程序&#xff08;PreparedStatement&#xff09; 本文主要记录一下学习JDBC的一些知识点 介绍JDBC 首先谈谈什么是JDBC。下面放几张图&#xff0c;大致就可以清楚JDBC了。程序&#xff08;Sta…

RPC原理技术

RPC原理技术 背景介绍起源组件实现工作原理 背景 本文内容大多基于网上其他参考文章及资料整理后所得&#xff0c;并非原创&#xff0c;目的是为了需要时方便查看。 介绍 RPC&#xff0c;Remote Procedure Call&#xff0c;远程过程调用&#xff0c;允许像调用本地方法一样调…

bytebuddy入门

简介 Byte Buddy 是一个代码生成和操作库&#xff0c;用于在 Java 应用程序运行时创建和修改 Java 类&#xff0c;而无需编译器的帮助。除了 Java 类库附带的代码生成实用程序外&#xff0c;Byte Buddy 还允许创建任意类&#xff0c;并且不限于实现用于创建运行时代理的接口 核…

【信息安全】

信息安全 1.防火墙技术 防火墙是建立在内外网络边界上的过滤封锁机制。 补充内容 防火墙工作层次越低&#xff0c;工作效率越高&#xff0c;安全性越低DMZ的作用是保存一些公共服务器&#xff08;Web服务器、Eamil服务器&#xff09;防火墙的安全性从高到底&#xff1a;内网…

kafka Kerberos集群环境部署验证

背景 公司需要对kafka环境进行安全验证,目前考虑到的方案有Kerberos和SSL和SASL_SSL,最终考虑到安全和功能的丰富度,我们最终选择了SASL_SSL方案。处于知识积累的角度,记录一下kafka keberos安装部署的步骤。 机器规划 目前测试环境公搭建了三台kafka主机服务,现在将详细…

微软:最新ChatGPT-4o模型,可在 Azure OpenAI上使用

北京时间5月14日凌晨&#xff0c;OpenAI 一场不到 30 分钟的发布会&#xff0c;正式发布了 GPT-4o&#xff0c;视频语音交互丝滑到吓人&#xff0c;还即将免费可用&#xff01; GPT-4o&#xff0c;其中的「o」代表「omni」&#xff08;即全面、全能的意思&#xff09;&#xff…

FPGA搭积木之按键消抖(改进版)

目录 1.前言 2.回顾之前的设计 3.基于读者思路的设计 4.ModelSim仿真 1.前言 昨天分享的关于FPGA对机械按键消抖的设计&#xff0c;有读者指出了其中的不足&#xff0c;并给出了他的思路。今天就读者的设计思路&#xff0c;来再做一个按键消抖模块。这个程序大概是大学的时…

《Python编程从入门到实践》day34

# 昨日知识点回顾 json文件提取数据、绘制图表渐变色显示 # 今日知识点学习 第17章 17.1 使用Web API Web API作为网站的一部分&#xff0c;用于与使用具体URL请求特定信息的程序交互&#xff0c;这种请求称为API调用。 17.1.1 Git 和 GitHub Git&#xff1a;分布式版本控制系…

每日5题Day4 - LeetCode 16 - 20

每一步向前都是向自己的梦想更近一步&#xff0c;坚持不懈&#xff0c;勇往直前&#xff01; 第一题&#xff1a;16. 最接近的三数之和 - 力扣&#xff08;LeetCode&#xff09; class Solution {public int threeSumClosest(int[] nums, int target) {//别用dp了&#xff0c;…