你是否在寻找数学建模比赛的突破点?数学建模进阶思路!
作为经验丰富的数学建模团队,我们将为你带来2024电工杯数学建模竞赛(B题)的全面解析。这个解决方案包不仅包括完整的代码实现,还有详尽的建模过程和解析,帮助你全面理解并掌握如何解决类似问题。
完整内容在文章末尾阅读全文获取!
让小天先来带大家看看《A题:园区微电网风光储协调优化配置》,本次A题有着浓浓的电工背景,这题小天建议相关专业的同学选择。
问题一需要我们设计各园区独立运营储能配置方案及其经济性分析。
根据题目给出的条件,我们可以得到以下假设:
-
系统结构不变,即三个园区各自独立接入主电网,各园区的光伏和风电装机容量不变;
-
购电成本分别为固定值,与光伏和风电发电量无关;
-
系统运行规则不变,即各园区优先满足本区域负荷,不足部分从主电网购电,多余电量不允许向主电网出售;
-
系统运行规律不变,即风光发电和负荷的波动特性保持不变;
-
储能系统为磷酸铁锂电池,其功率单价和能量单价固定,充放电效率为95%,运行寿命为10年;
-
储能系统的SOC允许范围为10%~90%;
-
系统考虑一天中每个小时的运行情况。
我们可以得到以下变量:
-
Ppv.A,Ppv.C,Pw.B,Pw.C分别为园区A、C的光伏和风电装机容量;
-
PLmax.A,PLmax.B,PLmax.C分别为园区A、B、C的最大负荷值;
-
Ppv,Pw分别为联合园区的总光伏和风电装机容量;
-
PLmax为联合园区的最大负荷值;
-
SOC为储能系统的储能状态;
-
P,Ppv.A,Ppv.C,Pw.B,Pw.C分别为每小时系统的总功率、园区A、C的光伏和风电功率;
-
PL,PLmax.A,PLmax.B,PLmax.C分别为每小时系统的总负荷、园区A、B、C的负荷;
-
Pcharge,Pdischarge分别为储能系统的充电和放电功率;
-
Echarge,Edischarge分别为储能系统的充电和放电能量。
我们可以得到以下约束条件:
-
系统的总功率不能超过总负荷:P ≤ PL,其中P为系统的总功率,PL为系统的总负荷;
-
各园区的电力平衡方程:P = Ppv + Pw + Ppurchase - PL,其中P为系统的总功率,Ppv和Pw为各园区的光伏和风电功率,Ppurchase为从主电网购买的电量,PL为系统的总负荷;
-
储能系统的充电和放电功率不能超过其额定功率:Pcharge ≤ 50kW,Pdischarge ≤ 50kW;
-
储能系统的SOC范围为10%~90%:0.1 ≤ SOC ≤ 0.9;
-
储能系统的充电和放电能量满足以下关系:Echarge = Pcharge * Δt,Edischarge = Pdischarge * Δt,其中Δt为每个小时的时间长度;
-
储能系统的充放电功率和SOC满足以下关系:SOC(t+1) = SOC(t) + η*(Pcharge(t)-Pdischarge(t))-k,其中η为充放电效率,k为储能系统的自放电率;
-
储能系统的总能量不超过其容量:E ≤ 100kWh,其中E为储能系统的总能量。
我们可以得到以下目标函数:
-
未配置储能时的总电费:Cost = Ppurchase * Cpurchase,其中Ppurchase为从主电网购买的电量,Cpurchase为电价;
-
未配置储能时的总弃风弃光电量:Waste = Pwaste * Δt,其中Pwaste为从园区弃风或弃光的电量;
-
未配置储能时的总供电成本: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'] =
第三题可视化:
更多内容具体可以看看我的主页!
和 《小天数模》 团队,同名公众号 一起拿奖!里面包含本次竞赛全部思路与分析!
包含本次比赛全部题目和单题思路与代码,代码和文章会不断更新
关注小天数模,你们的支持是我更新的动力!