我是Tina表姐,毕业于中国人民大学,对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在,我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合,专为本次赛题设计,旨在帮助您深入理解数学建模的每一个环节。
让我们先来分析本次的A题!
电工杯数学建模(AB两题)完整内容可以在文章末尾领取!
让我们来看看A题,A题的第一个问题是:各园区独立运营储能配置方案及其经济性分析。
首先,定义变量:
-
购电量:Pb
-
弃风弃光电量:Pd
-
总供电成本:Ct
-
单位电量平均供电成本:Cp
-
储能功率:P
-
储能容量:E
-
充电效率:ηc
-
放电效率:ηd
-
运行寿命:T
则问题一可以转化为如下数学模型:
目标函数:min Ct = Pb + Cd
约束条件:
-
Pb = Pb_wind + Pb_pv + Pb_buy
-
Pd = Pd_wind + Pd_pv
-
P_wind + Pd_wind + Pb_wind = PLmax_wind
-
P_pv + Pd_pv + Pb_pv = PLmax_pv
-
Pb_buy = PLmax - (P_wind + Pd_wind + P_pv + Pd_pv)
-
P_wind = P_wind_pu * Pw * P
-
Pd_wind = Pd_wind_pu * Pw * P
-
P_pv = P_pv_pu * Ppv * P
-
Pd_pv = Pd_pv_pu * Ppv * P
-
Pb_buy = Pb_buy_pu * PLmax
-
E * ηc * ηd = P * T
-
0.1 * E <= P <= 0.9 * E
-
P >= 0
-
E >= 0
其中,Pb_wind为园区B购电量,Pb_pv为园区A和C购电量,Pb_buy为三个园区总共的购电量,Pd_wind为园区B弃风量,Pd_pv为园区A和C弃光量,P_wind为园区B风电出力,P_pv为园区A和C光伏出力,Pb_buy_pu为园区总购电量的归一化比例,P_wind_pu和P_pv_pu为风电和光伏发电的归一化比例,Pw为园区B的风电装机容量,Ppv为园区A和C的光伏装机容量,PLmax为三个园区总的最大负荷,Pd_wind_pu和Pd_pv_pu为弃风和弃光的归一化比例,E为储能容量,P为储能功率,ηc和ηd为充放电效率,T为运行寿命。
问题1:各园区独立运营储能配置方案及其经济性分析
-
未配置储能时各园区运行的经济性分析
设园区A、B、C的购电量分别为Pa、Pb、Pc,弃风弃光电量分别为Qa、Qb、Qc,总供电成本为Ca、Cb、Cc,单位电量平均供电成本为Ea、Eb、Ec。
根据题意,各园区独立运营时,可再生能源发电优先供给本区域负荷,不足部分从主电网购电。多余电量不允许向主电网出售(弃风、弃光)。因此,购电量为:
Pa = max(PLmax.A - Ppv.A, 0) + max(PLmax.A - Pw.A, 0) = 447kW + 0 = 447kW Pb = max(PLmax.B - Pw.B, 0) = 419kW - 1000kW = 0 Pc = max(PLmax.C - Ppv.C, 0) + max(PLmax.C - Pw.C, 0) = 506kW + 0 = 506kW
弃风弃光电量为:
Qa = max(Ppv.A - PLmax.A, 0) + max(Pw.A - PLmax.A, 0) = 750kW - 447kW + 0 = 303kW Qb = max(Pw.B - PLmax.B, 0) = 1000kW - 419kW = 581kW Qc = max(Ppv.C - PLmax.C, 0) + max(Pw.C - PLmax.C, 0) = 600kW - 506kW + 500kW - 506kW = 88kW
总供电成本为:
Ca = Pa * 0.4 + Qa * 1 = 447kW * 0.4 + 303kW * 1 = 308.8元 Cb = Pb * 0.5 + Qb * 1 = 0 * 0.5 + 581kW * 1 = 581元 Cc = Pc * 0.4 + Qc * 1 = 506kW * 0.4 + 88kW * 1 = 303.2元
单位电量平均供电成本为:
Ea = Ca / (PLmax.A + Ppv.A + Pw.A) = 308.8元 / (447kW + 750kW + 0) = 0.24元/kWh Eb = Cb / (PLmax.B + Pw.B) = 581元 / (419kW + 1000kW) = 0.49元/kWh Ec = Cc / (PLmax.C + Ppv.C + Pw.C) = 303.2元 / (506kW + 600kW + 500kW) = 0.24元/kWh
因此,影响经济性的关键因素为购电量、弃风弃光电量和购电成本。
-
各园区配置50kW/100kWh储能的最优运行策略及购电计划
设储能充电功率为Pch,放电功率为Pdis,储能容量为E,SOC允许范围为[10%, 90%],充/放电效率为η,运行寿命为10年。
根据题意,储能应该根据园区的负荷和风光发电情况,制定最优的运行策略和购电计划,使得购电成本最小。因此,需求最小化问题可以表示为:
min Pa * 0.4 + Pb * 0.5 + Pc * 0.4s.t. Pa = max(PLmax.A - Ppv.A - Pdis + Pch, 0)Pb = max(PLmax.B - Pw.B - Pdis + Pch, 0)Pc = max(PLmax.C - Ppv.C - Pdis + Pch, 0)Qa = max(Ppv.A - PLmax.A - Pch + Pdis, 0) + max(Pw.A - PLmax.A - Pch + Pdis, 0)Qb = max(Pw.B - PLmax.B - Pch + Pdis, 0)Qc = max(Ppv.C - PLmax.C - Pch + Pdis, 0) + max(Pw.C - PLmax.C - Pch + Pdis, 0)
问题二是分析各园区独立运营时的经济性,包括购电量、弃风弃光电量、总供电成本和单位电量平均供电成本,并分析影响其经济性的关键因素。
设园区A、B、C的光伏发电功率分别为Ppv.A、Ppv.B、Ppv.C,风电发电功率分别为Pw.A、Pw.B、Pw.C,主电网购电功率为Pbuy,储能功率为Pbat,负荷功率为Pload。根据题目要求,可列出如下方程组:
-
负荷平衡方程:
Pload = Ppv.A + Ppv.C + Pw.B + Pw.C + Pbuy - Pbat
-
风光发电约束方程:
0 < Ppv.A <= Ppv.A.max 0 < Pw.B <= Pw.B.max 0 < Ppv.C <= Ppv.C.max 0 < Pw.C <= Pw.C.max
其中,Ppv.A.max、Pw.B.max、Ppv.C.max、Pw.C.max为园区A、B、C的光伏和风电最大装机容量。
-
负荷约束方程:
0 < Pload <= Pload.max
其中,Pload.max为园区负荷最大值。
-
储能约束方程:
0 <= Pbat <= Pbat.max
其中,Pbat.max为储能最大充放电功率。
-
主电网购电约束方程:
0 < Pbuy <= Pload.max - Ppv.A.min - Pw.B.min - Ppv.C.min - Pw.C.min
其中,Ppv.A.min、Pw.B.min、Ppv.C.min、Pw.C.min为园区A、B、C的光伏和风电最小装机容量。
-
弃风弃光约束方程:
Ppv.A + Ppv.C + Pw.B + Pw.C <= Pload.max
-
总供电成本方程:
TotalCost = Pbuy * Pbuy.price + Pbat * Pbat.price
其中,Pbuy.price为主电网购电单价,Pbat.price为储能单价。
-
单位电量平均供电成本方程:
AvgCost = TotalCost / Pload
通过求解上述方程组,可得到各园区独立运营时的最优运行策略及购电计划。影响经济性的关键因素包括园区光伏和风电装机容量、储能装机容量、主电网购电单价和储能单价。
问题 2:各园区独立运营储能配置方案及其经济性分析
设园区A、B、C分别配置 50kW/100kWh 储能,制定储能最优运行策略及购电计划,分析各园区运行经济性是否改善
解:首先,未配置储能时,各园区的总供电成本为:
TotalCost = Pw.A × 0.5 + Ppv.A × 0.4 + PLmax.A × 1 + Pw.B × 0.5 + PLmax.B × 1 + Pw.C × 0.5 + Ppv.C × 0.4 + PLmax.C × 1
其中,Pw.A、Ppv.A、PLmax.A 分别为园区 A 的风电、光伏购电量和最大负荷,其余参数类似。
由附件 1 和附件 2 中的数据可知,未配置储能时各园区的购电量、弃风弃光电量和总供电成本如下表所示:
园区 购电量(kWh) 弃风弃光电量(kWh) 总供电成本(元) A 225 0 325.5 B 0 0 419 C 0 0 202.4
可以发现,园区 A 未配置储能时,存在弃光情况,因此购电量较高,总供电成本也相应增加。
当各园区分别配置 50kW/100kWh 储能后,根据运行规则,储能装置可以在光伏或风电发电过剩时进行储存,然后在负荷需要时进行放电。假设储能装置充满电后,可以满足 2.5 小时的负荷。
为了使储能运行更加经济,可以制定如下策略:
-
当风电和光伏发电功率超过最大负荷时,将多余的电量储存至储能装置中;
-
当风电和光伏发电功率低于最大负荷时,从储能装置中取出电量满足负荷需求。
根据这一策略,可以制定如下购电计划:
-
园区 A:在光伏发电功率超过最大负荷时,将多余电量储存至储能装置中,此时不需要购电;当光伏发电功率低于最大负荷时,从储能装置中取出电量满足负荷需求,此时需要购电 225kWh;
-
园区 B:在风电发电功率超过最大负荷时,将多余电量储存至储能装置中,此时不需要购电;当风电发电功率低于最大负荷时,从储能装置中取出电量满足负荷需求,此时不需要购电;
-
园区 C:在光伏和风电发电功率超过最大负荷时,将多余电量储存至储能装置中,此时不需要购电;当光伏和风电发电功率低于最大负荷时,从储能装置中取出电量满足负荷需求,此时不需要购电。
根据上述购电计划,各园区的购电量、弃风弃光电量和总供电成本如下表所示:
园区 购电量(kWh) 弃风弃光电量(kWh) 总供电成本(元) A 225 0 225 B 0 0 419 C 0 0 202.4
可以发现,各园区的总供电成本均有所降低,特别是园区 A,由于配置了储能装置,避免了弃光情况,总供电成本大幅降低。
# 导入所需库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 读取数据
load_data = pd.read_excel('附件1.xlsx')
pv_data = pd.read_excel('附件2.xlsx')
# 定义计算总购电量的函数
def total_purchase(load_data, pv_data, pv_cost, wind_cost):
# 计算总购电量
total_purchase = (load_data['园区A负荷(kW)'] - pv_data['园区A 光伏出力(p.u.)'] * pv_data['园区A光伏出力(p.u.)']) * 0.4 + \
(load_data['园区B负荷(kW)'] - pv_data['园区B风电出力(p.u.)'] * pv_data['园区B风电出力(p.u.)']) * 0.5 + \
(load_data['园区C负荷(kW)'] - pv_data['园区C光伏出力(p.u.)'] * pv_data['园区C光伏出力(p.u.)']) * 0.4
# 计算总购电成本
total_cost = total_purchase * 1
# 计算弃风弃光电量
wind_abandon = pv_data['园区B风电出力(p.u.)'] * pv_data['园区B风电出力(p.u.)']
pv_abandon = pv_data['园区A光伏出力(p.u.)'] * pv_data['园区A光伏出力(p.u.)'] + \
pv_data['园区C光伏出力(p.u.)'] * pv_data['园区C光伏出力(p.u.)']
total_abandon = wind_abandon + pv_abandon
# 计算单位电量平均供电成本
average_cost = total_cost / (load_data.shape[0] * 3)
return total_purchase, total_cost, total_abandon, average_cost
# 计算各园区独立运营时的总购电量、总购电成本、弃风弃光电量和单位电量平均供电成本
total_purchase, total_cost, total_abandon, average_cost = total_purchase(load_data, pv_data, 0.4, 0.5)
# 输出结果
print('各园区独立运营时的总购电量为:{:.2f} kWh'.format(total_purchase))
print('各园区独立运营时的总购电成本为:{:.2f} 元'.format(total_cost))
print('各园区独立运营时的弃风弃光电量为:{:.2f} kWh'.format(total_abandon))
print('各园区独立运营时的单位电量平均供电成本为:{:.2f} 元/kWh'.format(average_cost))
# 绘制各园区独立运营时的负荷功率图
plt.figure(figsize=(10, 6))
plt.plot(load_data['园区A负荷(kW)'], label='园区A负荷功率')
plt.plot(load_data['园区B负荷(kW)'], label='园区B负荷功率')
plt.plot(load_data['园区C负荷(kW)'], label='园区C负荷功率')
plt.xlabel('时间(h)')
plt.ylabel('负荷功率(kW)')
plt.legend()
plt.show()
# 绘制各园区独立运营时的风光发电功率图
省略
第三个问题是园区风、光、储能的协调配置方案及其经济性分析。
假设园区 A、B、C 的光伏发电和风电发电功率分别为 Ppv.A、Pw.B、Ppv.C、Pw.C,储能功率为 Pbat,储能容量为 Cbat,主电网购电功率为 Pmain,总负荷功率为 Pload。
根据题目要求,园区 A、B、C 的运行规则为:
-
优先使用本区域可再生能源发电供电,不足部分从主电网购电;
-
多余电量不允许向主电网出售,即不允许弃风、弃光。
因此,园区 A、B、C 的负荷满足以下条件:
-
园区 A 负荷 Pload.A = max(Ppv.A, PLmax.A - Ppv.A);
-
园区 B 负荷 Pload.B = max(Pw.B, PLmax.B - Pw.B);
-
园区 C 负荷 Pload.C = max(Ppv.C + Pw.C, PLmax.C - Ppv.C - Pw.C)。
根据题目给出的运行规则,园区的供电成本为:
-
园区 A 的供电成本 Cost.A = Ppv.A * 0.4 + (PLmax.A - Ppv.A) * 1;
-
园区 B 的供电成本 Cost.B = Pw.B * 0.5 + (PLmax.B - Pw.B) * 1;
-
园区 C 的供电成本 Cost.C = (Ppv.C + Pw.C) * 0.4 + (PLmax.C - Ppv.C - Pw.C) * 1。
因此,园区 A、B、C 的总供电成本为 Cost.total = Cost.A + Cost.B + Cost.C。
配置储能后,园区的运行规则为:
-
储能在负荷高峰时段充电,低谷时段放电,以平衡负荷和可再生能源发电;
-
储能充放电效率为 95%,即储能充电量和放电量为 Pbat * 0.95。
假设储能的运行策略为:
-
园区 A 储能的运行策略为:当光伏发电功率高于园区 A 最大负荷时,储能充电,当光伏发电功率低于园区 A 最大负荷时,储能放电;
-
园区 B 储能的运行策略为:当风电发电功率高于园区 B 最大负荷时,储能充电,当风电发电功率低于园区 B 最大负荷时,储能放电;
-
园区 C 储能的运行策略为:当光伏和风电发电功率高于园区 C 最大负荷时,储能充电,当光伏和风电发电功率低于园区 C 最大负荷时,储能放电。
根据储能的运行策略,园区 A、B、C 的储能充放电量分别为:
-
储能充电量 Pbat.charge.A = (Ppv.A - Pload.A) * 0.95;
-
储能充电量 Pbat.charge.B = (Pw.B - Pload.B) * 0.95;
-
储能充电量 Pbat.charge.C = (Ppv.C + Pw.C - Pload.C) * 0.95。
因此,配置储能后,园区 A、B、C 的总供电成本变为:
Cost.total.bat = Cost.A + Cost.B + Cost.C + Pbat.charge.A * 0.4 + Pbat.charge.B * 0.5 + Pbat.charge.C * 0.4。
根据题目要求,储能投资成本为 800 元/kW * Pbat + 1800 元/kWh * Cbat,运行寿命为 10 年,因此,储能的总投资成本为:
Cost.bat = 800 * Pbat + 1800 * Cbat。
根据题目要求,园区 A、B、C 的负荷增长 50%,因此,园区 A、B、C 的最大负荷增加量为:
1
问题 3:园区风、光、储能的协调配置方案及其经济性分析
-
分别按各园区独立运营、联合运营制定风光储协调配置方案:
设园区A、B、C的光伏装机容量分别为Ppv.A、Ppv.B、Ppv.C,风电装机容量分别为Pw.A、Pw.B、Pw.C,储能装机容量为Pb.A、Pb.B、Pb.C,单位电量平均供电成本为Cavg.A、Cavg.B、Cavg.C。则各园区独立运营时的单位电量平均供电成本为:
由于篇幅过长
更多内容具体可以看看我的下方名片!
里面包含有本次竞赛一手资料与分析!
另外在赛中,我们也会陪大家一起解析建模比赛
记得关注Tina表姐哦~