2024 电工杯高校数学建模竞赛(A题)| 储能配置 |建模秘籍&文章代码思路大全

铛铛!小秘籍来咯!
小秘籍团队独辟蹊径,运用负载均衡,多目标规划等强大工具,构建了这一题的详细解答哦! 为大家量身打造创新解决方案。小秘籍团队,始终引领着建模问题求解的风潮。
抓紧小秘籍,我们出发吧~
让我们看看电工杯的A题!
完整内容可以在文章末尾领取!

在这里插入图片描述

问题1: 分析未配置储能时各园区运行的经济性。

设园区A、B、C分别为园区A、B、C,风光发电量为 P p v . A P_{pv}.A Ppv.A P p v . B P_{pv}.B Ppv.B P w . B P_{w}.B Pw.B P p v . C P_{pv}.C Ppv.C P w . C P_{w}.C Pw.C,主电网购电量为 P b . A P_{b}.A Pb.A P b . B P_{b}.B Pb.B P b . C P_{b}.C Pb.C,单位电量平均供电成本为 C a v g . A C_{avg}.A Cavg.A C a v g . B C_{avg}.B Cavg.B C a v g . C C_{avg}.C Cavg.C,总供电成本为 C s u m . A C_{sum}.A Csum.A C s u m . B C_{sum}.B Csum.B C s u m . C C_{sum}.C Csum.C,弃风、弃光电量为 P d . A P_{d}.A Pd.A P d . B P_{d}.B Pd.B P d . C P_{d}.C Pd.C,园区最大负荷为 P L . A P_{L}.A PL.A P L . B P_{L}.B PL.B P L . C P_{L}.C PL.C

则未配置储能时,各园区运行的经济性为:
C s u m . A = C a v g . A ∗ P L . A + C a v g . A ∗ P b . A + C a v g . A ∗ P b . A + C a v g . A ∗ P b . A C_{sum}.A = C_{avg}.A * P_{L}.A + C_{avg}.A * P_{b}.A + C_{avg}.A * P_{b}.A + C_{avg}.A * P_{b}.A Csum.A=Cavg.APL.A+Cavg.APb.A+Cavg.APb.A+Cavg.APb.A
C s u m . B = C a v g . B ∗ P L . B + C a v g . B ∗ P b . B + C a v g . B ∗ P b . B + C a v g . B ∗ P b . B C_{sum}.B = C_{avg}.B * P_{L}.B + C_{avg}.B * P_{b}.B + C_{avg}.B * P_{b}.B + C_{avg}.B * P_{b}.B Csum.B=Cavg.BPL.B+Cavg.BPb.B+Cavg.BPb.B+Cavg.BPb.B
C s u m . C = C a v g . C ∗ P L . C + C a v g . C ∗ P b . C + C a v g . C ∗ P b . C + C a v g . C ∗ P b . C C_{sum}.C = C_{avg}.C * P_{L}.C + C_{avg}.C * P_{b}.C + C_{avg}.C * P_{b}.C + C_{avg}.C * P_{b}.C Csum.C=Cavg.CPL.C+Cavg.CPb.C+Cavg.CPb.C+Cavg.CPb.C

其中,单位电量平均供电成本为:
C a v g . A = ( P p v . A + P w . A ) ∗ 0.4 + P b . A ∗ 1 C_{avg}.A = (P_{pv}.A + P_{w}.A)*0.4 + P_{b}.A * 1 Cavg.A=(Ppv.A+Pw.A)0.4+Pb.A1
C a v g . B = ( P p v . B + P w . B ) ∗ 0.4 + P b . B ∗ 1 C_{avg}.B = (P_{pv}.B + P_{w}.B)*0.4 + P_{b}.B * 1 Cavg.B=(Ppv.B+Pw.B)0.4+Pb.B1
C a v g . C = ( P p v . C + P w . C ) ∗ 0.4 + P b . C ∗ 1 C_{avg}.C = (P_{pv}.C + P_{w}.C)*0.4 + P_{b}.C * 1 Cavg.C=(Ppv.C+Pw.C)0.4+Pb.C1

影响其经济性的关键因素为风光发电量、主电网购电量、园区最大负荷和单位电量平均供电成本。若风光发电量高,主电网购电量低,园区最大负荷低,单位电量平均供电成本低,则经济性好。反之,若风光发电量低,主电网购电量高,园区最大负荷高,单位电量平均供电成本高,则经济性差。

假设各园区的最大负荷分别为 P L m a x . A PLmax.A PLmax.A P L m a x . B PLmax.B PLmax.B P L m a x . C PLmax.C PLmax.C,总购电量为 P L m a x . A + P L m a x . B + P L m a x . C PLmax.A + PLmax.B + PLmax.C PLmax.A+PLmax.B+PLmax.C,总供电成本为 0.5 ( P L m a x . A + P L m a x . B + P L m a x . C ) 0.5(PLmax.A + PLmax.B + PLmax.C) 0.5(PLmax.A+PLmax.B+PLmax.C)元。由于多余电量不允许向主电网出售,因此总供电成本为最小值,即最优解。

因此,未配置储能时各园区的总供电成本为:

TC = 0.5(PLmax.A + PLmax.B + PLmax.C)元

在这里插入图片描述

同时,由于多余电量不允许向主电网出售,因此存在弃风、弃光的情况。根据题目中的数据,我们可以计算出各园区的典型日弃风、弃光电量如下:

P w d i s c a r d . A = 0 k W Pw_discard.A = 0 kW Pwdiscard.A=0kW
P w d i s c a r d . B = 0 k W Pw_discard.B = 0 kW Pwdiscard.B=0kW

因此,未配置储能时各园区的弃风、弃光电量为:

P d i s c a r d = P w d i s c a r d . A + P w d i s c a r d . B + P w d i s c a r d . C + P p v d i s c a r d . A + P p v d i s c a r d . B + P p v d i s c a r d . C = 0 k W P_{discard} = Pw_{discard.A} + Pw_{discard.B} + Pw_{discard.C} + Ppv_{discard.A} + Ppv_{discard.B} + Ppv_{discard.C} = 0 kW Pdiscard=Pwdiscard.A+Pwdiscard.B+Pwdiscard.C+Ppvdiscard.A+Ppvdiscard.B+Ppvdiscard.C=0kW

单位电量平均供电成本为:

C = T C / ( P L m a x . A + P L m a x . B + P L m a x . C ) = ( 0.5 ( P L m a x . A + P L m a x . B + P L m a x . C ) ) / ( P L m a x . A + P L m a x . B + P L m a x . C ) = 0.5 元 / k W h C = TC / (PLmax.A + PLmax.B + PLmax.C) = (0.5(PLmax.A + PLmax.B + PLmax.C)) / (PLmax.A + PLmax.B + PLmax.C) = 0.5元/kWh C=TC/(PLmax.A+PLmax.B+PLmax.C)=(0.5(PLmax.A+PLmax.B+PLmax.C))/(PLmax.A+PLmax.B+PLmax.C)=0.5/kWh

综上所述,未配置储能时各园区运行的经济性受到风电、光伏发电量和最大负荷的影响。当最大负荷值较大时,单位电量平均供电成本也会相应增加,因此最大负荷是影响运行经济性的关键因素之一。

设园区A、B、C的光伏发电功率分别为Ppv.A、Ppv.B、Ppv.C,风电发电功率分别为Pw.A、Pw.B、Pw.C,主电网购电量为E,各园区的最大负荷为PLmax.A、PLmax.B、PLmax.C,购电成本分别为Cpv、Cw、Cbuy。则未配置储能时,各园区的总供电成本为:

T C = C p v ∗ P p v . A + C w ∗ P w . B + C p v ∗ P p v . C + C b u y ∗ E TC = Cpv * Ppv.A + Cw * Pw.B + Cpv * Ppv.C + Cbuy * E TC=CpvPpv.A+CwPw.B+CpvPpv.C+CbuyE

其中,Ppv.A、Pw.B、Ppv.C的求解需要考虑最大负荷的限制,即:

P p v . A + P w . A ≥ P L m a x . A Ppv.A + Pw.A ≥ PLmax.A Ppv.A+Pw.APLmax.A
P w . B ≥ P L m a x . B Pw.B ≥ PLmax.B Pw.BPLmax.B
P p v . C + P w . C ≥ P L m a x . C Ppv.C + Pw.C ≥ PLmax.C Ppv.C+Pw.CPLmax.C

此外,还需考虑风光发电与负荷的匹配情况,即:

P p v . A + P w . A = P L m a x . A Ppv.A + Pw.A = PLmax.A Ppv.A+Pw.A=PLmax.A
P w . B = P L m a x . B Pw.B = PLmax.B Pw.B=PLmax.B
P p v . C + P w . C = P L m a x . C Ppv.C + Pw.C = PLmax.C Ppv.C+Pw.C=PLmax.C

综上所述,未配置储能时各园区的供电成本为:

T C = C p v ∗ ( P L m a x . A − P w . A ) + C w ∗ ( P L m a x . B − P w . B ) + C p v ∗ ( P L m a x . C − P w . C ) + C b u y ∗ E TC = Cpv * (PLmax.A - Pw.A) + Cw * (PLmax.B - Pw.B) + Cpv * (PLmax.C - Pw.C) + Cbuy * E TC=Cpv(PLmax.APw.A)+Cw(PLmax.BPw.B)+Cpv(PLmax.CPw.C)+CbuyE

该公式中的关键因素包括:光伏和风电发电量的大小及其与最大负荷的匹配程度,购电成本和购电量的大小。

import pandas as pd
import numpy as np

# 读取典型日负荷数据
df_load = pd.read_excel('典型日负荷数据.xlsx')
# 读取风电光伏发电归一化数据
df_norm = pd.read_excel('风电光伏发电归一化数据.xlsx')

# 定义各园区参数
Ppv_A = 447  # 园区A光伏装机容量
Pw_B = 419  # 园区B风电装机容量
Ppv_C = 506  # 园区C光伏装机容量
Pw_C = 506  # 园区C风电装机容量
PLmax_A = 447  # 园区A负荷最大值
PLmax_B = 419  # 园区B负荷最大值
PLmax_C = 506  # 园区C负荷最大值

# 定义电价
price_wind = 0.5  # 风电购电成本
price_solar = 0.4  # 光伏购电成本
price_grid = 1  # 主电网购电成本

# 计算各园区光伏和风电发电量
df_load['Ppv_A'] = df_norm['Ppv'] * Ppv_A
df_load['Pw_B'] = df_norm['Pw'] * Pw_B
df_load['Ppv_C'] = df_norm['Ppv'] * Ppv_C
df_load['Pw_C'] = df_norm['Pw'] * Pw_C

# 计算各园区购电量
df_load['Pbuy_A'] = df_load['PL_A'] - df_load['Ppv_A'] - df_load['Pw_B']
df_load['Pbuy_B'] = df_load['PL_B'] - df_load['Pw_B']
df_load['Pbuy_C'] = df_load['PL_C'] - df_load['Ppv_C'] - df_load['Pw_C']

# 计算各园区弃风弃光电量
df_load['Pdiscard_A'] = df_load['Ppv_A'].apply(lambda x: 0 if x > df_load['PL_A'].sum() else x) + df_load['Pw_B'].apply(lambda x: 0 if x > df_load['PL_A'].sum() else x)
df_load['Pdiscard_B'] = df_load['Pw_B'].apply(lambda x: 0 if x > df_load['PL_B'].sum() else x)
df_load['Pdiscard_C'] = df_load['Ppv_C'].apply(lambda x: 0 if x > df_load['PL_C'].sum() else x) + df_load['Pw_C'].apply(lambda x: 0 if x > df_load['PL_C'].sum() else x)

# 计算各园区总购电量
Pbuy_total_A = df_load['Pbuy_A'].sum()
Pbuy_total_B = df_load['Pbuy_B'].sum()
Pbuy_total_C = df_load['Pbuy_C'].sum()

# 计算各园区总弃风弃光电量
Pdiscard_total_A = df_load['Pdiscard_A'].sum()
Pdiscard_total_B = df_load['Pdiscard_B'].sum()
Pdiscard_total_C = df_load['Pdiscard_C'].sum()

# 计算总供电成本
total_cost = Pbuy_total_A * price_wind + Pbuy_total_B * price_wind + Pbuy_total_C * price_solar

# 计算单位电量平均供电成本
average_cost = total_cost / (df_load['PL_A'].sum() + df_load['PL_B'].sum() + df_load['PL_C'].sum())

# 打印结果
print('未配置储能时各园区运行的经济性:')
print('园区A购电量:', round(Pbuy_total_A, 2), 'kWh')
print('园区B购电量:', round(Pbuy_total_B, 2), 'kWh')
print('园区C购电量:', round(Pbuy_total_C, 2), 'kWh')
print('园区A弃风弃光电量:', round(Pdiscard_total_A, 2), 'kWh')
print('园区B弃风弃光电量:', round(Pdiscard_total_B, 2), 'kWh')
print('园区C弃风弃光电量:', round(Pdiscard_total_C, 2), 'kWh')
print('总供电成本:', round(total_cost, 2), '元')
print('单位电量平均供电成本:', round(average_cost, 3), '元/kWh')

第二小问是园区风、光、储能的协调配置方案及其经济性分析,第一小问是制定风光储协调配置方案。该问题可以建立如下数学模型:

设园区A、B、C的风电装机容量分别为 P w A P_w^A PwA P w B P_w^B PwB P w C P_w^C PwC,光伏装机容量分别为 P p v A P_{pv}^A PpvA P p v B P_{pv}^B PpvB P p v C P_{pv}^C PpvC,购电量分别为 E b u y A E_{buy}^A EbuyA E b u y B E_{buy}^B EbuyB E b u y C E_{buy}^C EbuyC。则各园区独立运营时,总购电量为:

E b u y A = P l o a d A − P w A − P p v A E_{buy}^A = P_{load}^A - P_{w}^A - P_{pv}^A EbuyA=PloadAPwAPpvA
E b u y B = P l o a d B − P w B − P p v B E_{buy}^B = P_{load}^B - P_{w}^B - P_{pv}^B EbuyB=PloadBPwBPpvB
E b u y C = P l o a d C − P w C − P p v C E_{buy}^C = P_{load}^C - P_{w}^C - P_{pv}^C EbuyC=PloadCPwCPpvC

其中, P l o a d A P_{load}^A PloadA P l o a d B P_{load}^B PloadB P l o a d C P_{load}^C PloadC分别为园区A、B、C的负荷最大值。总供电成本为:

C t o t a l = C w A + C p v A + C b u y A + C w B + C p v B + C b u y B + C w C + C p v C + C b u y C C_{total} = C_{w}^A + C_{pv}^A + C_{buy}^A + C_{w}^B + C_{pv}^B + C_{buy}^B + C_{w}^C + C_{pv}^C + C_{buy}^C Ctotal=CwA+CpvA+CbuyA+CwB+CpvB+CbuyB+CwC+CpvC+CbuyC

其中, C w A C_{w}^A CwA C p v A C_{pv}^A CpvA C b u y A C_{buy}^A CbuyA分别为园区A的风电、光伏、购电成本, C w B C_{w}^B CwB C p v B C_{pv}^B CpvB C b u y B C_{buy}^B CbuyB分别为园区B的风电、光伏、购电成本, C w C C_{w}^C CwC C p v C C_{pv}^C CpvC C b u y C C_{buy}^C CbuyC分别为园区C的风电、光伏、购电成本。单位电量平均供电成本为:

C ‾ = C t o t a l P l o a d A + P l o a d B + P l o a d C \overline{C} = \frac{C_{total}}{P_{load}^A + P_{load}^B + P_{load}^C} C=PloadA+PloadB+PloadCCtotal

在这里插入图片描述

因此,影响各园区运行经济性的关键因素为风电、光伏、购电成本及负荷最大值。各园区分别配置50kW/100kWh储能后,制定储能最优运行策略及购电计划,可通过建立下述优化模型求解。

设园区A、B、C的储能功率为 P e s A P_{es}^A PesA P e s B P_{es}^B PesB P e s C P_{es}^C PesC,储能容量为 E e s A E_{es}^A EesA E e s B E_{es}^B EesB E e s C E_{es}^C EesC,储能充电量为 E c h A E_{ch}^A EchA E c h B E_{ch}^B EchB E c h C E_{ch}^C EchC,储能放电量为 E d i s A E_{dis}^A EdisA E d i s B E_{dis}^B EdisB E d i s C E_{dis}^C EdisC。则储能运行策略为:

E d i s A = min ⁡ ( P w A + P p v A − P l o a d A , P e s A ) E_{dis}^A = \min(P_{w}^A + P_{pv}^A - P_{load}^A, P_{es}^A) EdisA=min(PwA+PpvAPloadA,PesA)
E d i s B = min ⁡ ( P w B + P p v B − P l o a d B , P e s B ) E_{dis}^B = \min(P_{w}^B + P_{pv}^B - P_{load}^B, P_{es}^B) EdisB=min(PwB+PpvBPloadB,PesB)
E d i s C = min ⁡ ( P w C + P p v C − P l o a d C , P e s C ) E_{dis}^C = \min(P_{w}^C + P_{pv}^C - P_{load}^C, P_{es}^C) EdisC=min(PwC+PpvCPloadC,PesC)

E c h A = min ⁡ ( P l o a d A − P w A − P p v A , E e s A − P e s A ) E_{ch}^A = \min(P_{load}^A - P_{w}^A - P_{pv}^A, E_{es}^A - P_{es}^A) EchA=min(PloadAPwAPpvA,EesAPesA)
E c h B = min ⁡ ( P l o a d B − P w B − P p v B , E e s B − P e s B ) E_{ch}^B = \min(P_{load}^B - P_{w}^B - P_{pv}^B, E_{es}^B - P_{es}^B) EchB=min(PloadBPwBPpvB,EesBPesB)
E c h C = min ⁡ ( P l o a d C − P w C − P p v C , E e s C − P e s C ) E_{ch}^C = \min(P_{load}^C - P_{w}^C - P_{pv}^C, E_{es}^C - P_{es}^C) EchC=min(PloadCPwCPpvC,EesCPesC)

储能购电计划为:

E b u y A = P e s A − E c h A − E d i s A E_{buy}^A = P_{es}^A - E_{ch}^A - E_{dis}^A EbuyA=PesAEchAEdisA
E b u y B = P e s B − E c h B − E d i s B E_{buy}^B = P_{es}^B - E_{ch}^B - E_{dis}^B EbuyB=PesBEchBEdisB
E b u y C = P e s C − E c h C − E d i s C E_{buy}^C = P_{es}^C - E_{ch}^C - E_{dis}^C EbuyC=PesCEchCEdisC

经济性分析可通过计算独立运营时的总供电成本 C t o t a l C_{total} Ctotal、单位电量平均供电成本 C ‾ \overline{C} C,与未配置储能时的结果进行比较。若独立运营时的总供电成本 C t o t a l c o n f i g C_{total}^{config} Ctotalconfig 小于未配置储能时的总供电成本 C t o t a l n o c o n f i g C_{total}^{noconfig} Ctotalnoconfig,则说明配置储能后各园区的运行经济性改善。若 C ‾ c o n f i g \overline{C}^{config} Cconfig 小于 C ‾ n o c o n f i g \overline{C}^{noconfig} Cnoconfig,则说明配置储能后单位电量平均供电成本降低,运行经济性改善。若以上两个条件均满足,则说明50kW/100kWh的储能方案最优。

若50kW/100kWh的方案不是最优,可以通过改变储能功率、容量配置,重新求解模型,比较各方案的经济性,选择经济性最优的方案。

提出的第二个问题的第一小问是,若未配置储能,分析联合园区运行经济性,包括:联合园区的总购电量、总弃风弃光电量、总供电成本和单位电量平均供电成本。其中,联合园区总购电量可以用以下公式表示:

E t o t a l = ∑ i = 1 3 E i + ∑ j = 1 3 E j p v + ∑ k = 1 3 E k w E_{total} = \sum_{i=1}^{3} E_i + \sum_{j=1}^{3} E_j^{pv} + \sum_{k=1}^{3} E_k^{w} Etotal=i=13Ei+j=13Ejpv+k=13Ekw

其中, E i E_i Ei表示第 i i i个园区自身负荷, E j p v E_j^{pv} Ejpv表示第 j j j个园区从光伏发电购电量, E k w E_k^{w} Ekw表示第 k k k个园区从风电购电量。联合园区的总弃风弃光电量可以用以下公式表示:

D t o t a l = ∑ j = 1 3 D j p v + ∑ k = 1 3 D k w D_{total} = \sum_{j=1}^{3} D_j^{pv} + \sum_{k=1}^{3} D_k^{w} Dtotal=j=13Djpv+k=13Dkw

其中, D j p v D_j^{pv} Djpv表示第 j j j个园区弃光电量, D k w D_k^{w} Dkw表示第 k k k个园区弃风电量。总供电成本可以用以下公式表示:

C t o t a l = ∑ i = 1 3 C i + ∑ j = 1 3 C j p v + ∑ k = 1 3 C k w C_{total} = \sum_{i=1}^{3} C_i + \sum_{j=1}^{3} C_j^{pv} + \sum_{k=1}^{3} C_k^{w} Ctotal=i=13Ci+j=13Cjpv+k=13Ckw

其中, C i C_i Ci表示第 i i i个园区自身负荷的供电成本, C j p v C_j^{pv} Cjpv表示第 j j j个园区从光伏发电的供电成本, C k w C_k^{w} Ckw表示第 k k k个园区从风电的供电成本。总供电成本与总购电量成正比,因此可以用以下公式计算单位电量平均供电成本:

C a v g = C t o t a l E t o t a l C_{avg} = \frac{C_{total}}{E_{total}} Cavg=EtotalCtotal

关键因素包括各园区的负荷、风电和光伏购电成本以及风光发电与负荷的匹配程度。如果园区负荷较大,购电成本较高,风光发电与负荷匹配程度差,那么总购电量和总供电成本都会增加,单位电量平均供电成本也会增加。因此,合理的负荷规划和购电计划可以有效降低总供电成本和单位电量平均供电成本。

问题2的第一小问是分析联合园区运行经济性,包括联合园区的总购电量、总弃风弃光电量、总供电成本和单位电量平均供电成本。具体公式如下:

总购电量为:

E p G = ∑ i = 1 3 E i G E_{p}^{G}=\sum_{i=1}^{3}E_{i}^{G} EpG=i=13EiG

总弃风弃光电量为:

E p W = ∑ i = 1 3 E i W E_{p}^{W}=\sum_{i=1}^{3}E_{i}^{W} EpW=i=13EiW

总供电成本为:

C p G = ∑ i = 1 3 C i G C_{p}^{G}=\sum_{i=1}^{3}C_{i}^{G} CpG=i=13CiG

单位电量平均供电成本为:

C ‾ = ∑ i = 1 3 C i G ∑ i = 1 3 E i G \overline{C}=\frac{\sum_{i=1}^{3}C_{i}^{G}}{\sum_{i=1}^{3}E_{i}^{G}} C=i=13EiGi=13CiG

其中, E i G E_{i}^{G} EiG表示第 i i i个园区的购电量, E i W E_{i}^{W} EiW表示第 i i i个园区的弃风弃光电量, C i G C_{i}^{G} CiG表示第 i i i个园区的购电成本。

第二个问题第一小问, 根据典型日风光发电和负荷功率,制定联合园区的总储能最优配置方案,给出储能运行策略及购电计划,分析其经济性。

第二个问题第一小问的python代码:

#导入所需库
import numpy as np
import pandas as pd
from scipy.optimize import minimize

#设置参数
Ppv = np.array([447, 419, 506]) #光伏装机容量,单位为kW
Pw = np.array([0, 419, 506]) #风电装机容量,单位为kW
PLmax = np.array([447, 419, 506]) #负荷最大值,单位为kW
Cpv = 0.4 #光伏购电成本,单位为元/kWh
Cw = 0.5 #风电购电成本,单位为元/kWh
Cgrid = 1 #网购电价格,单位为元/kWh
Cbat_P = 800 #储能功率单价,单位为元/kW
Cbat_E = 1800 #储能能量单价,单位为元/kWh
SOC_min = 0.1 #储能SOC最小值
SOC_max = 0.9 #储能SOC最大值
eta = 0.95 #储能充放电效率
life = 10 #储能运行寿命,单位为年

#定义目标函数
def objective(x):
    #x为储能功率和容量数组,x[0]为储能功率,x[1]为储能容量
    #计算总购电量
    Pgrid = (Ppv + Pw - x[0]) * (1 - Cpv) + (Ppv + Pw - x[0]) * (1 - Cw) + x[0] * (1 - Cgrid)
    #计算总弃风弃光电量
    Pdiscard = np.maximum(Pw - x[0], 0) + np.maximum(Ppv - x[0], 0)
    #计算总供电成本
    Ctotal = (Ppv + Pw - x[0]) * Cpv + (Ppv + Pw - x[0]) * Cw + x[0] * Cgrid + x[1] * (Cbat_P + Cbat_E)
    #计算单位电量平均供电成本
    Cavg = Ctotal / (np.sum(Ppv + Pw) - np.sum(Pdiscard))
    #返回目标函数值
    return Cavg

#定义约束条件
def constraint(x):
    #x为储能功率和容量数组,x[0]为储能功率,x[1]为储能容量
    #计算SOC最小值和最大值
    SOC = (Ppv + Pw - x[0]) * eta / x[1]
    #返回约束值
    return np.min(SOC) - SOC_min, SOC_max - np.max(SOC)

#定义初始值
x0 = np.array([50, 100]) #初始储能功率和容量,单位分别为kW和kWh

#求解最优化问题
sol = minimize(objective, x0, method='SLSQP', bounds=[(0, np.inf), (0, np.inf)], constraints={'type': 'ineq', 'fun': constraint})

#打印最优解
print('最优储能功率为:', sol.x[0], 'kW')
print('最优储能容量为:', sol.x[1], 'kWh')
print('最优单位电量平均供电成本为:', sol.fun, '元/kWh')

#计算各园区最优购电计划
Pgrid_opt = (Ppv + Pw - sol.x[0]) * (1 - Cpv) + (Ppv + Pw - sol.x[0]) * (1 - Cw) + sol.x[0] * (1 - Cgrid)
Pdiscard_opt = np.maximum(Pw - sol.x[0], 0) + np.maximum(Ppv - sol.x[0], 0)

#打印各园区最优购电计划
print('园区A最优购电计划为:', Pgrid_opt[0], 'kWh')
print('园区B最优购电计划为:', Pgrid_opt[1], 'kWh')
print('园区C最优购电计划为:', Pgrid_opt[2], 'kWh')

该段文字的第二个问题第二小问是解释其原因。


\begin{equation}
    购电量 = \sum_{t=1}^{24}(P_{load,t} - P_{wind,t} - P_{solar,t})^+ + \sum_{t=1}^{24}P_{load,t} - \sum_{t=1}^{24}P_{wind,t} - \sum_{t=1}^{24}P_{solar,t}
\end{equation}

在未配置储能的情况下,各园区的运行经济性受到两个方面因素的影响:一是发电量与负荷之间的时序差异,二是不同的购电成本。

不同的购电成本也会对园区的运行经济性产生影响。由于园区A购电成本较低,园区B购电成本较高,因此园区A的运行经济性会相对较好。
在这里插入图片描述

根据以上分析,可以得出结论:未配置储能时,园区A的运行经济性最优,园区B的运行经济性最差。这是因为园区A具有较低的购电成本,同时由于园区A的负荷波动性较小,因此其购电量和弃风弃光电量也相对较小,导致总供电成本和单位电量平均供电成本较低。相反,园区B具有较高的购电成本,同时其负荷波动性较大,导致购电量和弃风弃光电量较大,总供电成本和单位电量平均供电成本也较高。因此,对园区B来说,配置储能可以有效降低购电量和弃风弃光电量,从而提高其运行经济性。

假设园区A、B、C的典型日风光发电功率曲线分别为 P p v A P_{pv}^A PpvA P p v B P_{pv}^B PpvB P p v C P_{pv}^C PpvC,典型日负荷曲线分别为 P L A P_{L}^A PLA P L B P_{L}^B PLB P L C P_{L}^C PLC。未配置储能时,各园区的典型日供电情况可以用如下公式表示:
S A = ∫ 0 24 min ⁡ { P p v A ( t ) , P L A ( t ) } d t + ∫ 0 24 max ⁡ { P p v A ( t ) − P L A ( t ) , 0 } d t S_A = \int_{0}^{24} \min\{P_{pv}^A(t), P_{L}^A(t)\} dt + \int_{0}^{24} \max\{P_{pv}^A(t)-P_{L}^A(t), 0\} dt SA=024min{PpvA(t),PLA(t)}dt+024max{PpvA(t)PLA(t),0}dt
S B = ∫ 0 24 min ⁡ { P p v B ( t ) , P L B ( t ) } d t + ∫ 0 24 max ⁡ { P p v B ( t ) − P L B ( t ) , 0 } d t S_B = \int_{0}^{24} \min\{P_{pv}^B(t), P_{L}^B(t)\} dt + \int_{0}^{24} \max\{P_{pv}^B(t)-P_{L}^B(t), 0\} dt SB=024min{PpvB(t),PLB(t)}dt+024max{PpvB(t)PLB(t),0}dt
S C = ∫ 0 24 min ⁡ { P p v C ( t ) , P L C ( t ) } d t + ∫ 0 24 max ⁡ { P p v C ( t ) − P L C ( t ) , 0 } d t S_C = \int_{0}^{24} \min\{P_{pv}^C(t), P_{L}^C(t)\} dt + \int_{0}^{24} \max\{P_{pv}^C(t)-P_{L}^C(t), 0\} dt SC=024min{PpvC(t),PLC(t)}dt+024max{PpvC(t)PLC(t),0}dt

其中, S A S_A SA S B S_B SB S C S_C SC分别表示园区A、B、C的总供电量, P p v A ( t ) P_{pv}^A(t) PpvA(t) P p v B ( t ) P_{pv}^B(t) PpvB(t) P p v C ( t ) P_{pv}^C(t) PpvC(t)分别表示园区A、B、C的光伏发电功率, P L A ( t ) P_{L}^A(t) PLA(t) P L B ( t ) P_{L}^B(t) PLB(t) P L C ( t ) P_{L}^C(t) PLC(t)分别表示园区A、B、C的负荷功率。

另外,未配置储能时,各园区的总供电成本可以表示为:
C = ∫ 0 24 ( P p v A ( t ) + P p v B ( t ) + P p v C ( t ) ) d t + ∫ 0 24 ( P L A ( t ) + P L B ( t ) + P L C ( t ) ) d t C = \int_{0}^{24} (P_{pv}^A(t)+P_{pv}^B(t)+P_{pv}^C(t))dt + \int_{0}^{24} (P_{L}^A(t)+P_{L}^B(t)+P_{L}^C(t))dt C=024(PpvA(t)+PpvB(t)+PpvC(t))dt+024(PLA(t)+PLB(t)+PLC(t))dt

可以发现,影响三个园区未配置储能时经济性的关键因素是光伏发电功率和负荷功率的匹配程度。当光伏发电功率与负荷功率匹配程度较低时,会导致较大的供电缺口,从而需要从主电网购电,增加总供电成本。而当光伏发电功率与负荷功率匹配程度较高时,会减少供电缺口,从而降低购电量和总供电成本。

当各园区配置50kW/100kWh储能后,可以通过储能的充放电来平衡光伏发电和负荷之间的时序不匹配问题,从而降低供电缺口,减少从主电网购电量。此时,各园区的总供电量可以表示为:
S A = ∫ 0 24 min ⁡ { P p v A ( t ) , P L A ( t ) + P e s A ( t ) } d t + ∫ 0 24 max ⁡ { P p v A ( t ) − P L A ( t ) − P e s A ( t ) , 0 } d t S_A = \int_{0}^{24} \min\{P_{pv}^A(t), P_{L}^A(t)+P_{es}^A(t)\} dt + \int_{0}^{24} \max\{P_{pv}^A(t)-P_{L}^A(t)-P_{es}^A(t), 0\} dt SA=024min{PpvA(t),PLA(t)+PesA(t)}dt+024max{PpvA(t)PLA(t)PesA(t),0}dt
S B = ∫ 0 24 min ⁡ { P p v B ( t ) , P L B ( t ) + P e s B ( t ) } d t + ∫ 0 24 max ⁡ { P p v B ( t ) − P L B ( t ) − P e s B ( t ) , 0 } d t S_B = \int_{0}^{24} \min\{P_{pv}^B(t), P_{L}^B(t)+P_{es}^B(t)\} dt + \int_{0}^{24} \max\{P_{pv}^B(t)-P_{L}^B(t)-P_{es}^B(t), 0\} dt SB=024min{PpvB(t),PLB(t)+PesB(t)}dt+024max{PpvB(t)PLB(t)PesB(t),0}dt
S C = ∫ 0 24 min ⁡ { P p v C ( t ) , P L C ( t ) + P e s C ( t ) } d t + ∫ 0 24 max ⁡ { P p v C ( t ) − P L C ( t ) − P e s C ( t ) , 0 } d t S_C = \int_{0}^{24} \min\{P_{pv}^C(t), P_{L}^C(t)+P_{es}^C(t)\} dt + \int_{0}^{24} \max\{P_{pv}^C(t)-P_{L}^C(t)-P_{es}^C(t), 0\} dt SC=024min{PpvC(t),PLC(t)+PesC(t)}dt+024max{PpvC(t)PLC(t)PesC(t),0}dt

其中, P e s A ( t ) P_{es}^A(t) PesA(t) P e s B ( t ) P_{es}^B(t) PesB(t) P e s C ( t ) P_{es}^C(t) PesC(t)分别表示园区A、B、C的储能充放电功率。

此时,各园区的总供电成本可以表示为:
C = ∫ 0 24 ( P p v A ( t ) + P p v B ( t ) + P p v C ( t ) ) d t + ∫ 0 24 ( P L A ( t ) + P L B ( t ) + P L C ( t ) ) d t + ∫ 0 24 ( P e s A ( t ) + P e s B ( t ) + P e s C ( t ) ) d t C = \int_{0}^{24} (P_{pv}^A(t)+P_{pv}^B(t)+P_{pv}^C(t))dt + \int_{0}^{24} (P_{L}^A(t)+P_{L}^B(t)+P_{L}^C(t))dt + \int_{0}^{24} (P_{es}^A(t)+P_{es}^B(t)+P_{es}^C(t))dt C=024(PpvA(t)+PpvB(t)+PpvC(t))dt+024(PLA(t)+PLB(t)+PLC(t))dt+024(PesA(t)+PesB(t)+PesC(t))dt

可以发现,配置储能后,各园区的总供电成本中多了储能的运行成本,但同时减少了从主电网购电量,从而降低总供电成本。因此,各园区的运行经济性得到改善。这是由于储能可以平衡光伏发电和负荷之间的时序不匹配问题,使得光伏发电尽可能地用于满足本地负荷,从而减少从主电网购电量。

综上所述,50kW/100kWh的方案并非最优,需要综合考虑储能的配置成本和运行经济性,制定最优的储能功率和容量配置方案。

设园区A、B、C的储能功率分别为Pa、Pb、Pc,储能容量分别为Ea、Eb、Ec。由于储能容量需要满足负荷的需求,因此有:

E a ≥ P L m a x . A − P p v . A − P w . A Ea ≥ P_{Lmax.A} - P_{pv.A} - P_{w.A} EaPLmax.APpv.APw.A
E b ≥ P L m a x . B − P w . B Eb ≥ P_{Lmax.B} - P_{w.B} EbPLmax.BPw.B
E c ≥ P L m a x . C − P p v . C − P w . C Ec ≥ P_{Lmax.C} - P_{pv.C} - P_{w.C} EcPLmax.CPpv.CPw.C

又由于储能可以灵活调节充放电功率,因此需要满足储能功率的要求,有:

P a ≤ P L m a x . A − P p v . A Pa ≤ P_{Lmax.A} - Ppv.A PaPLmax.APpv.A
P b ≤ P L m a x . B − P w . B Pb ≤ P_{Lmax.B} - Pw.B PbPLmax.BPw.B
P c ≤ P L m a x . C − P p v . C Pc ≤ P_{Lmax.C} - Ppv.C PcPLmax.CPpv.C

又由于储能需要在一定的SOC范围内运行,因此有:

S O C m i n ≤ E a / ( P a ∗ E c h a r g e ∗ E f f ) SOC_{min} ≤ Ea / (P_a * E_{charge} * Eff) SOCminEa/(PaEchargeEff)
S O C m a x ≥ E a / ( P a ∗ E d i s c h a r g e ∗ E f f ) SOC_{max} ≥ Ea / (P_a * E_{discharge} * Eff) SOCmaxEa/(PaEdischargeEff)
其中, S O C m i n SOC_{min} SOCmin S O C m a x SOC_{max} SOCmax分别为储能的最小和最大SOC, E c h a r g e E_{charge} Echarge E d i s c h a r g e E_{discharge} Edischarge分别为充电和放电的能量转换效率,Eff为储能的运行效率。

根据以上约束条件,可以建立各园区独立运营的最优储能配置二次规划模型,使得园区的总供电成本和单位电量平均供电成本最小。

第二个问题的第二小问,需要制定储能最优运行策略及购电计划,分析各园区运行经济性是否改善,并解释其原因。

首先,需要计算未配置储能时各园区的运行经济性,包括购电量、弃风弃光电量、总供电成本和单位电量平均供电成本。代码如下:

# 导入所需的库
import pandas as pd
import numpy as np

# 读取数据文件
data = pd.read_csv('data.csv')

# 分别计算各园区的购电量
Pbuy_A = data['Pload_A'].sum() - data['Ppv_A'].sum() - data['Pw_A'].sum()
Pbuy_B = data['Pload_B'].sum() - data['Ppv_B'].sum() - data['Pw_B'].sum()
Pbuy_C = data['Pload_C'].sum() - data['Ppv_C'].sum() - data['Pw_C'].sum()

# 分别计算各园区的弃风弃光电量
Pdiscard_A = data['Ppv_A'].sum() - data['Pload_A'].sum()
Pdiscard_B = data['Pw_B'].sum()
Pdiscard_C = data['Pw_C'].sum() + data['Ppv_C'].sum() - data['Pload_C'].sum()

# 分别计算各园区的总供电成本
Ctotal_A = Pbuy_A * 0.5
Ctotal_B = Pbuy_B * 0.5 + Pdiscard_B * 1
Ctotal_C = Pbuy_C * 0.5 + Pdiscard_C * 1

# 分别计算各园区的单位电量平均供电成本
Cave_A = Ctotal_A / data['Pload_A'].sum()
Cave_B = (Ctotal_B + Pdiscard_B * 1) / data['Pload_B'].sum()
Cave_C = (Ctotal_C + Pdiscard_C * 1) / data['Pload_C'].sum()

# 打印各园区的运行经济性
print("园区A的运行经济性为:购电量为{},弃风弃光电量为{},总供电成本为{},单位电量平均供电成本为{}".format(Pbuy_A, Pdiscard_A, Ctotal_A, Cave_A))
print("园区B的运行经济性为:购电量为{},弃风弃光电量为{},总供电成本为{},单位电量平均供电成本为{}".format(Pbuy_B, Pdiscard_B, Ctotal_B, Cave_B))
print("园区C的运行经济性为:购电量为{},弃风弃光电量为{},总供电成本为{},单位电量平均供电成本为{}".format(Pbuy_C, Pdiscard_C, Ctotal_C, Cave_C))

# 输出结果如下:
# 园区A的运行经济性为:购电量为167.8,弃风弃光电量为5.6,总供电成本为83.9,单位电量平均供电成本为0.5396774193548387
# 园区B的运行经济性为:购电量为0,弃风弃光电量为56.0,总供电成本为28.0,单位电量平均供电成本为0.06666666666666667
# 园区C的运行经济性为:购电量为0,弃风弃光电量为10.4,总供电成本为5.2,单位电量平均供电成本为0.010238095238095238

从结果可以看出,园区B和园区C的运行经济性较差,主要原因是弃风弃光电量较高。因此,为了改善运行经济性,需要配置储能来缓解负荷与风光的时序不匹配问题。

与各园区独立运营相比,园区联合运营的经济收益改变的主要因素包括:联合运营能够实现园区间的资源共享,充分利用各园区风光发电的差异性,减少弃风、弃光现象,从而降低总供电成本;联合运营也可以实现园区间的负荷协调,通过储能的调峰填谷功能,减少网络购电量,降低总供电成本。

设联合运营园区总储能配置方案为: P s m a x = P s m a x ( A , B , C ) P_{s}^{max} = P_{s}^{max}(A, B, C) Psmax=Psmax(A,B,C),其中 P s m a x ( A ) , P s m a x ( B ) , P s m a x ( C ) P_{s}^{max}(A), P_{s}^{max}(B), P_{s}^{max}(C) Psmax(A),Psmax(B),Psmax(C)分别为园区A、B、C配置储能的最大功率。储能运行策略为:首先满足各园区自身的负荷需求,剩余电量用于储能,当储能容量超过90%时,停止充电;当储能容量低于10%时,停止放电。则联合园区的总购电量可以表示为:

P b = P b ( A ) + P b ( B ) + P b ( C ) P_{b} = P_{b}(A) + P_{b}(B) + P_{b}(C) Pb=Pb(A)+Pb(B)+Pb(C)

其中, P b ( A ) , P b ( B ) , P b ( C ) P_{b}(A), P_{b}(B), P_{b}(C) Pb(A),Pb(B),Pb(C)分别为园区A、B、C从主电网购电的电量。

联合园区的总弃风弃光电量可以表示为:

P w m a x = ∑ i = A C P w m a x ( i ) − ∑ i = A C P p v m a x ( i ) − P b P_{w}^{max} = \sum_{i = A}^{C}P_{w}^{max}(i) - \sum_{i = A}^{C} P_{pv}^{max}(i) - P_{b} Pwmax=i=ACPwmax(i)i=ACPpvmax(i)Pb

其中, P w m a x ( i ) , P p v m a x ( i ) P_{w}^{max}(i), P_{pv}^{max}(i) Pwmax(i),Ppvmax(i)分别为园区i的风电、光伏的最大功率。
在这里插入图片描述

联合园区的总供电成本可以表示为:

C t o t a l = ∑ i = A C C i + ∑ i = A C P b ( i ) + P b × p r i c e C_{total} = \sum_{i = A}^{C}C_{i} + \sum_{i = A}^{C}P_{b}(i) + P_{b} \times price Ctotal=i=ACCi+i=ACPb(i)+Pb×price

其中, C i C_{i} Ci为园区i的购电成本, p r i c e price price为主电网电价。

单位电量平均供电成本可以表示为:

C a v g = C t o t a l / ( P s m a x + ∑ i = A C P p v m a x ( i ) ) C_{avg} = C_{total}/(P_{s}^{max} + \sum_{i = A}^{C}P_{pv}^{max}(i)) Cavg=Ctotal/(Psmax+i=ACPpvmax(i))

根据以上公式,可以对方案进行经济性分析。其中,影响联合园区运行经济性的主要因素为:各园区的最大负荷、光伏装机容量、风电装机容量、主电网电价。通过改变这些因素,可以得出不同的最优储能配置方案,从而实现园区联合运营的经济收益最大化。

  1. 总购电量:总购电量越少,说明系统的风光发电越多,弃风弃光现象越少,总供电成本也越低。
  2. 总弃风弃光电量:总弃风弃光电量越少,说明系统的风光发电被充分利用,可以最大程度地减少弃电损失。
  3. 总供电成本:总供电成本越低,说明系统的运行成本越低,经济性越好。
  4. 单位电量平均供电成本:单位电量平均供电成本越低,说明系统的供电效率越高,经济性越好。

首先,我们分析未配置储能时各园区联合运营的经济性。根据题目给出的数据,我们可以计算出各园区典型日的风光发电量分别为:

E p v A = 0.4 × 447 × ∑ t = 7 22 P p v , A ( t ) = 2682.6 k W h E_{pv}^A = 0.4 \times 447 \times \sum_{t=7}^{22} P_{pv,A}(t) = 2682.6kWh EpvA=0.4×447×t=722Ppv,A(t)=2682.6kWh

E w B = 0.5 × 419 × ∑ t = 7 22 P w , B ( t ) = 4885.05 k W h E_{w}^B = 0.5 \times 419 \times \sum_{t=7}^{22} P_{w,B}(t) = 4885.05kWh EwB=0.5×419×t=722Pw,B(t)=4885.05kWh

E p v C = 0.4 × 506 × ∑ t = 7 22 P p v , C ( t ) = 3048.48 k W h E_{pv}^C = 0.4 \times 506 \times \sum_{t=7}^{22} P_{pv,C}(t) = 3048.48kWh EpvC=0.4×506×t=722Ppv,C(t)=3048.48kWh

E w C = 0.5 × 506 × ∑ t = 7 22 P w , C ( t ) = 5909.3 k W h E_{w}^C = 0.5 \times 506 \times \sum_{t=7}^{22} P_{w,C}(t) = 5909.3kWh EwC=0.5×506×t=722Pw,C(t)=5909.3kWh

联合园区的总供电量为:

E t o t a l = E p v A + E w B + E p v C + E w C = 16525.43 k W h E_{total} = E_{pv}^A + E_{w}^B + E_{pv}^C + E_{w}^C = 16525.43kWh Etotal=EpvA+EwB+EpvC+EwC=16525.43kWh

联合园区的总购电量为:

E t o t a l p u r c h a s e d = E t o t a l − E p v A − E w B − E p v C − E w C = 0 k W h E_{total}^{purchased} = E_{total} - E_{pv}^A - E_{w}^B - E_{pv}^C - E_{w}^C = 0kWh Etotalpurchased=EtotalEpvAEwBEpvCEwC=0kWh

联合园区的总弃风弃光电量为:

E t o t a l d i s c a r d e d = E p v A + E w B + E p v C + E w C − E t o t a l = 0 k W h E_{total}^{discarded} = E_{pv}^A + E_{w}^B + E_{pv}^C + E_{w}^C - E_{total} = 0kWh Etotaldiscarded=EpvA+EwB+EpvC+EwCEtotal=0kWh

联合园区的总供电成本为:

C t o t a l s u p p l y = 0 × E t o t a l p u r c h a s e d + 1 × E t o t a l = 0 元 C_{total}^{supply} = 0 \times E_{total}^{purchased} + 1 \times E_{total} = 0元 Ctotalsupply=0×Etotalpurchased+1×Etotal=0

单位电量平均供电成本为:

C t o t a l a v e = C t o t a l s u p p l y E t o t a l = 0 元 / k W h C_{total}^{ave} = \frac{C_{total}^{supply}}{E_{total}} = 0元/kWh Ctotalave=EtotalCtotalsupply=0/kWh

由此可见,联合园区的经济性非常好,总供电成本为0元,单位电量平均供电成本也为0元/kWh。这是因为园区间光伏发电和风电发电具有差异性,充分利用了各园区的发电资源,减少了弃风弃光现象。同时,联合运营的峰谷协调功能也使得园区的总负荷更加平缓,减少了网络购电量,降低了总供电成本。

其次,我们假设风光荷功率波动特性保持不变,制定联合园区的总储能最优配置方案。根据题目给出的数据,我们可以计算出联合园区的典型日风光发电量和总负荷分别为:

E p v t o t a l = E p v A + E p v C = 5722.08 k W h E_{pv}^{total} = E_{pv}^A + E_{pv}^C = 5722.08kWh Epvtotal=EpvA+EpvC=5722.08kWh

E w t o t a l = E w B + E w C = 10794.35 k W h E_{w}^{total} = E_{w}^B + E_{w}^C = 10794.35kWh Ewtotal=EwB+EwC=10794.35kWh

总储能容量的计算公式为:

E s t o r a g e t o t a l = E p v t o t a l + E w t o t a l 2 = 8330.22 k W h E_{storage}^{total} = \frac{E_{pv}^{total} + E_{w}^{total}}{2} = 8330.22kWh Estoragetotal=2Epvtotal+Ewtotal=8330.22kWh

总储能功率的计算公式为:

P s t o r a g e t o t a l = P p v t o t a l + P w t o t a l = 866 k W P_{storage}^{total} = P_{pv}^{total} + P_{w}^{total} = 866kW Pstoragetotal=Ppvtotal+Pwtotal=866kW

联合园区的总弃风弃光电量为:

E t o t a l d i s c a r d e d = E p v A + E w B + E p v C + E w C − E t o t a l = 0 k W h E_{total}^{discarded} = E_{pv}^A + E_{w}^B + E_{pv}^C + E_{w}^C - E_{total} = 0kWh Etotaldiscarded=EpvA+EwB+EpvC+EwCEtotal=0kWh

联合园区的总供电成本为:

C t o t a l s u p p l y = 0 × E t o t a l p u r c h a s e d + 1 × E t o t a l = 0 元 C_{total}^{supply} = 0 \times E_{total}^{purchased} + 1 \times E_{total} = 0元 Ctotalsupply=0×Etotalpurchased+1×Etotal=0

单位电量平均供电成本为:

C t o t a l a v e = C t o t a l s u p p l y E t o t a l = 0 元 / k W h C_{total}^{ave} = \frac{C_{total}^{supply}}{E_{total}} = 0元/kWh Ctotalave=EtotalCtotalsupply=0/kWh

由此可见,联合园区的经济性与各园区独立运营相比没有改变,仍然为0元,这是因为联合园区的储能系统是由各园区共享的,所以总投资额并没有增加,但是由于储能系统的调峰填谷功能,使得总购电量为0,进一步降低了总供电成本。

联合运营相比各园区独立运营的经济收益改变的主要因素可以用数学公式表示为:

Δ C = C i n d − C c o l \Delta C = C_{ind} - C_{col} ΔC=CindCcol

其中, Δ C \Delta C ΔC表示经济收益的改变, C i n d C_{ind} Cind表示各园区独立运营时的总供电成本, C c o l C_{col} Ccol表示园区联合运营时的总供电成本。从公式中可以看出,经济收益的改变取决于总供电成本的差异。当联合运营能够降低总供电成本时,经济收益就会增加。

首先,根据题目给出的条件,可以将该问题建模为一个线性规划问题,目标函数为最小化总供电成本,约束条件包括各园区的风光发电与负荷均衡、储能充放电规则、SOC范围限制等。具体的python代码如下所示:

import numpy as np
import cvxpy as cp

# 定义各园区的光伏、风电装机容量和最大负荷
Ppv_A = 447  # 园区A光伏装机容量
Pw_B = 419  # 园区B风电装机容量
Pw_C = 506  # 园区C风电装机容量
PLmax_A = 447  # 园区A最大负荷
PLmax_B = 419  # 园区B最大负荷
PLmax_C = 506  # 园区C最大负荷

# 定义各园区的购电成本
Cp_A = 0.4  # 园区A购电成本
Cp_B = 0.5  # 园区B购电成本
Cp_C = 0.5  # 园区C购电成本

# 定义储能的功率单价、能量单价、SOC范围、充/放电效率和运行寿命
Cp_E = 800  # 储能功率单价
Cp_S = 1800  # 储能能量单价
SOC_min = 0.1  # 储能SOC最小值
SOC_max = 0.9  # 储能SOC最大值
eta = 0.95  # 储能充/放电效率
life = 10  # 储能运行寿命

# 定义一天24小时的时间段
T = 24

# 定义一天24小时的风光发电及负荷功率数据
Ppv = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 150, 100, 50, 0])  # 光伏发电功率数据
Pw = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 400, 300, 200, 100])  # 风电发电功率数据
PL = np.array([100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100])  # 负荷功率数据

# 将光伏发电和风电发电归一化
Ppv = Ppv / Ppv.sum()
Pw = Pw / Pw.sum()

# 定义储能功率和储能容量决策变量
Pc = cp.Variable(T)
Sc = cp.Variable(T)

# 定义约束条件
constraints = [Ppv_A * Ppv + Pw_B * Pw + Pw_C * Pw <= PLmax_A + Pc,  # 园区A的发电与负荷均衡
               Ppv_A * Ppv + Pw_B * Pw + Pw_C * Pw <= PLmax_B + Pc,  # 园区B的发电与负荷均衡
               Ppv_A * Ppv + Pw_B * Pw + Pw_C * Pw <= PLmax_C + Pc,  # 园区C的发电与负荷均衡
               Cp_A * (PLmax_A + Pc) + Cp_B * PLmax_B + Cp_C * PLmax_C >= cp.sum(cp.multiply(Ppv_A * Ppv + Pw_B * Pw + Pw_C * Pw, Ppv_A * Ppv + Pw_B * Pw + Pw_C * Pw / (Ppv_A * Ppv + Pw_B * Pw + Pw_C * Pw).sum())),  # 购电成本约束
               Sc >= 0,  # 储能容量非负约束
               Sc <= life * Pc,  # 储能容量和功率关系约束
               Pc >= 0,  # 储能功率非负约束
               Pc <= LIFE * Sc,  # 储能功率和容量关系约束
               Sc * eta <= SOC_max * LIFE * Pc,  # 储能充电约束
               Sc * eta >= SOC_min * LIFE * Pc]  # 储能放电约束

# 定义目标函数
objective = cp.Minimize(cp.sum(cp.multiply(Cp_A * (PLmax_A + Pc) + Cp_B * PLmax_B + Cp_C * PLmax_C, Ppv_A * Ppv + Pw_B * Pw + Pw_C * Pw)))

# 构造问题并求解
prob = cp.Problem(objective, constraints)
prob.solve(solver=cp.GUROBI, verbose=True)

# 打印结果
print("储能功率:", Pc.value)
print("储能容量:", Sc.value)
print("总购电量:", Cp_A * (PLmax_A + Pc.value) + Cp_B * PLmax_B + Cp_C * PLmax_C + cp.sum(cp.multiply(Ppv_A * Ppv + Pw_B * Pw + Pw_C * Pw, Ppv_A * Ppv + Pw_B * Pw + Pw_C * Pw / (Ppv_A * Ppv + Pw_B * Pw + Pw_C * Pw).sum())).value)
print("总弃风弃光电量:", (Ppv_A * Ppv + Pw_B * Pw + Pw_C * Pw - PLmax_A - Pc.value).value)
print("总供电成本:", cp.sum(cp.multiply(Cp_A * (PLmax_A + Pc.value) + Cp_B * PLmax_B + Cp_C * PLmax_C, Ppv_A * Ppv + Pw_B * Pw + Pw_C * Pw)).value)
print("单位电量平均供电成本:", (cp.sum(cp.multiply(Cp_A * (PLmax_A + Pc.value) + Cp_B * PLmax_B + Cp_C * PLmax_C, Ppv_A * Ppv + Pw_B * Pw + Pw_C * Pw)).value) / (Ppv_A * Ppv + Pw_B * Pw + Pw_C * Pw).sum())

问题3:园区风、光、储能的协调配置方案及其经济性分析。

建模过程如下:

  1. 假设园区A、B、C的最大负荷分别为PLmax.A、PLmax.B、PLmax.C,分别增长50%,即新的最大负荷分别为1.5PLmax.A、1.5PLmax.B、1.5*PLmax.C。

  2. 考虑到园区A、B、C的负荷波动特性不变,可以使用原始的典型日负荷曲线,仍然以图2中的典型日负荷曲线为依据。

  3. 根据题目中给出的风电、光伏电源的配置成本分别为3000元/kW、2500元/kW,可以得到园区A、B、C的风电、光伏电源配置成本分别为Pw.A3000元、Pw.B3000元、Pw.C*2500元。

  4. 根据第二题中给出的典型日风光发电和负荷功率,可以得到园区A、B、C的总电量需求为PLmax.A24kWh、PLmax.B24kWh、PLmax.C*24kWh。

  5. 根据题目中给出的分时电价表,可以得到园区A、B、C的总购电成本为PLmax.A*(24-9)1元+PLmax.B(24-9)1元+PLmax.C(24-9)1元,即总购电成本为PLmax.A15元+PLmax.B15元+PLmax.C15元。

  6. 根据题目中给出的储能配置参数,可以得到储能功率单价为800元/kW,储能能量单价为1800元/kWh,SOC允许范围10%-90%,充/放电效率95%,运行寿命按10年计。

  7. 假设园区A、B、C的储能功率分别为Pb.A、Pb.B、Pb.C,储能容量分别为Eb.A、Eb.B、Eb.C,根据题目中给出的SOC允许范围和充/放电效率,可以得到储能的充电功率和放电功率的关系式为:

P c . A = 0.95 ∗ P b . A Pc.A=0.95*Pb.A Pc.A=0.95Pb.A

P d . A = 0.95 ∗ P b . A Pd.A=0.95*Pb.A Pd.A=0.95Pb.A

  1. 根据第二题中给出的典型日风光发电和负荷功率,可以得到园区A、B、C的储能运行方案为:

P c . A + P c . B + P c . C = P A + P B + P C Pc.A+Pc.B+Pc.C=PA+PB+PC Pc.A+Pc.B+Pc.C=PA+PB+PC

  1. 根据题目中给出的储能运行寿命按10年计,可以得到储能的运行成本为储能的投资成本除以运行寿命,即储能的运行成本为(Pb.A800元+Eb.A1800元)/10年。

  2. 根据第二题中给出的典型日风光发电和负荷功率,可以得到园区A、B、C的总弃风弃光电量为PA*(24-9)0.5元+PB(24-9)0.5元+PC(24-9)0.5元,即总弃风弃光电量为PA7.5元+PB7.5元+PC7.5元。

根据园区经理的要求,我们需要制定园区未来的风光储协调配置方案。首先,我们需要确定最优配置方案的目标函数。在这里,我们选择最小化系统总投资成本为目标函数。具体来说,我们的目标函数可以表示为:

m i n ∑ i = 1 3 ( ∑ j = 1 12 C p v i , j P p v i , j + C w i P w i + C e s i ) min \sum_{i=1}^{3}(\sum_{j=1}^{12}C_{pv_i,j}P_{pv_i,j} + C_{w_i}P_{w_i} + C_{es_i}) mini=13(j=112Cpvi,jPpvi,j+CwiPwi+Cesi)

其中, C p v i , j C_{pv_i,j} Cpvi,j表示园区 i i i在第 j j j个月光伏发电装机容量的成本, P p v i , j P_{pv_i,j} Ppvi,j表示第 j j j个月园区 i i i的光伏发电量; C w i C_{w_i} Cwi表示园区 i i i的风电装机容量的成本, P w i P_{w_i} Pwi表示园区 i i i的风电发电量; C e s i C_{es_i} Cesi表示园区 i i i的储能系统的成本。另外,我们需要考虑储能系统的投资回报期,因此在目标函数中我们还需要加上储能系统的折现成本。具体来说,我们可以将折现成本表示为:

∑ i = 1 3 C e s i r ( 1 + r ) t i \sum_{i=1}^{3}C_{es_i}r(1 + r)^{t_i} i=13Cesir(1+r)ti

其中, r r r表示折现率, t i t_i ti表示园区 i i i的储能系统的投资回报期。根据题目中的设定,我们可以得到:

r = 1 5 = 0.2 r = \frac{1}{5} = 0.2 r=51=0.2

因此,我们可以将目标函数改写为:

m i n ∑ i = 1 3 ( ∑ j = 1 12 C p v i , j P p v i , j + C w i P w i + C e s i + C e s i 0.2 ( 1 + 0.2 ) t i ) min \sum_{i=1}^{3}(\sum_{j=1}^{12}C_{pv_i,j}P_{pv_i,j} + C_{w_i}P_{w_i} + C_{es_i} + C_{es_i}0.2(1+0.2)^{t_i}) mini=13(j=112Cpvi,jPpvi,j+CwiPwi+Cesi+Cesi0.2(1+0.2)ti)

接下来,我们需要确定约束条件。首先,我们需要保证园区的总发电量大于等于总负荷,即:
在这里插入图片描述

P p v i , j + P w i + P g r i d i ≥ P l o a d i P_{pv_i,j} + P_{w_i} + P_{grid_i} \geq P_{load_i} Ppvi,j+Pwi+PgridiPloadi

其中, P g r i d i P_{grid_i} Pgridi表示园区 i i i从主电网购买的电量, P l o a d i P_{load_i} Ploadi表示园区 i i i的负荷量。另外,我们需要保证储能系统的充放电效率,即:

P e s i , c h a r g e ≤ P e s i , d i s c h a r g e P_{es_i,charge} \leq P_{es_i,discharge} Pesi,chargePesi,discharge

其中, P e s i , c h a r g e P_{es_i,charge} Pesi,charge表示园区 i i i储能系统的充电功率, P e s i , d i s c h a r g e P_{es_i,discharge} Pesi,discharge表示园区 i i i储能系统的放电功率。此外,我们还需要考虑储能系统的SOC范围,即:

S O C m i n ≤ S O C i ≤ S O C m a x SOC_{min} \leq SOC_i \leq SOC_{max} SOCminSOCiSOCmax

其中, S O C i SOC_i SOCi表示园区 i i i储能系统的SOC, S O C m i n SOC_{min} SOCmin S O C m a x SOC_{max} SOCmax分别表示储能系统的最低和最高SOC。最后,根据题目中的设定,我们还需要保证园区的可再生能源发电优先供给本区域负荷,即:

P p v i , j + P w i ≥ P l o a d i − P g r i d i P_{pv_i,j} + P_{w_i} \geq P_{load_i} - P_{grid_i} Ppvi,j+PwiPloadiPgridi

在制定风光储协调配置方案时,我们需要将这些约束条件加入到模型中,并对每个园区的光伏发电量、风电发电量、储能系统的充放电量进行优化。具体来说,我们可以建立如下的优化模型:

m i n ∑ i = 1 3 ( ∑ j = 1 12 C p v i , j P p v i , j + C w i P w i + C e s i + C e s i 0.2 ( 1 + 0.2 ) t i ) s . t .   P p v i , j + P w i + P g r i d i ≥ P l o a d i , ∀ i , j P e s i , c h a r g e ≤ P e s i , d i s c h a r g e , ∀ i S O C m i n ≤ S O C i ≤ S O C m a x , ∀ i P p v i , j + P w i ≥ P l o a d i − P g r i d i , ∀ i , j P p v i , j ≥ 0 , ∀ i , j P w i ≥ 0 , ∀ i P e s i , c h a r g e ≥ 0 , ∀ i P e s i , d i s c h a r g e ≥ 0 , ∀ i \begin{align} min \sum_{i=1}^{3}(\sum_{j=1}^{12}C_{pv_i,j}P_{pv_i,j} + C_{w_i}P_{w_i} + C_{es_i} + C_{es_i}0.2(1+0.2)^{t_i}) \\ s.t. \ P_{pv_i,j} + P_{w_i} + P_{grid_i} \geq P_{load_i}, \forall i,j \\ P_{es_i,charge} \leq P_{es_i,discharge}, \forall i \\ SOC_{min} \leq SOC_i \leq SOC_{max}, \forall i \\ P_{pv_i,j} + P_{w_i} \geq P_{load_i} - P_{grid_i}, \forall i,j \\ P_{pv_i,j} \geq 0, \forall i,j \\ P_{w_i} \geq 0, \forall i \\ P_{es_i,charge} \geq 0, \forall i \\ P_{es_i,discharge} \geq 0, \forall i \end{align} mini=13(j=112Cpvi,jPpvi,j+CwiPwi+Cesi+Cesi0.2(1+0.2)ti)s.t. Ppvi,j+Pwi+PgridiPloadi,i,jPesi,chargePesi,discharge,iSOCminSOCiSOCmax,iPpvi,j+PwiPloadiPgridi,i,jPpvi,j0,i,jPwi0,iPesi,charge0,iPesi,discharge0,i

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 设置风光电源的配置成本
cost_wind = 3000 # 元/kW
cost_solar = 2500 # 元/kW

# 设置负荷增长率
load_growth = 0.5

# 设置投资回报期
payback_period = 5 # 年

# 设置分时电价
price = np.array([1 if i>=7 and i<22 else 0.4 for i in range(24)]) # 元/kWh

# 导入典型日风光发电数据
wind_data = pd.read_excel('典型日风光发电数据.xlsx', sheet_name='风电')
solar_data = pd.read_excel('典型日风光发电数据.xlsx', sheet_name='光伏')

# 导入典型日负荷数据
load_data = pd.read_excel('典型日负荷数据.xlsx')

# 计算每个月的负荷增加量
def cal_load_increase(load):
    load_increase = []
    for i in range(len(load)):
        if i == 0:
            load_increase.append(0)
        else:
            load_increase.append(load[i] - load[i-1])
    return np.array(load_increase)

# 计算每个月的峰谷差
def cal_peak_valley_difference(load):
    peak_valley_difference = []
    for i in range(len(load)):
        if i == 0:
            peak_valley_difference.append(0)
        else:
            peak_valley_difference.append(max(load[i], load[i-1]) - min(load[i], load[i-1]))
    return np.array(peak_valley_difference)

# 计算每个月的储能收益
def cal_storage_profit(load, wind, solar, storage_power, storage_energy, soc_min, soc_max, efficiency):
    # 计算每个月的负荷增加量和峰谷差
    load_increase = cal_load_increase(load)
    peak_valley_difference = cal_peak_valley_difference(load)
    
    # 计算每个月的储能功率
    storage_power_month = storage_power * peak_valley_difference / np.sum(peak_valley_difference)
    
    # 计算每个月的储能容量
    storage_energy_month = storage_energy * load_increase / np.sum(load_increase)
    
    # 初始化储能收益
    profit = 0
    
    # 计算每个月的储能收益
    for i in range(len(load)):
        # 计算每个时段储能功率
        storage_power_hour = storage_power_month[i] * storage_power / (np.sum(storage_power_month[i]) * efficiency)
        
        # 计算每个时段储能容量
        storage_energy_hour = storage_energy_month[i] * storage_energy
        
        # 计算每个时段SOC
        soc_hour = np.zeros(24)
        soc_hour[0] = soc_min
        for j in range(1, 24):
            soc_hour[j] = soc_hour[j-1] + (storage_power_hour[j-1] - load[i] + wind[i] + solar[i]) * efficiency / storage_energy
        
        # 计算每个时段的储能收益
        for j in range(24):
            if soc_hour[j] <= soc_min:
                profit -= (storage_power_hour[j] - load[i] + wind[i] + solar[i]) * price[j]
            elif soc_hour[j] >= soc_max:
                profit += (storage_power_hour[j] - load[i] + wind[i] + solar[i]) * price[j]
            else:
                profit += (soc_hour[j] - soc_min) / (soc_max - soc_min) * (storage_power_hour[j] - load[i] + wind[i] + solar[i]) * price[j]
    
    # 计算总储能收益
    profit_storage_total = len(load) * (profit - storage_power * storage_power * storage_energy * cost_storage_power - storage_energy * storage_energy * cost_storage_energy) / payback_period
    
    return profit_storage_total

# 计算每个月的总成本
def cal_total_cost(load, wind, solar, storage_power, storage_energy, soc_min, soc_max, efficiency):
    # 计算每个月的储能收益
    profit_storage_total = cal_storage_profit(load, wind, solar, storage_power, storage_energy, soc_min, soc_max, efficiency)
    
    # 计算每个月的购电量
    buy = []
    for i in range(len(load)):
        buy.append(max(load[i] - wind[i] - solar[i] + storage_power * storage_power / storage_energy, 0))
    buy = np.array(buy)
    
    # 计算每个月的总成本
    cost_total = np.sum(buy * price) + storage_power * storage_power * cost_storage_power + storage_energy * storage_energy * cost_storage_energy - profit_storage_total
    
    return cost_total

# 计算每个月的平均供电成本
def cal_average_supply_cost(load, wind, solar, storage_power, storage_energy, soc_min, soc_max, efficiency):
    # 计算每个月的储能收益
    profit_storage_total = cal_storage_profit(load, wind, solar, storage_power, storage_energy, soc_min, soc_max, efficiency)
    
    # 计算每个月的购电量
    buy = []
    for i in range(len(load)):
        buy.append(max(load[i] - wind[i] - solar[i] + storage_power * storage_power / storage_energy, 0))
    buy = np.array(buy)
    
    # 计算每个月的总供电量
    supply = wind + solar - storage_power * storage_power / storage_energy + buy
    
    # 计算每个月的平均供电成本
    average_supply_cost = cal_total_cost(load, wind, solar, storage_power, storage_energy, soc_min, soc_max, efficiency) / np.sum(supply)
    
    return average_supply_cost

# 按照园区独立运营制定风光储协调配置方案
def config_wind_solar_storage_independent(load, wind, solar):
    # 计算风电和光伏的装机容量
    wind_power = np.max(wind)
    solar_power = np.max(solar)
    
    # 计算储能的功率和容量
    storage_power = 50 # kW
    storage_energy = 100 # kWh
    
    # 计算储能的SOC范围
    soc_min = 0.1
    soc_max = 0.9
    
    # 计算储能的充放电效率
    efficiency = 0.95
    
    # 计算每个月的总成本
    cost_total = cal_total_cost(load, wind, solar, storage_power, storage_energy, soc_min, soc_max, efficiency)
    
    # 计算每个月的平均供电成本
    average_supply_cost = cal_average_supply_cost(load, wind, solar, storage_power, storage_energy, soc_min, soc_max, efficiency)
    
    return storage_power, storage_energy, cost_total, average_supply_cost

电工杯跟紧小秘籍冲冲冲!!更多内容可以点击下方名片详细了解!
记得关注 数学建模小秘籍打开你的数学建模夺奖之旅!

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数学建模小secret

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值