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_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'] =

第三题可视化:

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

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

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

  • 46
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值