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

news2024/11/18 13:50:30

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

作为经验丰富的数学建模团队,我们将为你带来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_cost
            best_power = power
            best_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.coloradmin.cn/o/1687598.html

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

相关文章

【计算机网络原理】浅谈应用层协议的自定义和传输层UDP协议的总结

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

Javascript特效之鼠标悬停特效【css】

先看一看效果&#xff0c;是不是很炫酷啊&#xff1f;&#xff1f; HTML代码&#xff1a; <!DOCTYPE html> <html><head><meta charset""UTF-8"" /><title>CSS特效&#xff1a;鼠标悬停效果</title><link rel&q…

LeetCode 132题详解:使用动态规划与中心扩展法解决分割回文串 II 的最少分割次数问题

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容&#xff0c;和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣&#xff01; 推荐&#xff1a;数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航&#xff1a; LeetCode解锁100…

Java面试题--基础篇,更新中...

1、 Java语言有哪些特点 简单易学、有丰富的类库 面向对象&#xff08;Java最重要的特性&#xff0c;让程序耦合度更低&#xff0c;内聚性更高&#xff09; 与平台无关性&#xff08;JVM是Java跨平台使用的根本&#xff09; 可靠安全 支持多线…

列举几个淘宝商品详情API接口测试示例

API名&#xff1a;item_get 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_get,item_search_shop等]cacheString否[yes…

学生手机管理方案

咱们现在的学生&#xff0c;手机几乎成了标配。所以问题就来了&#xff0c;怎么管理这些手机&#xff0c;让手机在课堂上不成为学习的干扰&#xff1f; 先得搞明白&#xff0c;手机在学生手里上该扮演什么角色。手机确实能帮学生查资料、交流学习&#xff0c;甚至写作业&#x…

初识java——javaSE(6)抽象类与接口【求个关注!】

文章目录 前言一 抽象类1.1 抽象类的概念1.2 抽象类的语法&#xff1a;1.3 抽象类与普通类的区别&#xff1a; 二 接口2.1 接口的概念2.2 接口的语法2.2.1 接口的各个组成2.2.2 接口之间的继承 2.3 接口的实现接口不可以实例化对象 2.4 接口实现多态 三 Object类3.1 Object类是…

如何配置机器人ROS操作系统之间的有线和无线的局域网通信(基于ROS的主从通讯)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言1. 主从配置前的准备工作(1) 查看主从机的hostname(2) 查看各自主机和从机的IP(3) 本教程的hostname和ip如下 2. 在主机中的修改(1) 修改主机的/.bashr文件(2) …

5.1 Go 函数的定义与调用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

刷题之寻找重复数(leetcode)

寻找重复数 这题实际上就是变形的环形链表Ⅱ&#xff0c;下标为index的下一个元素是nums[index]&#xff0c;下下一个元素是nums[nums[index]] class Solution { public:int findDuplicate(vector<int>& nums) {int fast0;int slow0;while(1){fastnums[nums[fast]]…

数据采集与AI分析,亮数据+通义千问助力跨境电商前行

文章目录 前言工具介绍数据采集工具亮数据Web Scraper IDE亮点 AI数据分析工具 实战电商数据采集与AI分析电商平台选取数据采集完全托管数据集自定义数据集 AI分析 价格总结 前言 随着信息技术的飞速发展&#xff0c;数据采集与AI分析在跨境电商中扮演着越来越重要的角色。通过…

ENVI光谱识别指导采矿管理者监测铜矿分布

圣地亚哥SRGIS的GIS专家Chile需要利用影像光谱信号勘察Chuquicamata的铜矿分布。 解决方案 Chuquicamata是世界上最大的斑岩铜矿分布区。SRGIS发现西部地区只有有限的矿物和贫瘠的岩石&#xff0c;但东部有铜矿分布。为了进一步测定矿藏的情况&#xff0c;他们开发出一套程序&a…

Skywalking快速介绍

&#xff08;01&#xff09;SkyWalking简介 SkyWalking专为微服务&#xff0c;云原生架构和基于容器&#xff08;Docker&#xff0c;k8s&#xff0c;Mesos等&#xff09;的架构设计的应用程序性能监控工具&#xff0c;用于收集、分析、聚合和可视化来自服务和云原生基础设施的数…

【数据结构与算法】之堆及其实现!

目录 1、堆的概念及结构 2、堆的实现 2.1 堆向下和向上调整算法 2.2 堆的创建 2.3 建堆时间复杂度 2.4 堆的插入 2.5 堆的删除 2.6 完整代码 3、完结散花 个人主页&#xff1a;秋风起&#xff0c;再归来~ 数据结构与算法 个人格言&#…

OpenCV与AI深度学习 | 高效开源的OCR工具:Surya-OCR介绍与使用

本文来源公众号“OpenCV与AI深度学习”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;高效开源的OCR工具&#xff1a;Surya-OCR介绍与使用 1 背景 在众多企业应用中&#xff0c;光学字符识别 (OCR) 是一项基础技术。在本文中&…

AI视频教程下载:全面掌握ChatGPT和LangChain开发AI应用(附源代码)

这是一门深入的课程&#xff0c;涉及ChatGPT、LangChain和Python。打造专注于现实世界AI集成的AI应用&#xff0c;课件附有每一节涉及到的源代码。 **你将学到什么&#xff1a;** - 将ChatGPT集成到LangChain的生产风格应用中 - 使用LangChain组件构建复杂的文本生成管道 - …

OpenFeign微服务调用组件使用

前言&#xff1a;OpenFeign是可以跨服务、跨进程的调用方式。 什么是Feign Feign是Netflix开发的声明式、模版化的HTTP客户端。 优势: Feign可以做到使用 HTTP 请求远程服务时就像调用本地方法一样的体验&#xff0c;开发者完全感知不到这是远程方法&#xff0c;更感知不到这…

分布式限流总结

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

Linux x86_64 UEFI 启动

文章目录 前言一、UEFI二、Disk device compatibility2.1 GPT 磁盘分区表2.1.1 简介2.1.2 Linux 2.2 ESP&#xff08;EFI&#xff09; 文件系统2.2.1 简介2.2.2 LinuxLinux Kernel EFI Boot Stub 三、UEFI GPT grub23.1 简介3.2 引导方式 3.3 BOOTX64.EFI3.4 shimx64.efi3.5 …

pip换源ubuntu

到THU网站上有给定的教程 https://mirrors.tuna.tsinghua.edu.cn/help/pypi/ 方法1 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package然后在https://pypi.org/project/nvidia-cublas-cu12/#files 里面搜索你的包名 方法2 python -m pip install --upg…