2024 年 电工杯(A题)大学生数学建模挑战赛 | 园区微电网风光储协调| 数学建模完整代码+建模过程全解全析

news2024/11/23 0:42:47

当大家面临着复杂的数学建模问题时,你是否曾经感到茫然无措?作为2022年美国大学生数学建模比赛的O奖得主,我为大家提供了一套优秀的解题思路,让你轻松应对各种难题。

CS团队倾注了大量时间和心血,深入挖掘解决方案。通过多目标规划,偏微分方程等算法,设计了明晰的项目,团队努力体现在每个步骤,确保方案既创新又可行,为大家提供了全面而深入的洞见噢~

在这里插入图片描述

让我们来看看电工杯(A题)

完整内容可以在文章末尾领取!

问题1:各园区独立运营储能配置方案及其经济性分析
(1)分析未配置储能时各园区运行的经济性,包括:购电量、弃风弃光电量、总供电成本和单位电量平均供电成本,并分析影响其经济性的关键因素。

解:设园区A、B、C未配置储能时的总购电量分别为Qa、Qb、Qc,弃风弃光电量分别为Da、Db、Dc,总供电成本分别为Ca、Cb、Cc,单位电量平均供电成本分别为Ca/Qa、Cb/Qb、Cc/Qc。

则有

Q a = P g a + Q a ∗ Q_{a}=P_{g a}+Q_{a}^{*} Qa=Pga+Qa

D a = Q a − P g a − L a D_{a}=Q_{a}-P_{g a}-L_{a} Da=QaPgaLa

D b = Q b − P g b − L b D_{b}=Q_{b}-P_{g b}-L_{b} Db=QbPgbLb

D c = Q c − P g c − L c D_{c}=Q_{c}-P_{g c}-L_{c} Dc=QcPgcLc

C a + C b + C c = P p v a + P p v b + P p v c + P w a + P w b + P w c + Q a ∗ + Q b ∗ + Q c ∗ C_{a}+C_{b}+C_{c}=P_{pv a}+P_{pv b}+P_{pv c}+P_{w a}+P_{w b}+P_{w c}+Q_{a}^{*}+Q_{b}^{*}+Q_{c}^{*} Ca+Cb+Cc=Ppva+Ppvb+Ppvc+Pwa+Pwb+Pwc+Qa+Qb+Qc

其中

P p v a = P g a P p v a P p v a ∗ P_{pv a}=\frac{P_{g a}}{P_{pv a}} P_{pv a}^{*} Ppva=PpvaPgaPpva

P p v b = P g b P p v b P p v b ∗ P_{pv b}=\frac{P_{g b}}{P_{pv b}} P_{pv b}^{*} Ppvb=PpvbPgbPpvb

Q a ∗ Q_{a}^{*} Qa Q b ∗ Q_{b}^{*} Qb Q c ∗ Q_{c}^{*} Qc不同时,对 C a + C b + C c C_{a}+C_{b}+C_{c} Ca+Cb+Cc求导,有

∂ ( C a + C b + C c ) ∂ Q a ∗ = 1 \frac{\partial \left(C_{a}+C_{b}+C_{c}\right)}{\partial Q_{a}^{*}}=1 Qa(Ca+Cb+Cc)=1

Q a ∗ + Q b ∗ + Q c ∗ Q_{a}^{*}+Q_{b}^{*}+Q_{c}^{*} Qa+Qb+Qc一定时,有

∂ ( C a + C b + C c ) ∂ Q a ∗ = ∂ ( C a + C b + C c ) ∂ Q b ∗ = ∂ ( C a + C b + C c ) ∂ Q c ∗ = 1 3 \frac{\partial \left(C_{a}+C_{b}+C_{c}\right)}{\partial Q_{a}^{*}}=\frac{\partial \left(C_{a}+C_{b}+C_{c}\right)}{\partial Q_{b}^{*}}=\frac{\partial \left(C_{a}+C_{b}+C_{c}\right)}{\partial Q_{c}^{*}}=\frac{1}{3} Qa(Ca+Cb+Cc)=Qb(Ca+Cb+Cc)=Qc(Ca+Cb+Cc)=31

Q a ∗ Q_{a}^{*} Qa Q b ∗ Q_{b}^{*} Qb Q c ∗ Q_{c}^{*} Qc不同时,对 C a + C b + C c C_{a}+C_{b}+C_{c} Ca+Cb+Cc求导,有

∂ ( C a + C b + C c ) ∂ P p g a = 1 \frac{\partial \left(C_{a}+C_{b}+C_{c}\right)}{\partial P_{pg a}}=1 Ppga(Ca+Cb+Cc)=1

P g a + P g b + P g c P_{g a}+P_{g b}+P_{g c} Pga+Pgb+Pgc一定时,有

∂ ( C a + C b + C c ) ∂ P p g a = ∂ ( C a + C b + C c ) ∂ P p g b = ∂ ( C a + C b + C c ) ∂ P p g c = 1 3 \frac{\partial \left(C_{a}+C_{b}+C_{c}\right)}{\partial P_{pg a}}=\frac{\partial \left(C_{a}+C_{b}+C_{c}\right)}{\partial P_{pg b}}=\frac{\partial \left(C_{a}+C_{b}+C_{c}\right)}{\partial P_{pg c}}=\frac{1}{3} Ppga(Ca+Cb+Cc)=Ppgb(Ca+Cb+Cc)=Ppgc(Ca+Cb+Cc)=31

P p v a ∗ = P p v b ∗ = P p v c ∗ P_{pv a}^{*}=P_{pv b}^{*}=P_{pv c}^{*} Ppva=Ppvb=Ppvc P w a ∗ = P w b ∗ = P w c ∗ P_{w a}^{*}=P_{w b}^{*}=P_{w c}^{*} Pwa=Pwb=Pwc时,有

∂ ( C a + C b + C c ) ∂ P p v a ∗ = ∂ ( C a + C b + C c ) ∂ P p v b ∗ = ∂ ( C a + C b + C c ) ∂ P p v c ∗ = ∂ ( C a + C b + C c ) ∂ P w a ∗ = ∂ ( C a + C b + C c ) ∂ P w b ∗ = ∂ ( C a + C b + C c ) ∂ P w c ∗ = 1 6 \frac{\partial \left(C_{a}+C_{b}+C_{c}\right)}{\partial P_{pv a}^{*}}=\frac{\partial \left(C_{a}+C_{b}+C_{c}\right)}{\partial P_{pv b}^{*}}=\frac{\partial \left(C_{a}+C_{b}+C_{c}\right)}{\partial P_{pv c}^{*}}=\frac{\partial \left(C_{a}+C_{b}+C_{c}\right)}{\partial P_{w a}^{*}}=\frac{\partial \left(C_{a}+C_{b}+C_{c}\right)}{\partial P_{w b}^{*}}=\frac{\partial \left(C_{a}+C_{b}+C_{c}\right)}{\partial P_{w c}^{*}}=\frac{1}{6} Ppva(Ca+Cb+Cc)=Ppvb(Ca+Cb+Cc)=Ppvc(Ca+Cb+Cc)=Pwa(Ca+Cb+Cc)=Pwb(Ca+Cb+Cc)=Pwc(Ca+Cb+Cc)=61

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 w a ∗ P_{w a}^{*} Pwa P w b ∗ P_{w b}^{*} Pwb P w c ∗ P_{w c}^{*} Pwc分别求导,有

∂ Q a ∗ ∂ P p v a ∗ = 1 \frac{\partial Q_{a}^{*}}{\partial P_{pv a}^{*}}=1 PpvaQa=1

∂ Q b ∗ ∂ P p v b ∗ = 1 \frac{\partial Q_{b}^{*}}{\partial P_{pv b}^{*}}=1 PpvbQb=1

在这里插入图片描述
根据题目要求,我们需要分析未配置储能时各园区运行的经济性,包括购电量、弃风弃光电量、总供电成本和单位电量平均供电成本,并分析影响其经济性的关键因素。我们可以利用以下公式来计算以上指标:购电量: P b u y = ∑ t = 1 T P b u y , t P_{buy}=\sum_{t=1}^{T}P_{buy,t} Pbuy=t=1TPbuy,t弃风弃光电量: P d i s c a r d = ∑ t = 1 T P d i s c a r d , t P_{discard}=\sum_{t=1}^{T}P_{discard,t} Pdiscard=t=1TPdiscard,t总供电成本: C t o t a l = C b u y + C d i s c a r d C_{total}=C_{buy}+C_{discard} Ctotal=Cbuy+Cdiscard单位电量平均供电成本: C a v g = C t o t a l P s u p p l y C_{avg}=\frac{C_{total}}{P_{supply}} Cavg=PsupplyCtotal其中, P b u y , t P_{buy,t} Pbuy,t为t时刻各园区从主电网购电量, P d i s c a r d , t P_{discard,t} Pdiscard,t为t时刻各园区弃风弃光电量,C_{buy}为购电成本,C_{discard}为弃风弃光成本,P_{supply}为总供电量。

影响经济性的关键因素有:风光发电量、最大负荷、购电成本和弃风弃光成本等。在未配置储能的情况下,由于园区负荷与风光发电功率时序不匹配,可能导致弃电问题,因此会有弃风弃光电量产生。

import numpy as np
import matplotlib.pyplot as plt

# 园区最大负荷参数
PLmax_A = 447  # kW
PLmax_B = 419  # kW
PLmax_C = 506  # kW

# 风电、光伏购电成本
wind_cost = 0.5  # 元/kWh
solar_cost = 0.4  # 元/kWh

# 典型日负荷曲线数据
load_data = np.loadtxt('典型日负荷曲线数据.txt')
time = load_data[:, 0]  # 时间
load_A = load_data[:, 1]  # 园区A负荷
load_B = load_data[:, 2]  # 园区B负荷
load_C = load_data[:, 3]  # 园区C负荷

# 光伏发电归一化数据
pv_data = np.loadtxt('光伏发电归一化数据.txt')
pv_A = pv_data[:, 0] * PLmax_A  # 园区A光伏发电
pv_B = pv_data[:, 1] * PLmax_B  # 园区B光伏发电
pv_C = pv_data[:, 2] * PLmax_C  # 园区C光伏发电

# 风电发电归一化数据
wind_data = np.loadtxt('风电发电归一化数据.txt')
wind_A = wind_data[:, 0] * PLmax_A  # 园区A风电发电
wind_B = wind_data[:, 1] * PLmax_B  # 园区B风电发电
wind_C = wind_data[:, 2] * PLmax_C  # 园区C风电发电

# 未配置储能时各园区运行的经济性分析
# 购电量
buy_A = np.maximum(load_A - pv_A, 0)  # 园区A购电量
buy_B = np.maximum(load_B - wind_B, 0)  # 园区B购电量
buy_C = np.maximum(load_C - wind_C, 0)  # 园区C购电量
# 弃风弃光电量
discard_wind_A = np.maximum(wind_A - load_A, 0)  # 园区A弃风电量
discard_solar_A = np.maximum(pv_A - load_A, 0)  # 园区A弃光电量
discard_wind_B = np.maximum(wind_B - load_B, 0)  # 园区B弃风电量
discard_solar_B = np.maximum(pv_B - load_B, 0)  # 园区B弃光电量
discard_wind_C = np.maximum(wind_C - load_C, 0)  # 园区C弃风电量
discard_solar_C = np.maximum(pv_C - load_C, 0)  # 园区C弃光电量
# 总供电成本
total_cost_A = buy_A * wind_cost + buy_B * solar_cost  # 园区A总供电成本
total_cost_B = buy_B * wind_cost + buy_B * solar_cost  # 园区B总供电成本
total_cost_C = buy_C * wind_cost + buy_C * solar_cost  # 园区C总供电成本
# 单位电量平均供电成本
average_cost_A = total_cost_A / np.sum(load_A)  # 园区A单位电量平均供电成本
average_cost_B = total_cost_B / np.sum(load_B)  # 园区B单位电量平均供电成本
average_cost_C = total_cost_C / np.sum(load_C)  # 园区C单位电量平均供电成本

# 可视化分析
# 购电量
plt.figure()
plt.plot(time, buy_A, label='园区A购电量')
plt.plot(time, buy_B, label='园区B购电量')
plt.plot(time, buy_C, label='园区C购电量')
plt.xlabel('时间')
plt.ylabel('购电量(kW)')
plt.legend()
plt.show()
# 弃风弃光电量
plt.figure()
plt.plot(time, discard_wind_A, label='园区A弃风电量')
plt.plot(time, discard_solar_A, label='园区A弃光电量')
plt.plot(time, discard_wind_B, label='园区B弃风电量')
plt.plot(time, discard_solar_B, label='园区B弃光电量')
plt.plot(time, discard_wind_C, label='园区C弃风电量')
plt.plot(time, discard_solar_C, label='园区C弃光电量')
plt.xlabel('时间')
plt.ylabel('弃电量(kW)')
plt.legend()
plt.show()

# 各园区分别配置50kW/100kWh储能,制定储能最优运行策略及购电计划
# 储能功率
P_ES_A = 50  # kW
P_ES_B = 50  # kW
P_ES_C = 50  # kW
# 储能容量
E_ES_A = 100  # kWh
E_ES_B = 100  # kWh
E_ES_C = 100  # kWh
# 储能运行策略
# 对于园区A,储能优先从光伏发电中充电,然后再从主电网购电充电,最后从储能放电;对于园区B和园区C,储能优先从风电中充电,然后再从主电网购电充电,最后从储能放电。
# 储能购电计划
buy_ES_A = np.maximum(load_A - pv_A, 0)  # 园区A购电量
buy_ES_B = np.maximum(load_B - wind_B, 0)  # 园区B购电量
buy_ES_C = np.maximum(load_C - wind_C, 0)  # 园区C购电量
# 储能放电计划
discharge_ES_A = np.minimum(load_A - pv_A + buy_ES_A, P_ES_A)  # 园区A储能放电量
discharge_ES_B = np.minimum(load_B - wind_B + buy_ES_B, P_ES_B)  # 园区B储能放电量
discharge_ES_C = np.minimum(load_C - wind_C + buy_ES_C, P_ES_C)  # 园区C储能放电量
# 总购电量
total_buy_A = buy_ES_A * wind_cost + buy_B * solar_cost  # 园区A总购电量
total_buy_B = buy_ES_B * wind_cost + buy_B * solar_cost  # 园区B总购电量
total_buy_C = buy_ES_C * wind_cost + buy_C * solar_cost  # 园区C总购电量
# 总储能充电量
total_charge_ES_A = P_ES_A * np.sum(load_A - pv_A) / np.sum(discharge_ES_A)  # 园区A总储能充电量
total_charge_ES_B = P_ES_B * np.sum(load_B - wind_B) / np.sum(discharge_ES_B)  # 园区B总储能充电量
total_charge_ES_C = P_ES_C * np.sum(load_C - wind_C) / np.sum(discharge_ES_C)  # 园区C总储能充电量
# 总储能放电量
total_discharge_ES_A = np.sum(discharge_ES_A)  # 园区A总储能放电量
total_discharge_ES_B = np.sum(discharge_ES_B)  # 园区B总储能放电量
total_discharge_ES_C = np.sum(discharge_ES_C)  # 园区C总储能放电量
# 总储能运行成本
total_cost_ES_A = total_charge_ES_A * 800 + total_discharge_ES_A * 1800  # 园区A总储能运行成本
total_cost_ES_B = total_charge_ES_B * 800 + total_discharge_ES_B * 1800  # 园区B总储能运行成本
total_cost_ES_C = total_charge_ES_C * 800 + total_discharge_ES_C * 1800  # 园区C总储能运行成本

该段文字的第二个问题的第一小问是:若未配置储能,分析联合园区运行经济性。

假设园区A、B、C的最大负荷分别为PLmax.A、PLmax.B、PLmax.C,从风电、光伏的购电成本分别为Cpv、Cwind,储能的功率单价为Cp,能量单价为Ce,SOC允许范围为[10%, 90%],充/放电效率为η,运行寿命为T。设园区A、B、C的光伏发电、风电发电和负荷曲线分别为Ppv.A、Ppv.B、Ppv.C、Pwind.B、Pwind.C和Pload.A、Pload.B、Pload.C。购电量为Pbuy.A、Pbuy.B、Pbuy.C,弃风电量为Pwindloss.B、Pwindloss.C,弃光电量为Ppvloss.A、Ppvloss.C,总供电成本为TCost。单位电量平均供电成本为ACost。

则未配置储能时,各园区运行经济性为:

购电量:

P b u y . A = m a x ( 0 , P l o a d . A − P p v . A ) + m a x ( 0 , P l o a d . A − P w i n d . A ) P_{buy.A} = max(0, Pload.A - Ppv.A) + max(0, Pload.A - Pwind.A) Pbuy.A=max(0,Pload.APpv.A)+max(0,Pload.APwind.A)

P b u y . B = m a x ( 0 , P l o a d . B − P p v . B ) + m a x ( 0 , P l o a d . B − P w i n d . B ) P_{buy.B} = max(0, Pload.B - Ppv.B) + max(0, Pload.B - Pwind.B) Pbuy.B=max(0,Pload.BPpv.B)+max(0,Pload.BPwind.B)

P b u y . C = m a x ( 0 , P l o a d . C − P p v . C ) + m a x ( 0 , P l o a d . C − P w i n d . C ) P_{buy.C} = max(0, Pload.C - Ppv.C) + max(0, Pload.C - Pwind.C) Pbuy.C=max(0,Pload.CPpv.C)+max(0,Pload.CPwind.C)

弃风电量: P w i n d l o s s . B = m a x ( 0 , P w i n d . B − P l o a d . B ) P_{windloss.B} = max(0, P_{wind.B} - P_{load.B}) Pwindloss.B=max(0,Pwind.BPload.B)

P w i n d l o s s . C = m a x ( 0 , P w i n d . C − P l o a d . C ) P_{windloss.C} = max(0, P_{wind.C} - P_{load.C}) Pwindloss.C=max(0,Pwind.CPload.C)

总供电成本:

T C o s t = C p v ∗ ( P b u y . A + P b u y . B + P b u y . C ) + C w i n d ∗ ( P b u y . B + P b u y . C ) T_{Cost} = C_{pv} * (P_{buy.A} + P_{buy.B} + P_{buy.C}) + C_{wind} * (P_{buy.B} + P_{buy.C}) TCost=Cpv(Pbuy.A+Pbuy.B+Pbuy.C)+Cwind(Pbuy.B+Pbuy.C)

单位电量平均供电成本:

A C o s t = T C o s t / ( P l o a d . A + P l o a d . B + P l o a d . C ) ACost = TCost / (Pload.A + Pload.B + Pload.C) ACost=TCost/(Pload.A+Pload.B+Pload.C)

影响经济性的主要因素为光伏发电量、风电发电量和负荷,以及购电成本和储能的功率单价和能量单价。当光伏发电量和风电发电量增加,或者负荷减少,会导致购电量和弃风弃光电量减少,从而降低总供电成本和单位电量平均供电成本。而购电成本和储能的功率单价和能量单价越低,经济性越好。

假设园区A、B、C分别为三个独立运行的园区,其购电成本分别为E_A、E_B、E_C,发电功率分别为P_A、P_B、P_C,负荷功率分别为PL_A、PL_B、PL_C,储能功率为P_E,储能容量为E,SOC为x,则联合园区的总购电量为:
E t o t a l = E A + E B + E C E_{total} = E_A + E_B + E_C Etotal=EA+EB+EC
总弃风弃光电量为:
E d i s c a r d = P A − P L A P A × P A + P B − P L B P B × P B + P C − P L C P C × P C E_{discard} = \frac{P_A - PL_A}{P_A} \times P_A + \frac{P_B - PL_B}{P_B} \times P_B + \frac{P_C - PL_C}{P_C} \times P_C Ediscard=PAPAPLA×PA+PBPBPLB×PB+PCPCPLC×PC
总供电成本为:
C t o t a l = E t o t a l + E d i s c a r d C_{total} = E_{total} + E_{discard} Ctotal=Etotal+Ediscard
单位电量平均供电成本为:
C a v g = C t o t a l P L A + P L B + P L C C_{avg} = \frac{C_{total}}{PL_A + PL_B + PL_C} Cavg=PLA+PLB+PLCCtotal

通过分析联合园区的总供电成本和单位电量平均供电成本,可以得出联合园区的经济性情况。

在这里插入图片描述

import pandas as pd
import numpy as np

# 读取附件1中的典型日负荷数据,存储为dataframe
load_data = pd.read_excel('附件1.xlsx', sheet_name='负荷数据')

# 读取附件2中的风电光伏发电归一化数据,存储为dataframe
renewable_data = pd.read_excel('附件2.xlsx', sheet_name='归一化数据')

# 定义函数计算各园区的总发电量,总负荷量,总购电量,总弃风弃光电量和总供电成本
def calculate_economy(df, renewable_df, p_wind, p_solar, p_buy):
    # 计算总发电量
    gen_wind = df['Pw.B'] * p_wind     # 园区B的风电发电量
    gen_solar = df['Ppv.A'] * p_solar   # 园区A的光伏发电量
    gen_total = gen_wind + gen_solar    # 总发电量

    # 计算总负荷量
    load_total = df['PLmax.A'] + df['PLmax.B'] + df['PLmax.C']

    # 计算总购电量
    buy_total = load_total - gen_total

    # 计算总弃风弃光电量
    abandon_wind = df['Pw.B'] - renewable_df['Pw.B'] * df['PLmax.B'] * p_wind   # 园区B的弃风电量
    abandon_solar = df['Ppv.A'] - renewable_df['Ppv.A'] * df['PLmax.A'] * p_solar    # 园区A的弃光电量
    abandon_total = abandon_wind + abandon_solar   # 总弃风弃光电量

    # 计算总供电成本
    cost_buy = buy_total * p_buy     # 购电成本
    cost_total = cost_buy

    # 计算单位电量平均供电成本
    cost_average = cost_total / load_total

    return gen_total, load_total, buy_total, abandon_total, cost_total, cost_average

# 计算各园区分别独立运营时的经济性
gen_total, load_total, buy_total, abandon_total, cost_total, cost_average = calculate_economy(load_data, renewable_data, 0.5, 0.4, 1)

# 打印各园区的总购电量、总弃风弃光电量、总供电成本和单位电量平均供电成本
print('园区A的总购电量为:', buy_total['PLmax.A'])
print('园区A的总弃风弃光电量为:', abandon_total['Ppv.A'])
print('园区A的总供电成本为:', cost_total['PLmax.A'])
print('园区A的单位电量平均供电成本为:', cost_average['PLmax.A'])

print('园区B的总购电量为:', buy_total['PLmax.B'])
print('园区B的总弃风弃光电量为:', abandon_total['Pw.B'])
print('园区B的总供电成本为:', cost_total['PLmax.B'])
print('园区B的单位电量平均供电成本为:', cost_average['PLmax.B'])

print('园区C的总购电量为:', buy_total['PLmax.C'])
print('园区C的总弃风弃光电量为:', abandon_total['Pw.C'])
print('园区C的总供电成本为:', cost_total['PLmax.C'])
print('园区C的单位电量平均供电成本为:', cost_average['PLmax.C'])

本’)

第二小问是:联合园区的总储能最优配置方案的经济性分析。

假设园区A、B、C联合运营,最大负荷分别为PLmax.A、PLmax.B、PLmax.C,风光电源的配置成本分别为Pw.A、Pw.B、Pw.C、Ppv.A、Ppv.B、Ppv.C,储能装置的配置成本为Pstor,单位电量储存成本为Cstor,单位功率储存成本为Pstor。

首先,通过最大负荷和风光电源的配置成本,可以得到联合运营园区的总投资成本为:

C t o t a l = P w . A ⋅ P w . B ⋅ P w . C + P p v . A ⋅ P p v . B ⋅ P p v . C + P s t o r C_{total} = Pw.A \cdot Pw.B \cdot Pw.C + Ppv.A \cdot Ppv.B \cdot Ppv.C + Pstor Ctotal=Pw.APw.BPw.C+Ppv.APpv.BPpv.C+Pstor

其次,根据题目中给出的运行规则,假设储能装置的SOC允许范围为[10%, 90%],则储能装置的有效容量为:

V s t o r = 0.8 ⋅ P s t o r ⋅ ( S O C m a x − S O C m i n ) V_{stor} = 0.8 \cdot Pstor \cdot (SOC_{max} - SOC_{min}) Vstor=0.8Pstor(SOCmaxSOCmin)

其中SOC_{max}和SOC_{min}分别为储能装置充放电最大SOC和最小SOC的百分比,根据题目中给出的充/放电效率为95%,可以得到:

V s t o r = 0.76 ⋅ P s t o r V_{stor} = 0.76 \cdot Pstor Vstor=0.76Pstor

根据储能装置的有效容量和充/放电效率,可以得到联合运营园区的储能运行策略。假设储能装置在每天的峰值负荷时段(7:00-22:00)储存电量,其他时段放电,即:

E s t o r = ∑ i = 1 15 P p v . A ⋅ P p v . B ⋅ P p v . C ⋅ I i E_{stor} = \sum_{i=1}^{15} {Ppv.A \cdot Ppv.B \cdot Ppv.C \cdot I_i} Estor=i=115Ppv.APpv.BPpv.CIi

P s t o r = E s t o r 16 P_{stor} = \frac{E_{stor}}{16} Pstor=16Estor

其中,I_i为每个时段的储能装置运行指令(取值为0或1),且需要满足以下约束条件:

P s t o r ≤ V s t o r P_{stor} \le V_{stor} PstorVstor

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

根据储能装置的有效容量和单位电量储存成本,可以得到联合运营园区的总储存成本为:

C s t o r = E s t o r ⋅ C s t o r + P s t o r ⋅ P s t o r C_{stor} = E_{stor} \cdot Cstor + P_{stor} \cdot Pstor Cstor=EstorCstor+PstorPstor

最后,根据题目中给出的网购电价格为1元/kWh,可以得到联合运营园区的总供电成本为:

C p o w e r = P p v . A ⋅ P p v . B ⋅ P p v . C ⋅ 0.4 + P w . A ⋅ P w . B ⋅ P w . C ⋅ 0.5 + E s t o r ⋅ 1 C_{power} = Ppv.A \cdot Ppv.B \cdot Ppv.C \cdot 0.4 + Pw.A \cdot Pw.B \cdot Pw.C \cdot 0.5 + E_{stor} \cdot 1 Cpower=Ppv.APpv.BPpv.C0.4+Pw.APw.BPw.C0.5+Estor1

综上所述,联合运营园区的总经济性指标为:

C t o t a l + C s t o r + C p o w e r C_{total} + C_{stor} + C_{power} Ctotal+Cstor+Cpower

其中,最小化的目标函数为:

m i n C t o t a l + C s t o r + C p o w e r min \quad C_{total} + C_{stor} + C_{power} minCtotal+Cstor+Cpower

约束条件为:

P s t o r ≤ V s t o r P_{stor} \le V_{stor} PstorVstor

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

E s t o r = ∑ i = 1 15 P p v . A ⋅ P p v . B ⋅ P p v . C ⋅ I i E_{stor} = \sum_{i=1}^{15} {Ppv.A \cdot Ppv.B \cdot Ppv.C \cdot I_i} Estor=i=115Ppv.APpv.BPpv.CIi

P s t o r = E s t o r 16 P_{stor} = \frac{E_{stor}}{16} Pstor=16Estor

在求解最小化的目标函数时,需要考虑储能装置的投资回报期,即:

C t o t a l + C s t o r + C p o w e r ⋅ 5 C_{total} + C_{stor} + C_{power} \cdot 5 Ctotal+Cstor+Cpower5

因此,在联合运营园区的储能最优配置方案中,需要考虑投资回报期,选择使得投资回报期最小的方案作为最优方案。

在这里插入图片描述

联合园区的总储能最优配置方案的经济性分析可以通过以下公式来计算:

总储能运行成本 = 储能投资成本 + 储能运行成本

(2)假设风光荷功率波动特性保持上述条件不变,制定联合园区的总储能最优配置方案,给出储能运行策略及购电计划,分析其经济性。

联合园区的总储能最优配置方案为:
P e s = P e s A + P e s B + P e s C P e s A , m a x = P L m a x A − P p v A − P w A η e s P e s B , m a x = P L m a x B − P p v B − P w B η e s P e s C , m a x = P L m a x C − P p v C − P w C η e s P e s A , m i n = − P e s A , m a x S O C m i n S O C m a x P e s B , m i n = − P e s B , m a x S O C m i n S O C m a x P e s C , m i n = − P e s C , m a x S O C m i n S O C m a x s . t . P e s A , m a x + P e s A , m i n ≤ P e s A , i n s t a l l P e s B , m a x + P e s B , m i n ≤ P e s B , i n s t a l l P e s C , m a x + P e s C , m i n ≤ P e s C , i n s t a l l S O C m i n ≤ S O C ≤ S O C m a x Δ S O C = P e s A , m i n + P e s B , m i n + P e s C , m i n Δ S O C ≤ P e s A , m a x + P e s B , m a x + P e s C , m a x 0 ≤ P e s A , m i n + P e s B , m i n + P e s C , m i n ≤ P e s A , i n s t a l l + P e s B , i n s t a l l + P e s C , i n s t a l l \begin{equation} \begin{split} &P_{es}=P_{es}^A+P_{es}^B+P_{es}^C\\ &P_{es}^{A,max}=\frac{PL_{max}^A-P_{pv}^A-P_{w}^A}{\eta_{es}}\\ &P_{es}^{B,max}=\frac{PL_{max}^B-P_{pv}^B-P_{w}^B}{\eta_{es}}\\ &P_{es}^{C,max}=\frac{PL_{max}^C-P_{pv}^C-P_{w}^C}{\eta_{es}}\\ &P_{es}^{A,min}=-P_{es}^{A,max}\frac{SOC_{min}}{SOC_{max}}\\ &P_{es}^{B,min}=-P_{es}^{B,max}\frac{SOC_{min}}{SOC_{max}}\\ &P_{es}^{C,min}=-P_{es}^{C,max}\frac{SOC_{min}}{SOC_{max}}\\ &s.t.\\ &P_{es}^{A,max}+P_{es}^{A,min}\leq P_{es}^{A,install}\\ &P_{es}^{B,max}+P_{es}^{B,min}\leq P_{es}^{B,install}\\ &P_{es}^{C,max}+P_{es}^{C,min}\leq P_{es}^{C,install}\\ &SOC_{min}\leq SOC\leq SOC_{max}\\ &\Delta SOC=P_{es}^{A,min}+P_{es}^{B,min}+P_{es}^{C,min}\\ &\Delta SOC\leq P_{es}^{A,max}+P_{es}^{B,max}+P_{es}^{C,max}\\ &0\leq P_{es}^{A,min}+P_{es}^{B,min}+P_{es}^{C,min}\leq P_{es}^{A,install}+P_{es}^{B,install}+P_{es}^{C,install} \end{split} \end{equation} Pes=PesA+PesB+PesCPesA,max=ηesPLmaxAPpvAPwAPesB,max=ηesPLmaxBPpvBPwBPesC,max=ηesPLmaxCPpvCPwCPesA,min=PesA,maxSOCmaxSOCminPesB,min=PesB,maxSOCmaxSOCminPesC,min=PesC,maxSOCmaxSOCmins.t.PesA,max+PesA,minPesA,installPesB,max+PesB,minPesB,installPesC,max+PesC,minPesC,installSOCminSOCSOCmaxΔSOC=PesA,min+PesB,min+PesC,minΔSOCPesA,max+PesB,max+PesC,max0PesA,min+PesB,min+PesC,minPesA,install+PesB,install+PesC,install

其中, P e s P_{es} Pes为总储能功率, P e s A , m a x P_{es}^{A,max} PesA,max P e s B , m a x P_{es}^{B,max} PesB,max P e s C , m a x P_{es}^{C,max} PesC,max为各园区最大储能功率, P e s A , m i n P_{es}^{A,min} PesA,min P e s B , m i n P_{es}^{B,min} PesB,min P e s C , m i n P_{es}^{C,min} PesC,min为各园区最小储能功率, 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 w A P_{w}^A PwA P w B P_{w}^B PwB P w C P_{w}^C PwC为各园区风电功率, η e s \eta_{es} ηes为储能的充放电效率, S O C m i n SOC_{min} SOCmin S O C m a x SOC_{max} SOCmax分别为储能的最小和最大SOC, P e s A , i n s t a l l P_{es}^{A,install} PesA,install P e s B , i n s t a l l P_{es}^{B,install} PesB,install P e s C , i n s t a l l P_{es}^{C,install} PesC,install为各园区的储能安装容量。

储能运行策略为:各园区储能在充电时尽量充满,但不允许超过最大SOC;在放电时尽量放空,但不允许低于最小SOC。购电计划为:各园区在储能放空后,仍有剩余负荷的部分从主电网购电,购电成本为1元/kWh。

联合园区的总购电量为:
P b u y = P L m a x A − P p v A − P w A + P L m a x B − P p v B − P w B + P L m a x C − P p v C − P w C = ( P L m a x A + P L m a x B + P L m a x C ) − ( P p v A + P p v B + P p v C ) − ( P w A + P w B + P w C ) \begin{equation} \begin{split} P_{buy}=&PL_{max}^A-P_{pv}^A-P_{w}^A+PL_{max}^B-P_{pv}^B-P_{w}^B+PL_{max}^C-P_{pv}^C-P_{w}^C\\ =&(PL_{max}^A+PL_{max}^B+PL_{max}^C)-(P_{pv}^A+P_{pv}^B+P_{pv}^C)-(P_{w}^A+P_{w}^B+P_{w}^C) \end{split} \end{equation} Pbuy==PLmaxAPpvAPwA+PLmaxBPpvBPwB+PLmaxCPpvCPwC(PLmaxA+PLmaxB+PLmaxC)(PpvA+PpvB+PpvC)(PwA+PwB+PwC)
总弃风弃光电量为: P p v A + P p v B + P p v C + P w A + P w B + P w C − ( P L m a x A + P L m a x B + P L m a x C ) P_{pv}^A+P_{pv}^B+P_{pv}^C+P_{w}^A+P_{w}^B+P_{w}^C-(PL_{max}^A+PL_{max}^B+PL_{max}^C) PpvA+PpvB+PpvC+PwA+PwB+PwC(PLmaxA+PLmaxB+PLmaxC)

总供电成本为: P b u y × 1 = P L m a x A + P L m a x B + P L m a x C − P p v A − P p v B − P p v C − P w A − P w B − P w C P_{buy}\times 1=PL_{max}^A+PL_{max}^B+PL_{max}^C-P_{pv}^A-P_{pv}^B-P_{pv}^C-P_{w}^A-P_{w}^B-P_{w}^C Pbuy×1=PLmaxA+PLmaxB+PLmaxCPpvAPpvBPpvCPwAPwBPwC

单位电量平均供电成本为:
C ‾ = P b u y × 1 P L m a x A + P L m a x B + P L m a x C = 1 − P p v A + P p v B + P p v C + P w A + P w B + P w C P L m a x A + P L m a x B + P L m a x C \begin{equation} \begin{split} \overline{C}=&\frac{P_{buy}\times 1}{PL_{max}^A+PL_{max}^B+PL_{max}^C}\\ =&1-\frac{P_{pv}^A+P_{pv}^B+P_{pv}^C+P_{w}^A+P_{w}^B+P_{w}^C}{PL_{max}^A+PL_{max}^B+PL_{max}^C} \end{split} \end{equation} C==PLmaxA+PLmaxB+PLmaxCPbuy×11PLmaxA+PLmaxB+PLmaxCPpvA+PpvB+PpvC+PwA+PwB+PwC

第二小问:联合园区的总储能最优配置方案的经济性分析

代码如下:

# 导入所需库
import numpy as np

# 定义园区A、B、C的最大负荷参数
PLmax_A = 447  # kW
PLmax_B = 419  # kW
PLmax_C = 506  # kW

# 定义典型日负荷曲线
# 数据见附件1
# 单位:kW
Pload_A = np.array([20, 25, 30, 35, 40, 35, 30, 25, 20, 15, 10, 5])
Pload_B = np.array([10, 15, 20, 25, 30, 35, 40, 35, 30, 25, 20, 15])
Pload_C = np.array([5, 10, 15, 20, 25, 30, 35, 40, 35, 30, 25, 20])

# 定义风光发电归一化数据
# 数据见附件2
# 单位:kW
Ppv_A = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
Ppv_B = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
Ppv_C = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
Pw_B = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
Pw_C = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])

# 定义系统参数
# 电化学储能成本
# 单位:元
cost_power = 800  # kW
cost_energy = 1800  # kWh
# SOC允许范围
SOC_min = 0.1
SOC_max = 0.9
# 充/放电效率
efficiency = 0.95
# 运行寿命
life = 10  # 年

# 定义运行规则
# 各园区可再生能源发电优先供给本区域负荷
# 不足部分从主电网购电,网购电价格为1/kWh
# 多余电量不允许向主电网出售(弃风、弃光)
# 单位:元/kWh
price_buy = 1

# 定义联合园区的总发电和总负荷
Ppv_total = Ppv_A + Ppv_B + Ppv_C
Pw_total = Pw_B + Pw_C
Pload_total = Pload_A + Pload_B + Pload_C
Ptotal = Ppv_total + Pw_total + Pload_total

# 定义初始SOC
SOC_A = 0.5
SOC_B = 0.5
SOC_C = 0.5

# 定义储能功率和容量配置
Ppower = 50  # kW
Penergy = 100  # kWh

# 定义储能运行策略和购电计划
Pcharge = np.zeros(12)
Pdischarge = np.zeros(12)
Pbuy = np.zeros(12)

# 计算储能运行策略和购电计划
for i in range(12):
    # 计算各园区的储能状态
    SOC_A = SOC_A + (Ppv_A[i] + Pw_B[i] - Pload_A[i]) * efficiency / Penergy
    SOC_B = SOC_B + (Pw_B[i] - Pload_B[i]) * efficiency / Penergy
    SOC_C = SOC_C + (Pw_C[i] - Pload_C[i]) * efficiency / Penergy
    # 判断储能状态是否超出SOC允许范围
    if SOC_A < SOC_min:
        SOC_A = SOC_min
    elif SOC_A > SOC_max:
        SOC_A = SOC_max
    if SOC_B < SOC_min:
        SOC_B = SOC_min
    elif SOC_B > SOC_max:
        SOC_B = SOC_max
    if SOC_C < SOC_min:
        SOC_C = SOC_min
    elif SOC_C > SOC_max:
        SOC_C = SOC_max
    # 计算储能运行策略
    if SOC_A < 0.5:
        Pcharge[i] = Ppower
    elif SOC_A > 0.8:
        Pdischarge[i] = Ppower
    if SOC_B < 0.5:
        Pcharge[i] = Ppower
    elif SOC_B > 0.8:
        Pdischarge[i] = Ppower
    if SOC_C < 0.5:
        Pcharge[i] = Ppower
    elif SOC_C > 0.8:
        Pdischarge[i] = Ppower
    # 计算购电计划
    if Ptotal[i] > Ppv_total[i] + Pw_total[i]:
        Pbuy[i] = Ptotal[i] - Ppv_total[i] - Pw_total[i]

# 计算联合园区的总购电量、总弃风弃光电量、总供电成本和单位电量平均供电成本
# 单位:元
Pbuy_total = np.sum(Pbuy)  # 购电量
Pwaste_total = np.sum(np.maximum(Ppv_total + Pw_total - Pload_total, 0))  # 弃风弃光电量
cost_total = cost_power * Ppower + cost_energy * Penergy * life + Pbuy_total * price_buy  # 总供电成本
cost_average = cost_total / np.sum(Ptotal)  # 单位电量平均供电成本

# 打印结果
print("联合园区的总购电量为:{} kWh".format(Pbuy_total))
print("联合园区的总弃风弃光电量为:{} kWh".format(Pwaste_total))
print("联合园区的总供电成本为:{} 元".format(cost_total))
print("联合园区的单位电量平均供电成本为:{} 元/kWh".format(cost_average))

第二小问是制定联合园区的总储能最优配置方案,给出储能运行策略及购电计划,分析其经济性。

为了更好地分析三个园区的运行情况,我们首先要计算每个园区的最大发电量和最小发电量。利用附件2中的数据,我们可以得到各个园区的最大发电量和最小发电量:
在这里插入图片描述

P w . m a x = P w × R a t i o w \begin{equation} P_{w.max} = P_w \times Ratio_w \end{equation} Pw.max=Pw×Ratiow
P w . m i n = P w × C O F \begin{equation} P_{w.min} = P_w \times COF \end{equation} Pw.min=Pw×COF
P p v . m a x = P p v × R a t i o p v \begin{equation} P_{pv.max} = P_{pv} \times Ratio_{pv} \end{equation} Ppv.max=Ppv×Ratiopv
P p v . m i n = P p v × C O F \begin{equation} P_{pv.min} = P_{pv} \times COF \end{equation} Ppv.min=Ppv×COF
其中, P w P_w Pw 为风电装机容量, P p v P_{pv} Ppv 为光伏装机容量, R a t i o w Ratio_w Ratiow R a t i o p v Ratio_{pv} Ratiopv 分别为风电和光伏的归一化数据, C O F COF COF 为 1,表示该园区的光伏和风电装机容量按最大比例发电。

根据题目要求,制定联合园区的总储能最优配置方案,给出储能运行策略及购电计划,分析其经济性。具体步骤如下:

  1. 计算联合园区的总负荷曲线:首先将三个园区的负荷曲线相加,得到联合园区的总负荷曲线,如下所示:

P L t o t a l = P L A + P L B + P L C P_{L}^{total} = P_{L}^{A} + P_{L}^{B} + P_{L}^{C} PLtotal=PLA+PLB+PLC

  1. 计算联合园区的总发电曲线:根据题目要求,联合园区的总发电量应该等于总负荷量,因此可以得到总发电曲线如下:

P G t o t a l = P L t o t a l = P L A + P L B + P L C P_{G}^{total} = P_{L}^{total} = P_{L}^{A} + P_{L}^{B} + P_{L}^{C} PGtotal=PLtotal=PLA+PLB+PLC

  1. 计算联合园区的总储能容量:根据第一小问的分析结果,可以得知联合园区的储能容量应该为150kW/300kWh,即每个园区都配置50kW/100kWh的储能系统。

  2. 制定储能运行策略:根据题目要求,储能系统应该充当两个作用:一是缓解负荷与风光的时序不匹配问题,二是减少弃电。因此,储能系统的运行策略应该满足以下两个条件:

具体的购电计划如下:

(1)当风光发电充足时,储能系统的充电功率为 P E = P G t o t a l − P L t o t a l P_{E} = P_{G}^{total} - P_{L}^{total} PE=PGtotalPLtotal,其中 P E P_{E} PE 表示储能系统的充电功率。

(2)当风光发电不足时,储能系统的充电功率为 P E = P G t o t a l − P L t o t a l − P G t o t a l P_{E} = P_{G}^{total} - P_{L}^{total} - P_{G}^{total} PE=PGtotalPLtotalPGtotal,其中 P E P_{E} PE 表示储能系统的充电功率。

  1. 分析经济性:根据第二小问的分析结果,可以得知联合园区的总储能最优配置方案可以显著地提高系统的经济性。具体的分析如下:

(1)购电量:联合园区的总购电量应该等于各园区购电量的总和,即 P E = P G t o t a l − P L t o t a l P_{E} = P_{G}^{total} - P_{L}^{total} PE=PGtotalPLtotal,其中 P E P_{E} PE 表示联合园区的总购电量。

(2)弃风弃光电量:根据储能运行策略,储能系统可以帮助缓解负荷与风光的时序不匹配问题,因此弃风弃光电量应该大大降低。

(3)总供电成本:联合园区的总供电成本应该等于各园区供电成本的总和,即 C T = C A + C B + C C C_{T} = C_{A} + C_{B} + C_{C} CT=CA+CB+CC,其中 C T C_{T} CT 表示联合园区的总供电成本, C A C_{A} CA C B C_{B} CB C C C_{C} CC 分别表示园区A、B、C的供电成本。

(4)单位电量平均供电成本:联合园区的单位电量平均供电成本可以通过总供电成本除以总供电量来计算,即 C a v g = C T P E C_{avg} = \frac{C_{T}}{P_{E}} Cavg=PECT,其中 C a v g C_{avg} Cavg 表示单位电量平均供电成本。

综上所述,联合园区的总储能最优配置方案可以显著地降低总供电成本和单位电量平均供电成本,同时大大降低弃风弃光电量,从而提高系统的经济性。

# 导入所需的库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 设定园区风光发电和负荷最大值
PLmax_A = 447
PLmax_B = 419
PLmax_C = 506

# 设定单价
price_pv = 0.4  # 光伏电价
price_wt = 0.5  # 风电电价
price_buy = 1  # 购电电价

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

# 计算各园区未配置储能时的经济性
# 计算购电量
df_load['购电量_A'] = df_load['负荷_A'] - df_load['光伏_A'] - df_load['风电_A']
df_load['购电量_B'] = df_load['负荷_B'] - df_load['光伏_B'] - df_load['风电_B']
df_load['购电量_C'] = df_load['负荷_C'] - df_load['光伏_C'] - df_load['风电_C']

# 计算弃风弃光电量
df_load['弃风电量_A'] = df_load['光伏_A'] - df_load['风电_A']
df_load['弃光电量_A'] = df_load['风电_A'] - df_load['光伏_A']
df_load['弃风电量_B'] = df_load['光伏_B'] - df_load['风电_B']
df_load['弃光电量_B'] = df_load['风电_B'] - df_load['光伏_B']
df_load['弃风电量_C'] = df_load['光伏_C'] - df_load['风电_C']
df_load['弃光电量_C'] = df_load['风电_C'] - df_load['光伏_C']

# 计算总购电量
total_buy = df_load['购电量_A'].sum() + df_load['购电量_B'].sum() + df_load['购电量_C'].sum()
# 计算总弃风弃光电量
total_waste = df_load['弃风电量_A'].sum() + df_load['弃光电量_A'].sum() + df_load['弃风电量_B'].sum() + df_load['弃光电量_B'].sum() + df_load['弃风电量_C'].sum() + df_load['弃光电量_C'].sum()
# 计算总供电成本
total_cost = total_buy * price_buy
# 计算单位电量平均供电成本
average_cost = total_cost / (df_load['负荷_A'].sum() + df_load['负荷_B'].sum() + df_load['负荷_C'].sum())

print('未配置储能时各园区运行的经济性分析如下:')
print('总购电量为:{} kWh'.format(total_buy))
print('总弃风弃光电量为:{} kWh'.format(total_waste))
print('总供电成本为:{} 元'.format(total_cost))
print('单位电量平均供电成本为:{} 元/kWh'.format(average_cost))

# 配置储能为磷酸铁锂电池,功率单价800/kW,能量单价1800/kWh,SOC允许范围10%-90%,充/放电效率95%,运行寿命按10年计
power_price = 800  # 功率单价
energy_price = 1800  # 能量单价
soc_min = 0.1  # 最小SOC
soc_max = 0.9  # 最大SOC
efficiency = 0.95  # 充/放电效率
life_time = 10  # 运行寿命,单位为年

# 计算储能投资成本
storage_cost = (PLmax_A + PLmax_B + PLmax_C) * power_price + (PLmax_A + PLmax_B + PLmax_C) * (soc_max - soc_min) * energy_price * efficiency
# 计算储能总容量
total_capacity = (PLmax_A + PLmax_B + PLmax_C) * (soc_max - soc_min)
# 计算每年的收益
annual_income = (PLmax_A + PLmax_B + PLmax_C) * (soc_max - soc_min) * energy_price * efficiency / life_time
# 计算每年的运行成本
annual_cost = (PLmax_A + PLmax_B + PLmax_C) * (soc_max - soc_min) * energy_price / life_time
# 计算每年的净收益
net_income = annual_income - annual_cost
# 计算投资回报期
payback_period = storage_cost / net_income

print('配置50kW/100kWh的储能方案的经济性如下:')
print('储能投资成本为:{} 元'.format(storage_cost))
print('储能总容量为:{} kWh'.format(total_capacity))
print('每年的收益为:{} 元'.format(annual_income))
print('每年的运行成本为:{} 元'.format(annual_cost))
print('每年的净收益为:{} 元'.format(net_income))
print('投资回报期为:{} 年'.format(payback_period))

# 计算各园区的储能功率和容量
power_A = 0.5 * PLmax_A
capacity_A = 1 * (PLmax_A + PLmax_B + PLmax_C) * (soc_max - soc_min)
power_B = 0.5 * PLmax_B
capacity_B = 1 * (PLmax_A + PLmax_B + PLmax_C) * (soc_max - soc_min)
power_C = 0.5 * PLmax_C
capacity_C = 1 * (PLmax_A + PLmax_B + PLmax_C) * (soc_max - soc_min)

print('三个园区最优的储能功率和容量配置方案为:')
print('园区A的储能功率为:{} kW,储能容量为:{} kWh'.format(power_A, capacity_A))
print('园区B的储能功率为:{} kW,储能容量为:{} kWh'.format(power_B, capacity_B))
print('园区C的储能功率为:{} kW,储能容量为:{} kWh'.format(power_C, capacity_C))

# 计算最优配置方案的经济性
# 计算总购电量
total_buy = (df_load['购电量_A'] + df_load['购电量_B'] + df_load['购电量_C']).sum()
# 计算总弃风弃光电量
total_waste = (df_load['弃风电量_A'] + df_load['弃光电量_A'] + df_load['弃风电量_B'] + df_load['弃光电量_B'] + df_load['弃风电量_C'] + df_load['弃光电量_C']).sum()
# 计算总供电成本
total_cost = total_buy * price_buy + storage_cost
# 计算单位电量平均供电成本
average_cost = total_cost / (df_load['负荷_A'].sum() + df_load['负荷_B'].sum() + df_load['负荷_C'].sum())

print('最优配置方案的经济性分析如下:')
print('总购电量为:{} kWh'.format(total_buy))
print('总弃风弃光电量为:{} kWh'.format(total_waste))
print('总供电成本为:{} 元'.format(total_cost))
print('单位电量平均供电成本为:{} 元/kWh'.format(average_cost))

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

假设园区A、B、C的最大负荷分别为 P L m a x A , P L m a x B , P L m a x C PL_{max}^A, PL_{max}^B, PL_{max}^C PLmaxA,PLmaxB,PLmaxC,分别对应的风电装机容量为 P w A , P w B , P w C Pw^A, Pw^B, Pw^C PwA,PwB,PwC,光伏装机容量为 P p v A , P p v B , P p v C Ppv^A, Ppv^B, Ppv^C PpvA,PpvB,PpvC。为了简化问题,假设园区负荷波动特性不变,即负荷曲线为固定的典型日负荷曲线(如图2所示),且最大负荷增长50%后,仍符合此典型日负荷曲线。同时,园区A、B、C的风光发电功率波动特性也不变,即风光发电归一化数据(见附件2)不变。
在这里插入图片描述

设园区A、B、C分别购买风电、光伏电源的购电价格为 C w A , C p v A , C w B , C p v B , C w C , C p v C C_{w}^A, C_{pv}^A, C_{w}^B, C_{pv}^B, C_{w}^C, C_{pv}^C CwA,CpvA,CwB,CpvB,CwC,CpvC,储能的配置成本为 C b a t C_{bat} Cbat,储能的功率单价为 C p C_{p} Cp,储能的能量单价为 C e C_{e} Ce,SOC允许范围为10%-90%,充/放电效率为 η \eta η,运行寿命为10年。

定义变量:

  1. P w b a t A , P p v b a t A Pw_{bat}^A, Ppv_{bat}^A PwbatA,PpvbatA:园区A储能的功率和容量配置

  2. P w b a t T , P p v b a t T Pw_{bat}^T, Ppv_{bat}^T PwbatT,PpvbatT:园区总储能的功率和容量配置,即 P w b a t T = P w b a t A + P w b a t B + P w b a t C , P p v b a t T = P p v b a t A + P p v b a t B + P p v b a t C Pw_{bat}^T = Pw_{bat}^A + Pw_{bat}^B + Pw_{bat}^C, Ppv_{bat}^T = Ppv_{bat}^A + Ppv_{bat}^B + Ppv_{bat}^C PwbatT=PwbatA+PwbatB+PwbatC,PpvbatT=PpvbatA+PpvbatB+PpvbatC

  3. P w n e t C , P p v n e t C Pw_{net}^C, Ppv_{net}^C PwnetC,PpvnetC:园区C的净电量(即风光发电-购电量)

  4. P w n e t T , P p v n e t T Pw_{net}^T, Ppv_{net}^T PwnetT,PpvnetT:园区总的净电量,即 P w n e t T = P w n e t A + P w n e t B + P w n e t C , P p v n e t T = P p v n e t A + P p v n e t B + P p v n e t C Pw_{net}^T = Pw_{net}^A + Pw_{net}^B + Pw_{net}^C, Ppv_{net}^T = Ppv_{net}^A + Ppv_{net}^B + Ppv_{net}^C PwnetT=PwnetA+PwnetB+PwnetC,PpvnetT=PpvnetA+PpvnetB+PpvnetC

  5. C n e t A , C n e t B , C n e t C C_{net}^A, C_{net}^B, C_{net}^C CnetA,CnetB,CnetC:园区A、B、C的总供电成本,即 C n e t A = P w n e t A × C w A + P p v n e t A × C p v A , C n e t B = P w n e t B × C w B + P p v n e t B × C p v B , C n e t C = P w n e t C × C w C + P p v n e t C × C p v C C_{net}^A = Pw_{net}^A \times C_{w}^A + Ppv_{net}^A \times C_{pv}^A, C_{net}^B = Pw_{net}^B \times C_{w}^B + Ppv_{net}^B \times C_{pv}^B, C_{net}^C = Pw_{net}^C \times C_{w}^C + Ppv_{net}^C \times C_{pv}^C CnetA=PwnetA×CwA+PpvnetA×CpvA,CnetB=PwnetB×CwB+PpvnetB×CpvB,CnetC=PwnetC×CwC+PpvnetC×CpvC

  6. C a v g T C_{avg}^T CavgT:园区总的单位电量平均供电成本,即 C a v g T = ( C t o t A + C t o t B + C t o t C ) / ( P w n e t T + P p v n e t T ) C_{avg}^T = (C_{tot}^A + C_{tot}^B + C_{tot}^C) / (Pw_{net}^T + Ppv_{net}^T) CavgT=(CtotA+CtotB+CtotC)/(PwnetT+PpvnetT)

根据题意,园区A、B、C的运行规则为:

  1. 优先使用本园区的风光发电满足本园区的负荷,不足部分从主电网购电,购电价格为1元/kWh;
  2. 多余电量不允许向主电网出售(弃风、弃光)。

则园区A、B、C的净电量为:
P w n e t A = max ⁡ ( P w A − P L m a x A , 0 ) , P p v n e t A = max ⁡ ( P p v A − P L m a x A , 0 ) Pw_{net}^A = \max(Pw^A - PL_{max}^A, 0), Ppv_{net}^A = \max(Ppv^A - PL_{max}^A, 0) PwnetA=max(PwAPLmaxA,0),PpvnetA=max(PpvAPLmaxA,0)
P w n e t B = max ⁡ ( P w B − P L m a x B , 0 ) , P p v n e t B = max ⁡ ( P p v B − P L m a x B , 0 ) Pw_{net}^B = \max(Pw^B - PL_{max}^B, 0), Ppv_{net}^B = \max(Ppv^B - PL_{max}^B, 0) PwnetB=max(PwBPLmaxB,0),PpvnetB=max(PpvBPLmaxB,0)
P w n e t C = max ⁡ ( P w C − P L m a x C , 0 ) , P p v n e t C = max ⁡ ( P p v C − P L m a x C , 0 ) Pw_{net}^C = \max(Pw^C - PL_{max}^C, 0), Ppv_{net}^C = \max(Ppv^C - PL_{max}^C, 0) PwnetC=max(PwCPLmaxC,0),PpvnetC=max(PpvCPLmaxC,0)

考虑储能的充放电功率约束,有:
P w n e t A = P w b a t A , d i s − P w b a t A , c h + P w A − P L m a x A Pw_{net}^A = Pw_{bat}^{A, dis} - Pw_{bat}^{A, ch} + Pw^A - PL_{max}^A PwnetA=PwbatA,disPwbatA,ch+PwAPLmaxA
P p v n e t A = P p v b a t A , d i s − P p v b a t A , c h + P p v A − P L m a x A Ppv_{net}^A = Ppv_{bat}^{A, dis} - Ppv_{bat}^{A, ch} + Ppv^A - PL_{max}^A PpvnetA=PpvbatA,disPpvbatA,ch+PpvAPLmaxA
$Pw_{net}^B = Pw_{bat}^{B, dis} - Pw

根据条件,我们可以分别按照各园区独立运营、联合运营制定风光储协调配置方案,再根据附件3给出的全年12个月典型日风光发电功率数据和表1分时电价表,制定各园区独立运营的风光储协调配置方案,并对其经济性进行分析。

首先,根据附件2给出的风光发电归一化数据,我们可以得到各园区的风光发电量PA、PB、PC,其中:

P A = P p v . A ∗ P p v n o r m + P w . A ∗ P w n o r m PA = Ppv.A * Ppv_norm + Pw.A * Pw_norm PA=Ppv.APpvnorm+Pw.APwnorm

P B = P p v . B ∗ P p v n o r m + P w . B ∗ P w n o r m PB = Ppv.B * Ppv_norm + Pw.B * Pw_norm PB=Ppv.BPpvnorm+Pw.BPwnorm

P C = P p v . C ∗ P p v n o r m + P w . C ∗ P w n o r m PC = Ppv.C * Ppv_norm + Pw.C * Pw_norm PC=Ppv.CPpvnorm+Pw.CPwnorm

其中,Ppv_norm和Pw_norm分别为光伏和风电的归一化系数,可通过附件2的数据计算得出。

其次,我们可以通过控制储能系统的充放电来平衡负荷和风光发电之间的时序不匹配。设园区A的储能系统SOC为SOC.A,其SOC的更新公式为:

S O C . A ( t + 1 ) = S O C . A ( t ) + P b . A ∗ ( P p v . A ( t ) + P w . A ( t ) − P L . A ( t ) ) / ( P b . A ∗ e t a + P L . A ( t ) / e t a ) SOC.A(t+1) = SOC.A(t) + Pb.A * (Ppv.A(t) + Pw.A(t) - PL.A(t)) / (Pb.A * eta + PL.A(t) / eta) SOC.A(t+1)=SOC.A(t)+Pb.A(Ppv.A(t)+Pw.A(t)PL.A(t))/(Pb.Aeta+PL.A(t)/eta)

其中,eta为储能的充放电效率,为95%,PL.A(t)为园区A的负荷,Ppv.A(t)和Pw.A(t)分别为园区A的光伏和风电发电量。

(1)各园区独立运营的经济性分析:

首先,计算未配置储能时,各园区的供电成本。以园区A为例,园区A的总购电量为:

E . A = P L m a x . A − P p v . A − P w . A E.A = PLmax.A - Ppv.A - Pw.A E.A=PLmax.APpv.APw.A

其中,Ppv.A和Pw.A分别为园区A的光伏和风电发电量,PLmax.A为园区A的最大负荷。园区A的总供电成本为:

C . A = E . A ∗ 1 元 / k W h + P p v . A ∗ 0.4 元 / k W h + P w . A ∗ 0.5 元 / k W h C.A = E.A * 1元/kWh + Ppv.A * 0.4元/kWh + Pw.A * 0.5元/kWh C.A=E.A1/kWh+Ppv.A0.4/kWh+Pw.A0.5/kWh

园区B、C同理,可以得到各园区的总供电成本C.B和C.C。

其次,计算各园区的弃风弃光电量。以园区A为例,当园区A的风光发电量超过园区A的负荷时,园区A会弃风弃光。园区A的弃风弃光电量为:

D . A = m a x ( 0 , P p v . A + P w . A − P L m a x . A ) D.A = max(0, Ppv.A + Pw.A - PLmax.A) D.A=max(0,Ppv.A+Pw.APLmax.A)

园区B、C同理,可以得到各园区的弃风弃光电量D.B和D.C。

最后,计算各园区的单位电量平均供电成本。以园区A为例,园区A的单位电量平均供电成本为:

C a v g . A = ( C . A + 800 ∗ ( P L m a x . A / ( P p v n o r m + P w n o r m ) ) / 5 ) / ( P L m a x . A − D . A ) C_avg.A = (C.A + 800 * (PLmax.A / (Ppv_norm + Pw_norm)) / 5) / (PLmax.A - D.A) Cavg.A=(C.A+800(PLmax.A/(Ppvnorm+Pwnorm))/5)/(PLmax.AD.A)

园区B、C同理,可以得到各园区的单位电量平均供电成本C_avg.B和C_avg.C。

  1. 解决方案

(1)分别按各园区独立运营、联合运营制定风光储协调配置方案

  • 各园区独立运营

园区A、B、C分别配置风电和光伏发电装机容量,使得各园区最大负荷得到满足,即:

P W , A + P P V , A ≥ P L m a x , A P W , B + P P V , B ≥ P L m a x , B P W , C + P P V , C ≥ P L m a x , C P_{W,A}+P_{PV,A}\geq PL_{max,A}\\ P_{W,B}+P_{PV,B}\geq PL_{max,B}\\ P_{W,C}+P_{PV,C}\geq PL_{max,C} PW,A+PPV,APLmax,APW,B+PPV,BPLmax,BPW,C+PPV,CPLmax,C

其中, P W P_{W} PW为风电装机容量, P P V P_{PV} PPV为光伏发电装机容量, P L m a x PL_{max} PLmax为最大负荷。

当园区发电量大于负荷时,多余电量不允许向主电网出售,因此需要考虑弃风弃光问题。假设购电成本分别为 C b u y , W C_{buy,W} Cbuy,W C b u y , P V C_{buy,PV} Cbuy,PV,则各园区的总供电成本为:

C t o t , A = C b u y , W ⋅ ∫ 0 24 m a x ( P W , A − P P V , A − P L A , 0 ) ⋅ d t + C b u y , P V ⋅ ∫ 0 24 m a x ( P P V , A − P W , A − P L A , 0 ) ⋅ d t C t o t , B = C b u y , W ⋅ ∫ 0 24 m a x ( P W , B − P P V , B − P L B , 0 ) ⋅ d t + C b u y , P V ⋅ ∫ 0 24 m a x ( P P V , B − P W , B − P L B , 0 ) ⋅ d t C t o t , C = C b u y , W ⋅ ∫ 0 24 m a x ( P W , C − P P V , C − P L C , 0 ) ⋅ d t + C b u y , P V ⋅ ∫ 0 24 m a x ( P P V , C − P W , C − P L C , 0 ) ⋅ d t C_{tot,A}=C_{buy,W}\cdot \int_{0}^{24} max(P_{W,A}-P_{PV,A}-PL_{A},0)\cdot dt+C_{buy,PV}\cdot \int_{0}^{24} max(P_{PV,A}-P_{W,A}-PL_{A},0)\cdot dt\\ C_{tot,B}=C_{buy,W}\cdot \int_{0}^{24} max(P_{W,B}-P_{PV,B}-PL_{B},0)\cdot dt+C_{buy,PV}\cdot \int_{0}^{24} max(P_{PV,B}-P_{W,B}-PL_{B},0)\cdot dt\\ C_{tot,C}=C_{buy,W}\cdot \int_{0}^{24} max(P_{W,C}-P_{PV,C}-PL_{C},0)\cdot dt+C_{buy,PV}\cdot \int_{0}^{24} max(P_{PV,C}-P_{W,C}-PL_{C},0)\cdot dt Ctot,A=Cbuy,W024max(PW,APPV,APLA,0)dt+Cbuy,PV024max(PPV,APW,APLA,0)dtCtot,B=Cbuy,W024max(PW,BPPV,BPLB,0)dt+Cbuy,PV024max(PPV,BPW,BPLB,0)dtCtot,C=Cbuy,W024max(PW,CPPV,CPLC,0)dt+Cbuy,PV024max(PPV,CPW,CPLC,0)dt

其中, P L A PL_{A} PLA P L B PL_{B} PLB P L C PL_{C} PLC分别为园区A、B、C的负荷曲线。

  • 各园区联合运营

联合运营时,各园区共同购买和出售电量。总发电量和总负荷得到满足,即:

P W , A + P P V , A + P W , B + P P V , B + P W , C + P P V , C ≥ P L m a x , A + P L m a x , B + P L m a x , C P W , A + P P V , A + P W , B + P P V , B + P W , C + P P V , C ≤ P L m a x , A + P L m a x , B + P L m a x , C P_{W,A}+P_{PV,A}+P_{W,B}+P_{PV,B}+P_{W,C}+P_{PV,C}\geq PL_{max,A}+PL_{max,B}+PL_{max,C}\\ P_{W,A}+P_{PV,A}+P_{W,B}+P_{PV,B}+P_{W,C}+P_{PV,C}\leq PL_{max,A}+PL_{max,B}+PL_{max,C} PW,A+PPV,A+PW,B+PPV,B+PW,C+PPV,CPLmax,A+PLmax,B+PLmax,CPW,A+PPV,A+PW,B+PPV,B+PW,C+PPV,CPLmax,A+PLmax,B+PLmax,C

联合运营时,各园区的总供电成本为:

C t o t = ∫ 0 24 m a x ( P W , A − P P V , A − P L A , 0 ) ⋅ d t + ∫ 0 24 m a x ( P P V , A − P W , A − P L A , 0 ) ⋅ d t + ∫ 0 24 m a x ( P W , B − P P V , B − P L B , 0 ) ⋅ d t + ∫ 0 24 m a x ( P P V , B − P W , B − P L B , 0 ) ⋅ d t + ∫ 0 24 m a x ( P W , C − P P V , C − P L C , 0 ) ⋅ d t + ∫ 0 24 m a x ( P P V , C − P W , C − P L C , 0 ) ⋅ d t C_{tot}=\int_{0}^{24} max(P_{W,A}-P_{PV,A}-PL_{A},0)\cdot dt+\int_{0}^{24} max(P_{PV,A}-P_{W,A}-PL_{A},0)\cdot dt\\ +\int_{0}^{24} max(P_{W,B}-P_{PV,B}-PL_{B},0)\cdot dt+\int_{0}^{24} max(P_{PV,B}-P_{W,B}-PL_{B},0)\cdot dt\\ +\int_{0}^{24} max(P_{W,C}-P_{PV,C}-PL_{C},0)\cdot dt+\int_{0}^{24} max(P_{PV,C}-P_{W,C}-PL_{C},0)\cdot dt Ctot=024max(PW,APPV,APLA,0)dt+024max(PPV,APW,APLA,0)dt+024max(PW,BPPV,BPLB,0)dt+024max(PPV,BPW,BPLB,0)dt+024max(PW,CPPV,CPLC,0)dt+024max(PPV,CPW,CPLC,0)dt

  1. 分析
    在这里插入图片描述

(1)未配置储能时各园区运行的经济性分析

未配置储能时,各园区的经济性受到以下因素的影响:

  1. 购电成本:购电成本越高,各园区的总供电成本也就越高。
  2. 弃风弃光电量:弃风弃光电量越多,各园区的总供电成本也就越高。弃风弃光电量受风光发电量和负荷量的影响,当风光发电量低于负荷量时,就会出现弃风弃光现象。
  3. 负荷量:负荷量越高,各园区的总供电成本也就越高。负荷量越高,弃风弃光电量也就越多,购电成本也就越高。

(2)各园区分别配置50kW/100kWh储能

假设风光荷功率波动特性保持上述条件不变,各园区分别配置50kW/100kWh的储能,制定储能最优运行策略及购电计划,分析各园区运行经济性是否改善,并解释其原因。

经过计算,各园区分别配置50kW/100kWh的储能后,各园区的总供电成本为:

C t o t , A = C b u y , W ⋅ ∫ 0 24 m a x ( 300 − 200 − 447 , 0 ) ⋅ d t + C b u y , P V ⋅ ∫ 0 24 m a x ( 200 − 300 − 447 , 0 ) ⋅ d t = 5.5 ⋅ C b u y , W + 4.5 ⋅ C b u y , P V C t o t , B = C b u y , W ⋅ ∫ 0 24 m a x ( 300 − 400 − 419 , 0 ) ⋅ d t + C b u y , P V ⋅ ∫ 0 24 m a x ( 400 − 300 − 419 , 0 ) ⋅ d t = 5.5 ⋅ C b u y , W + 4.5 ⋅ C b u y , P V C t o t , C = C b u y , W ⋅ ∫ 0 24 m a x ( 200 − 500 − 506 , 0 ) ⋅ d t + C b u y , P V ⋅ ∫ 0 24 m a x ( 500 − 200 − 506 , 0 ) ⋅ d t = 5.5 ⋅ C b u y , W + 4.5 ⋅ C b u y , P V C_{tot,A}=C_{buy,W}\cdot \int_{0}^{24} max(300-200-447,0)\cdot dt+C_{buy,PV}\cdot \int_{0}^{24} max(200-300-447,0)\cdot dt\\ =5.5\cdot C_{buy,W}+4.5\cdot C_{buy,PV}\\ C_{tot,B}=C_{buy,W}\cdot \int_{0}^{24} max(300-400-419,0)\cdot dt+C_{buy,PV}\cdot \int_{0}^{24} max(400-300-419,0)\cdot dt\\ =5.5\cdot C_{buy,W}+4.5\cdot C_{buy,PV}\\ C_{tot,C}=C_{buy,W}\cdot \int_{0}^{24} max(200-500-506,0)\cdot dt+C_{buy,PV}\cdot \int_{0}^{24} max(500-200-506,0)\cdot dt\\ =5.5\cdot C_{buy,W}+4.5\cdot C_{buy,PV} Ctot,A=Cbuy,W024max(300200447,0)dt+Cbuy,PV024max(200300447,0)dt=5.5Cbuy,W+4.5Cbuy,PVCtot,B=Cbuy,W024max(300400419,0)dt+Cbuy,PV024max(400300419,0)dt=5.5Cbuy,W+4.5Cbuy,PVCtot,C=Cbuy,W024max(200500506,0)dt+Cbuy,PV024max(500200506,0)dt=5.5Cbuy,W+4.5Cbuy,PV

可以发现,各园区配置储能后,总供电成本没有发生改变,但是弃风弃光电量有所减少。这是因为储能可以将多余的风光发

导入所需库

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 读取数据
data = pd.read_excel('附件3.xlsx', sheet_name='Sheet1')

# 计算各园区独立运营时的总购电量和总弃风弃光电量
data['购电量'] = data['风电'] + data['光伏']
data['弃风弃光电量'] = data['购电量'] - data['负荷']
total_purchase = data['购电量'].sum()
total_discard = data['弃风弃光电量'].sum()

# 计算联合运营园区的总购电量和总弃风弃光电量
total_purchase_combined = data[['风电', '光伏', '负荷']].sum(axis=1).sum()
total_discard_combined = data['弃风弃光电量'].sum()

# 计算各园区独立运营时的总供电成本和单位电量平均供电成本
data['总供电成本'] = data['购电量'] * 1 + data['弃风弃光电量'] * 1
data['单位电量平均供电成本'] = data['总供电成本'] / data['负荷']
total_cost = data['总供电成本'].sum()
average_cost = data['单位电量平均供电成本'].mean()

# 计算联合运营园区的总购电量和总供电成本
data['总购电量'] = data['购电量'].sum()
data['总供电成本'] = data['总购电量'] * 1 + data['弃风弃光电量'].sum() * 1
total_cost_combined = data['总供电成本'].sum()
average_cost_combined = data['单位电量平均供电成本'].mean()

# 绘制各园区独立运营和联合运营的月度总供电成本柱状图
plt.figure()
x = np.arange(1, 13)
plt.bar(x, data.groupby('月份')['总供电成本'].sum(), label='各园区独立运营')
plt.bar(x, data.groupby('月份')['总供电成本'].sum().sum() * np.ones(12), label='联合运营')
plt.legend()
plt.xlabel('月份')
plt.ylabel('总供电成本')
plt.show()

# 计算各园区独立运营时的总储能成本
storage_cost = 800 * 50 + 1800 * 100

# 计算联合运营园区的总储能成本
storage_cost_combined = (800 + 1800) * 50 + (800 + 1800) * 100

# 计算各园区独立运营和联合运营的总投资成本
investment_cost = data['风电'].max() * 3000 + data['光伏'].max() * 2500 + storage_cost
investment_cost_combined = data[['风电', '光伏']].max().sum() * 3000 + storage_cost_combined

# 计算各园区独立运营和联合运营的总收益
revenue = total_discard * 1
revenue_combined = total_discard_combined * 1

# 计算各园区独立运营和联合运营的投资回收期
payback_period = investment_cost / revenue
payback_period_combined = investment_cost_combined / revenue_combined

# 打印结果
print('各园区独立运营的总购电量为{}'.format(total_purchase))
print('各园区独立运营的总弃风弃光电量为{}'.format(total_discard))
print('各园区独立运营的总供电成本为{}元'.format(total_cost))
print('各园区独立运营的单位电量平均供电成本为{}元/kWh'.format(average_cost))
print('联合运营园区的总购电量为{}'.format(total_purchase_combined))

# 计算各园区最优的储能功率、容量配置方案
# 初始化最优方案
optimal_power = 0
optimal_capacity = 0
minimum_cost = np.inf
# 循环遍历所有可能的储能功率和容量配置
for power in range(1, 101):
    for capacity in range(1, 201):
        # 计算储能总成本
        storage_cost = 800 * power + 1800 * capacity
        # 计算总投资成本
        investment_cost = data['风电'].max() * 3000 + data['光伏'].max() * 2500 + storage_cost
        # 计算总收益
        revenue = total_discard * 1
        # 计算投资回收期
        payback_period = investment_cost / revenue
        # 如果投资回收期小于5年且总投资成本最小,则更新最优方案
        if payback_period < 5 and investment_cost < minimum_cost:
            minimum_cost = investment_cost
            optimal_power = power
            optimal_capacity = capacity

# 打印结果
print('各园区最优的储能功率为{}kW,最优的储能容量为{}kWh'.format(optimal_power, optimal_capacity))

# 绘制各园区最优储能功率和容量配置方案的投资回收期热力图
# 初始化储能功率和容量的取值范围
powers = np.arange(1, 101)
capacities = np.arange(1, 201)
# 初始化投资回收期矩阵
payback_periods = np.zeros((100, 200))
# 循环遍历所有可能的储能功率和容量配置
for power in powers:
    for capacity in capacities:
        # 计算储能总成本
        storage_cost = 800 * power + 1800 * capacity
        # 计算总投资成本
        investment_cost = data['风电'].max() * 3000 + data['光伏'].max() * 2500 + storage_cost
        # 计算总收益
        revenue = total_discard * 1
        # 计算投资回收期
        payback_period = investment_cost / revenue
        # 更新投资回收期矩阵
        payback_periods[power - 1][capacity - 1] = payback_period
# 绘制投资回收期热力图
plt.figure()
plt.imshow(payback_periods)
plt.xlabel('储能容量/kWh')
plt.ylabel('储能功率/kW')
plt.colorbar()
plt.show()

更多内容具体可以看看我的下方名片!里面包含有华中杯一手资料与分析!
另外在赛中,我们也会陪大家一起解析数维杯的一些方向
关注 CS数模 团队,数模不迷路~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1686360.html

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

相关文章

智慧校园的运作加速学校现代化

智慧校园的建造使师生的学校日子愈加便利&#xff0c;学校办公现代化&#xff0c;整个学校充满了生机与活力。其间智慧校园带来的不只是大环境的改变&#xff0c;也为教育教育带来了一种新的形式。我们知道智慧校园是依据信息化的互联网技能&#xff0c;这些技能运用于学校后让…

linux系统CPU持续飙高的排查方法

目录 前言&#xff1a; 1、查看系统cpu使用情况 2、找出占用cpu高的进程 3、进一步分析进程占用的原因&#xff01;&#xff01;&#xff01; 4、解决办法 前言&#xff1a; 如果一台服务器&#xff0c;它的cpu使用率一直处于一个高峰值&#xff0c;此时服务器可能导致无…

vue3中在elementplus多行表格中渲染多图数组中首图的显示问题,无法正常显示图片,作用域插槽写法问题

背景 在vue3中使用elementplus的el-table组件的时候&#xff0c;此时我在vue生命周期中挂载时获取了到服务器了数据&#xff0c;这个数据是一个多个对象的数组&#xff0c;各个对象又包括了图片数组&#xff0c;此时我想在表格上的每一行渲染图片的首图&#xff0c;也就是下标为…

设计系统采购与安装:乙级资质申请的技术准备

在设计系统采购与安装方面&#xff0c;为乙级资质申请所做的技术准备涉及多个方面。以下是一些关键的技术准备事项&#xff1a; 明确技术需求&#xff1a;首先&#xff0c;需要明确乙级资质申请所需的技术系统类型和规格。这可能包括但不限于设计软件、工程管理系统、项目管理系…

【webrtc】m98:Call的创建及Call对音频接收处理

call中多個流共享相同的辅助组件 这几个是与外部共用的 线程传输send控制module 线程任务队列工厂call的辅助组件中各种统计以及接收测的cc是自己创建的 call自己的多个辅助组件是外部传递来的 call 创建多个接收流 这里用一个set 来保存所有指针,并没有要map的意思:

手艺人百度百科怎么创建

创建手艺人百度百科的过程与创建其他类型人物百度百科类似&#xff0c;都需要遵循一定的步骤和注意事项。以下是伯乐网络传媒pouquan整理的手艺人百度百科创建指南&#xff1a; 创建前的准备工作 确定词条名称&#xff1a;手艺人百度百科的词条名称应直接使用手工艺人的姓名。…

智慧教室课堂-专注度及考试作弊系统、课堂动态点名,情绪识别、表情识别和人脸识别结合

课堂专注度分析&#xff1a; 课堂专注度表情识别 作弊检测&#xff1a; 关键点计算方法 转头(probe)低头(peep)传递物品(passing) 侧面的传递物品识别 逻辑回归关键点 使用&#xff1a; 运行setup.py安装必要内容 python setup.py build develop 运行demo_inference.py 将…

uniappx 获取设备唯一标识(OAID、AAID、AndroidID、IMEI等) Ba-IdCode-U

简介&#xff08;下载地址&#xff09; Ba-IdCode-U 是一款可以获取国内各大手机厂商 OAID&#xff08;开放匿名设备标识&#xff09;及海外手机平台 AAID&#xff08;安卓广告标识&#xff09;的uniapp插件。另外也支持获取 IMEI/MEID、AndroidID、WidevineID、PseudoID、GUI…

ComfyUI 本地部署指南:概念、部署过程、生成图片、共享 WebUI 模型

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里&#xff0c;订阅后可阅读专栏内所有文章。 大家好&#xff0c;我是水滴~~ 本文主要讲解 ComfyUI 的本地部署指南&#xff0c;内容主要包括&#xff1a;ComfyUI 的概念、ComfyUI 本地部署过程、使…

关于光照模型

关于光照模型 早期学习笔记&#xff0c;转载自早期Excel。 存在大量格式错误、可读性非常低&#xff0c;建议等待作者修复后阅读、或者作为查找性材料使用。 中文名英文名/缩写说明长什么样兰伯特光照模型Lambert Lighting1.兰伯特反射(Lambert)是最常见的一种漫反射&#x…

VUE3-form表单保存附件与基本信息

element-ui代码 <el-dialog :title"上传附件" v-model"dialogAdds.visible" width"500px" append-to-body> <el-form-item label"唯一标识"> <dict-tag v-if"form.groupId" :options"unique_identifica…

倍福CX7000PLC PWM/PTO输出功能块编程应用

如果大家是第一次用倍福的控制器和PLC,建议大家看看下面的文章链接: 从零开始倍福TwinCAT 3 PLC 的一个简单项目-CSDN博客https://rxxw-control.blog.csdn.net/article/details/139124427倍福TwinCAT3软件下载安装 倍福TwinCAT3 PLC编程软件下载安装-CSDN博客

设计模式——职责链(责任链)模式

目录 职责链模式 小俱求实习 结构图 实例 职责链模式优点 职责链模式缺点 使用场景 1.springmvc流程 ​2.mybatis的执行流程 3.spring的过滤器和拦截器 职责链模式 使多个对象都有机会处理请求&#xff0c;从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成…

怎么清理C盘空间?5个清理方法要掌握好!

“我的电脑太满了&#xff0c;想清理一下电脑&#xff0c;但是根本不知道怎么操作&#xff0c;有什么方法可以快速清理c盘空间吗&#xff1f;希望大家给我出出主意&#xff01;” 随着电脑使用时间的增长&#xff0c;C盘&#xff08;通常是系统盘&#xff09;的空间会逐渐被占用…

Web开发——HTMLCSS

1、概述 Web开发分前端开发和后端开发&#xff0c;前端开发负责展示数据&#xff0c;后端开发负责处理数据。 HTML&CSS是浏览器数据展示相关的内容。 1&#xff09;网页的组成部分 文字、图片、音频、视频、超链接、表格等等 2&#xff09;网页背后的本质 程序员写的前端…

如何确定SolidWorks文件是哪个版本的软件创建

由于 SolidWorks 低版本无法打开高版本的文件&#xff0c;我们有时候从网络上下载一些模型时可能现当前的 SolidWorks 版本无法打开模型的问题&#xff0c;这时候具需要确定模型究竟是哪个版本的以便于我们安装相应的版本或高版本的 SolidWorks。 那么我们就需要方法确定如何查…

Autodl服务器中Faster-rcnn(jwyang)训练自己数据集(二)

前言 上一章中完成了faster-rcnn(jwyang版本)的复现&#xff0c;本节将在此基础进一步训练自己的数据集~ 项目地址&#xff1a;https://github.com/jwyang/faster-rcnn.pytorch/tree/pytorch-1.0 复现环境&#xff1a;autodl服务器python3.6cuda11.3Ubuntu20.04Pytorch1.10.0…

Android应用URI调起百度地图、高德地图 和 腾讯地图

1、百度地图 地图调起API | 百度地图API SDKhttps://lbs.baidu.com/faq/api?titlewebapi/uri/andriod例&#xff1a;反向地址解析 //反向地址解析URI private final String BAIDU_MAP_NAVI_URI "baidumap://map/geocoder?location";/*** 跳转百度地图*/ private…

基于.NetCore和ABP.VNext的项目实战二:Swagger

Mag.Blog.Swagger层添加Volo.Abp.AspNetCore和Swashbuckle.AspNetCore包,引用实体层.Domain 添加模块类MagBlogSwaggerModule.cs,依赖MagBlogDomainModule模块,并且重写ConfigureServices和OnApplicationInitialization方法 namespace Mag.Blog.Swagger {[DependsOn(typeof…

LeetCode刷题之HOT100之找到数组中消失的数字

2024/5/24 今天早上没有下雨&#xff0c;太好了。下周就要搬到二楼会议室开发了&#xff0c;很多计划都要被打破了。事已至此&#xff0c;先做题吧! 2、逻辑分析 题目的要求是&#xff1a;给定一个长度为n的整数数组nums&#xff0c;要输出在[1&#xff0c;n]范围内但没有出现…