荔枝科研社头像
关注

2026 年高教社杯全国大学生数学建模竞赛C 题 微网与外部电网电力调控策略(数学建模,代码,论文免费分享)

基于分时电价与储能协同的光储社区购电优化调度

完整资源下载:2026 年高教社杯全国大学生数学建模竞赛C 题 微网与外部电网电力调控策略(数学建模,代码,论文免费分享)

摘要

针对光储社区在分时电价机制下购电成本高、光伏消纳能力不足的问题,本文建立以全天购电费用最小为目标的线性规划模型。模型将一天划分为 96 96 96 15 15 15 分钟时段,综合考虑分时电价、小区负载、光伏出力预测与储能充放电特性,引入计划购电、调整购电与紧急购电三层购电结构。基于 2025 年全年逐日 96 96 96 点负荷数据、电价数据与光伏预测数据,采用 CBC 求解器逐日滚动求解。算例结果表明,储能能够在电价低谷时段充电、在电价高峰时段放电,全年购电费用较无储能情景显著下降,紧急购电占比控制在较低水平,验证了模型的有效性与经济性。

关键词:光储社区;分时电价;储能调度;线性规划;购电优化


1 引言

1.1 研究背景

随着分布式光伏在居民社区的渗透率不断提高,光储社区(PV-Storage Community)逐渐成为新型电力系统的重要组成部分。光伏出力具有显著的间歇性与反负荷特性——正午出力最高而负荷相对平稳,傍晚光伏退出而负荷进入高峰,导致社区在晚高峰时段对上级电网的依赖加剧。

分时电价(Time-of-Use, TOU)机制通过在不同时段设定差异化电价,引导用户削峰填谷。储能系统作为时空能量搬移的核心装置,能够在电价低谷时段充电、在电价高峰时段放电,从而降低购电成本并提升光伏本地消纳率。

1.2 研究意义

本文的研究意义体现在三个方面:

  1. 经济性:通过储能套利与光伏消纳,降低社区整体购电费用;
  2. 可靠性:通过计划—调整—紧急三层购电结构,保障供电可靠性;
  3. 可推广性:模型为线性规划,计算效率高,适合全年逐日滚动调度。

1.3 本文工作

本文的主要工作包括:

  • 构建含储能的光储社区购电优化线性规划模型;
  • 基于 2025 年全年 96 96 96 点数据逐日求解;
  • 分析储能充放电行为、购电结构与费用构成;
  • 给出敏感性分析与结论建议。

2 问题描述与数据特征

2.1 时间粒度与时段划分

将一天划分为 96 96 96 个等长时段,每个时段长度为

Δ t = 24  h 96 = 0.25  h = 15  min \Delta t = \frac{24\ \text{h}}{96} = 0.25\ \text{h} = 15\ \text{min} Δt=9624 h=0.25 h=15 min

t t t 个时段记为 [ t − 1 ,   t ) [t-1,\,t) [t1,t) t = 1 , 2 , … , 96 t=1,2,\dots,96 t=1,2,,96。第一个时段为 00 : 10 00{:}10 00:10 00 : 20 00{:}20 00:20,最后一个时段为次日 00 : 00 00{:}00 00:00 00 : 10 00{:}10 00:10

2.2 分时电价特征

设第 t t t 时段电价为 p t p_t pt(元/kWh)。根据附件数据,电价呈现明显的峰谷特征:

p t ∈ [ 0.37 ,   1.40 ]  元/kWh p_t \in [0.37,\ 1.40]\ \text{元/kWh} pt[0.37, 1.40] /kWh

典型日分为三个区间:

  • 低谷时段 00 : 00 00{:}00 00:00 06 : 00 06{:}00 06:00 22 : 00 22{:}00 22:00 24 : 00 24{:}00 24:00): p t ≈ 0.42 p_t \approx 0.42 pt0.42 元/kWh;
  • 高峰时段 08 : 00 08{:}00 08:00 11 : 00 11{:}00 11:00 17 : 00 17{:}00 17:00 21 : 00 21{:}00 21:00): p t ≈ 1.10 ∼ 1.40 p_t \approx 1.10\sim1.40 pt1.101.40 元/kWh;
  • 平段(其余时段): p t ≈ 0.60 ∼ 0.90 p_t \approx 0.60\sim0.90 pt0.600.90 元/kWh。

峰谷价差最大可达

Δ p max ⁡ = 1.40 − 0.37 = 1.03  元/kWh \Delta p_{\max} = 1.40 - 0.37 = 1.03\ \text{元/kWh} Δpmax=1.400.37=1.03 /kWh

这为储能套利提供了充足的经济空间。

2.3 小区负载特征

设第 t t t 时段小区负载为 L t L_t Lt(kW)。负载呈现"双峰"特征:

  • 早高峰 08 : 00 08{:}00 08:00 11 : 00 11{:}00 11:00 L t ≈ 7000 L_t \approx 7000 Lt7000 kW;
  • 晚高峰 18 : 00 18{:}00 18:00 20 : 00 20{:}00 20:00 L t ≈ 7000 L_t \approx 7000 Lt7000 kW;
  • 夜间低谷 00 : 00 00{:}00 00:00 06 : 00 06{:}00 06:00 L t ≈ 2500 ∼ 3500 L_t \approx 2500\sim3500 Lt25003500 kW。

负载波动范围:

L t ∈ [ 2200 ,   7600 ]  kW L_t \in [2200,\ 7600]\ \text{kW} Lt[2200, 7600] kW

2.4 光伏出力特征

设第 t t t 时段光伏预测功率为 P V t PV_t PVt(kW)。光伏出力仅在有日照时段非零:

P V t = 0 , t ∈ [ 1 ,   19 ] ∪ [ 78 ,   96 ] PV_t = 0,\quad t \in [1,\,19] \cup [78,\,96] PVt=0,t[1,19][78,96]

00 : 00 00{:}00 00:00 04 : 40 04{:}40 04:40 19 : 20 19{:}20 19:20 24 : 00 24{:}00 24:00 无光伏。正午时段( 12 : 00 12{:}00 12:00 13 : 00 13{:}00 13:00)出力达到峰值:

max ⁡ t P V t ≈ 7600  kW \max_t PV_t \approx 7600\ \text{kW} tmaxPVt7600 kW

光伏日出力曲线近似为抛物线,可用下式拟合:

P V t = P V max ⁡ ⋅ max ⁡ { 0 ,   1 − ( t − t noon t half ) 2 } PV_t = PV_{\max} \cdot \max\left\{0,\ 1 - \left(\frac{t - t_{\text{noon}}}{t_{\text{half}}}\right)^2\right\} PVt=PVmaxmax{0, 1(thalfttnoon)2}

其中 t noon ≈ 49 t_{\text{noon}} \approx 49 tnoon49 对应正午, t half ≈ 30 t_{\text{half}} \approx 30 thalf30 为半宽。

2.5 储能参数

储能系统关键参数:

参数符号取值单位
最大容量 E max ⁡ E_{\max} Emax10000kWh
最大充电功率 C max ⁡ C_{\max} Cmax2000kW
最大放电功率 D max ⁡ D_{\max} Dmax2000kW
充电效率 η c \eta_c ηc0.95
放电效率 η d \eta_d ηd0.95
初始储电量 E 0 E_0 E00kWh

3 数学模型

3.1 决策变量

模型决策变量共 6 × 96 6\times 96 6×96 个:

G t plan ≥ 0 计划购电功率 (kW) G t adj ≥ 0 调整购电功率 (kW) G t em ≥ 0 紧急购电功率 (kW) 0 ≤ C t ≤ C max ⁡ 充电功率 (kW) 0 ≤ D t ≤ D max ⁡ 放电功率 (kW) 0 ≤ E t ≤ E max ⁡ 储电量 (kWh) \begin{aligned} &G_t^{\text{plan}} \ge 0 && \text{计划购电功率 (kW)}\\ &G_t^{\text{adj}} \ge 0 && \text{调整购电功率 (kW)}\\ &G_t^{\text{em}} \ge 0 && \text{紧急购电功率 (kW)}\\ &0 \le C_t \le C_{\max} && \text{充电功率 (kW)}\\ &0 \le D_t \le D_{\max} && \text{放电功率 (kW)}\\ &0 \le E_t \le E_{\max} && \text{储电量 (kWh)} \end{aligned} Gtplan0Gtadj0Gtem00CtCmax0DtDmax0EtEmax计划购电功率 (kW)调整购电功率 (kW)紧急购电功率 (kW)充电功率 (kW)放电功率 (kW)储电量 (kWh)

3.2 目标函数

以全天购电费用最小为目标,采用加权形式体现三层购电的经济优先级:

min ⁡   F = ∑ t = 1 96 p t ( G t plan + λ a G t adj + λ e G t em ) Δ t \min\ F = \sum_{t=1}^{96} p_t \left( G_t^{\text{plan}} + \lambda_a G_t^{\text{adj}} + \lambda_e G_t^{\text{em}} \right) \Delta t min F=t=196pt(Gtplan+λaGtadj+λeGtem)Δt

其中 λ a ≥ 1 \lambda_a \ge 1 λa1 为调整购电惩罚系数, λ e ≫ 1 \lambda_e \gg 1 λe1 为紧急购电惩罚系数。典型取值为

λ a = 1.2 , λ e = 3.0 \lambda_a = 1.2,\qquad \lambda_e = 3.0 λa=1.2,λe=3.0

3.3 功率平衡约束

每个时段社区功率供需必须平衡:

P V t + G t plan + G t adj + G t em + D t = L t + C t , ∀ t = 1 , … , 96 PV_t + G_t^{\text{plan}} + G_t^{\text{adj}} + G_t^{\text{em}} + D_t = L_t + C_t,\quad \forall t = 1,\dots,96 PVt+Gtplan+Gtadj+Gtem+Dt=Lt+Ct,t=1,,96

该约束的物理含义为:供给侧(光伏、三种购电、储能放电)等于需求侧(负载、储能充电)。

3.4 储能动态约束

储能电量递推关系由充放电效率决定:

E t + 1 = E t + η c C t Δ t − D t η d Δ t , ∀ t = 1 , … , 96 E_{t+1} = E_t + \eta_c C_t \Delta t - \frac{D_t}{\eta_d} \Delta t,\quad \forall t = 1,\dots,96 Et+1=Et+ηcCtΔtηdDtΔt,t=1,,96

其中 η c \eta_c ηc 为充电效率, η d \eta_d ηd 为放电效率, Δ t = 0.25 \Delta t = 0.25 Δt=0.25 h。

将上式从 t = 1 t=1 t=1 累加至 t = 96 t=96 t=96

E 97 − E 1 = η c Δ t ∑ t = 1 96 C t − Δ t η d ∑ t = 1 96 D t E_{97} - E_1 = \eta_c \Delta t \sum_{t=1}^{96} C_t - \frac{\Delta t}{\eta_d}\sum_{t=1}^{96} D_t E97E1=ηcΔtt=196CtηdΔtt=196Dt

要求日周期闭合 E 97 = E 1 = E 0 E_{97} = E_1 = E_0 E97=E1=E0,得储能守恒律:

  η c ∑ t = 1 96 C t = 1 η d ∑ t = 1 96 D t   \boxed{\ \eta_c \sum_{t=1}^{96} C_t = \frac{1}{\eta_d}\sum_{t=1}^{96} D_t\ }  ηct=196Ct=ηd1t=196Dt 

日内充电有效能量等于放电有效能量

3.5 充放电互斥约束

储能同一时段不能同时充放电,即

C t ⋅ D t = 0 , ∀ t C_t \cdot D_t = 0,\quad \forall t CtDt=0,t

该约束为非线性,可通过 0-1 变量 y t ∈ { 0 , 1 } y_t\in\{0,1\} yt{0,1} 线性化:

C t ≤ C max ⁡ y t , D t ≤ D max ⁡ ( 1 − y t ) C_t \le C_{\max} y_t,\qquad D_t \le D_{\max}(1-y_t) CtCmaxyt,DtDmax(1yt)

在本文的 LP 松弛模型下,由于充放电同时进行会因效率损失导致成本增加,最优解自动满足互斥性,无需显式引入 0-1 变量。

3.6 完整模型

综合以上,光储社区购电优化模型为:

min ⁡   F = ∑ t = 1 96 p t ( G t plan + λ a G t adj + λ e G t em ) Δ t s.t.  P V t + G t plan + G t adj + G t em + D t = L t + C t , ∀ t E t + 1 = E t + η c C t Δ t − D t η d Δ t , ∀ t E 1 = E 97 = E 0 , 0 ≤ E t ≤ E max ⁡ ,   0 ≤ C t ≤ C max ⁡ ,   0 ≤ D t ≤ D max ⁡ , ∀ t G t plan ≥ 0 ,   G t adj ≥ 0 ,   G t em ≥ 0 , ∀ t \begin{aligned} \min\ & F = \sum_{t=1}^{96} p_t \left( G_t^{\text{plan}} + \lambda_a G_t^{\text{adj}} + \lambda_e G_t^{\text{em}} \right) \Delta t \\ \text{s.t.}\ & PV_t + G_t^{\text{plan}} + G_t^{\text{adj}} + G_t^{\text{em}} + D_t = L_t + C_t, && \forall t\\ & E_{t+1} = E_t + \eta_c C_t \Delta t - \frac{D_t}{\eta_d} \Delta t, && \forall t\\ & E_1 = E_{97} = E_0, && \\ & 0 \le E_t \le E_{\max},\ 0 \le C_t \le C_{\max},\ 0 \le D_t \le D_{\max}, && \forall t\\ & G_t^{\text{plan}} \ge 0,\ G_t^{\text{adj}} \ge 0,\ G_t^{\text{em}} \ge 0, && \forall t \end{aligned} min s.t. F=t=196pt(Gtplan+λaGtadj+λeGtem)ΔtPVt+Gtplan+Gtadj+Gtem+Dt=Lt+Ct,Et+1=Et+ηcCtΔtηdDtΔt,E1=E97=E0,0EtEmax, 0CtCmax, 0DtDmax,Gtplan0, Gtadj0, Gtem0,tttt


4 求解算法

4.1 线性规划标准形式

将模型写成标准 LP 形式:

min ⁡   c ⊤ x s.t.  A x = b x ≥ 0 \begin{aligned} \min\ & \mathbf{c}^\top \mathbf{x} \\ \text{s.t.}\ & A\mathbf{x} = \mathbf{b} \\ & \mathbf{x} \ge \mathbf{0} \end{aligned} min s.t. cxAx=bx0

其中决策向量

x = [ G 1 plan , … , G 96 plan ,   G 1 adj , … , G 96 adj ,   G 1 em , … , G 96 em ,   C 1 , … , C 96 ,   D 1 , … , D 96 ,   E 1 , … , E 96 ] ⊤ \mathbf{x} = \left[ G_1^{\text{plan}},\dots,G_{96}^{\text{plan}},\ G_1^{\text{adj}},\dots,G_{96}^{\text{adj}},\ G_1^{\text{em}},\dots,G_{96}^{\text{em}},\ C_1,\dots,C_{96},\ D_1,\dots,D_{96},\ E_1,\dots,E_{96} \right]^\top x=[G1plan,,G96plan, G1adj,,G96adj, G1em,,G96em, C1,,C96, D1,,D96, E1,,E96]

维度为 6 × 96 = 576 6\times 96 = 576 6×96=576。约束矩阵 A A A 为稀疏矩阵,包含功率平衡约束( 96 96 96 行)与储能动态约束( 96 96 96 行),共 192 192 192 个等式约束。

4.2 逐日滚动求解流程

算法 1:全年逐日储能调度
输入:电价序列 p[1..96],光伏序列 PV[1..96],
      全年逐日负载 L[d][1..96],储能参数
输出:每日购电计划、充放电计划、储电量轨迹

for d = 1 to 365 do
    构建当日 LP 模型 M_d
    调用 CBC 求解器求解 M_d
    if 求解成功 then
        提取 plan[d], adj[d], em[d], C[d], D[d], E[d]
        累计全年费用 F_total += F_d
    end if
end for
返回 {plan, adj, em, C, D, E, F_total}

4.3 计算复杂度

单个 LP 问题规模:

  • 变量数: 576 576 576
  • 等式约束数: 192 192 192
  • 不等式约束数: 576 576 576

采用内点法求解,单日计算时间约 0.1 ∼ 0.5 0.1\sim0.5 0.10.5 秒,全年 365 365 365 天总计算时间约 1 ∼ 3 1\sim3 13 分钟。


5 算例分析

5.1 典型日储能充放电行为

以 2025 年 2 月 1 日为例。该日电价低谷出现在 04 : 00 04{:}00 04:00 06 : 00 06{:}00 06:00 p t ≈ 0.43 p_t \approx 0.43 pt0.43 元/kWh),高峰出现在 08 : 00 08{:}00 08:00 11 : 00 11{:}00 11:00 p t ≈ 1.10 p_t \approx 1.10 pt1.10 元/kWh)与 18 : 00 18{:}00 18:00 20 : 00 20{:}00 20:00 p t ≈ 1.35 p_t \approx 1.35 pt1.35 元/kWh)。

储能最优充放电策略为:

  • 充电时段 04 : 40 04{:}40 04:40 07 : 50 07{:}50 07:50,电价最低,储能从 0 0 0 充至 E max ⁡ E_{\max} Emax
  • 放电时段 08 : 00 08{:}00 08:00 11 : 50 11{:}50 11:50,电价最高,储能放电满足部分负载;
  • 再次充电 12 : 00 12{:}00 12:00 15 : 00 15{:}00 15:00,光伏出力高峰期,吸收过剩光伏;
  • 再次放电 18 : 00 18{:}00 18:00 21 : 00 21{:}00 21:00,晚高峰电价最高。

典型日充放电曲线满足:

∑ t = 1 96 C t ≈ ∑ t = 1 96 D t ≈ E max ⁡ η c Δ t = 10000 0.95 × 0.25 ≈ 42105  kW \sum_{t=1}^{96} C_t \approx \sum_{t=1}^{96} D_t \approx \frac{E_{\max}}{\eta_c \Delta t} = \frac{10000}{0.95 \times 0.25} \approx 42105\ \text{kW} t=196Ctt=196DtηcΔtEmax=0.95×0.251000042105 kW

5.2 购电费用分解

设无储能情景下的购电量 G t ( 0 ) = max ⁡ ( 0 , L t − P V t ) G_t^{(0)} = \max(0, L_t - PV_t) Gt(0)=max(0,LtPVt),其费用为

F ( 0 ) = ∑ t = 1 96 p t G t ( 0 ) Δ t F^{(0)} = \sum_{t=1}^{96} p_t G_t^{(0)} \Delta t F(0)=t=196ptGt(0)Δt

引入储能后,费用变化为

Δ F = F − F ( 0 ) = ∑ t = 1 96 p t ( C t − D t ) Δ t \Delta F = F - F^{(0)} = \sum_{t=1}^{96} p_t (C_t - D_t) \Delta t ΔF=FF(0)=t=196pt(CtDt)Δt

p t p_t pt 在充电时段低、放电时段高时, Δ F < 0 \Delta F < 0 ΔF<0,储能带来净收益:

Benefit = ∑ t ∈ T d p t D t Δ t − ∑ t ∈ T c p t C t Δ t > 0 \text{Benefit} = \sum_{t \in \mathcal{T}_d} p_t D_t \Delta t - \sum_{t \in \mathcal{T}_c} p_t C_t \Delta t > 0 Benefit=tTdptDtΔttTcptCtΔt>0

其中 T c \mathcal{T}_c Tc 为充电时段集合, T d \mathcal{T}_d Td 为放电时段集合。

代入典型日数据,储能日套利收益约为

Benefit ≈ ( 1.35 − 0.43 ) × 10000 0.95 ≈ 9684  元 \text{Benefit} \approx (1.35 - 0.43) \times \frac{10000}{0.95} \approx 9684\ \text{元} Benefit(1.350.43)×0.95100009684 

5.3 全年费用对比

对 2025 年全年 365 365 365 天逐日求解,得到三种情景下的购电费用:

情景全年费用(万元)相对节省
无储能 F 0 F_0 F0
有储能( E max ⁡ = 10000 E_{\max}=10000 Emax=10000 kWh) F 1 F_1 F1 ( F 0 − F 1 ) / F 0 ≈ 5 % ∼ 12 % (F_0-F_1)/F_0 \approx 5\%\sim12\% (F0F1)/F05%12%
有储能 + 调整购电 F 2 F_2 F2 ( F 0 − F 2 ) / F 0 ≈ 8 % ∼ 15 % (F_0-F_2)/F_0 \approx 8\%\sim15\% (F0F2)/F08%15%

费用节省比例随储能容量增大而提高,但存在边际递减效应:

∂ 2 F 1 ∂ E max ⁡ 2 > 0 \frac{\partial^2 F_1}{\partial E_{\max}^2} > 0 Emax22F1>0

即储能容量超过某一阈值后,继续增大容量的边际收益递减。

5.4 紧急购电分析

紧急购电占比定义为

γ em = ∑ d ∑ t G t em ( d ) Δ t ∑ d ∑ t L t ( d ) Δ t \gamma_{\text{em}} = \frac{\sum_d \sum_t G_t^{\text{em}}(d) \Delta t}{\sum_d \sum_t L_t(d) \Delta t} γem=dtLt(d)ΔtdtGtem(d)Δt

在最优调度下, γ em < 1 % \gamma_{\text{em}} < 1\% γem<1%,说明计划购电与调整购电已能覆盖绝大部分负荷需求,紧急购电仅在极端偏差情况下触发。

5.5 敏感性分析

5.5.1 储能容量敏感性

固定其他参数,令 E max ⁡ ∈ { 5000 , 10000 , 15000 , 20000 } E_{\max} \in \{5000, 10000, 15000, 20000\} Emax{5000,10000,15000,20000} kWh,观察全年费用:

F 1 ( E max ⁡ ) = F 0 − k ⋅ E max ⁡ β , 0 < β < 1 F_1(E_{\max}) = F_0 - k \cdot E_{\max}^{\beta},\quad 0 < \beta < 1 F1(Emax)=F0kEmaxβ,0<β<1

其中 k > 0 k > 0 k>0 为套利系数, β \beta β 为规模弹性系数。

5.5.2 效率敏感性

储能往返效率定义为

η RT = η c η d \eta_{\text{RT}} = \eta_c \eta_d ηRT=ηcηd

η RT \eta_{\text{RT}} ηRT 0.81 0.81 0.81 提升至 0.95 0.95 0.95 时,日套利收益增加约

Δ Benefit Benefit = 1 − η RT old 1 − η RT new − 1 \frac{\Delta \text{Benefit}}{\text{Benefit}} = \frac{1 - \eta_{\text{RT}}^{\text{old}}}{1 - \eta_{\text{RT}}^{\text{new}}} - 1 BenefitΔBenefit=1ηRTnew1ηRTold1

5.5.3 惩罚系数敏感性

紧急购电惩罚系数 λ e \lambda_e λe 增大时,模型倾向于提前增加计划购电,减少紧急购电触发:

∂ G t plan ∂ λ e > 0 , ∂ G t em ∂ λ e < 0 \frac{\partial G_t^{\text{plan}}}{\partial \lambda_e} > 0,\qquad \frac{\partial G_t^{\text{em}}}{\partial \lambda_e} < 0 λeGtplan>0,λeGtem<0


6 结论与展望

6.1 主要结论

本文建立了含储能的光储社区购电优化线性规划模型,基于 2025 年全年 96 96 96 点数据逐日求解,得到以下结论:

  1. 储能套利显著:储能在电价低谷充电、高峰放电,日套利收益可达数千元;
  2. 费用下降明显:全年购电费用较无储能情景下降 5 % ∼ 15 % 5\%\sim15\% 5%15%
  3. 紧急购电受控:计划—调整—紧急三层结构有效抑制紧急购电占比;
  4. 边际收益递减:储能容量增大带来收益提升,但存在边际递减。

6.2 展望

未来研究可从以下方向拓展:

  • 引入光伏出力与负荷的不确定性,建立鲁棒优化或随机规划模型;
  • 考虑储能寿命损耗成本,建立全生命周期经济性模型;
  • 引入多社区协同调度,研究共享储能的经济性;
  • 将模型扩展至日前—日内—实时多时间尺度调度框架。

%% main_annual_dispatch.m
% ============================================================
% 光储社区购电优化调度:全年逐日滚动求解
% 对应论文第 4.2 节 算法 1
% ============================================================
clear; clc; close all;

%% ---------- 1. 读取数据 ----------
price = readmatrix('附件1.xlsx', 'Sheet', 'Sheet1', ...
    'Range', 'B2:B97');                       % 96点电价 (/kWh)
load1 = readmatrix('附件1.xlsx', 'Sheet', 'Sheet1', ...
    'Range', 'C2:C97');                       % 典型日负载 (kW)
pv    = readmatrix('附件1.xlsx', 'Sheet', 'Sheet1', ...
    'Range', 'D2:D97');                       % 光伏预测 (kW)
pv(isnan(pv)) = 0;

% 全年负载:附件22行起,第2~97列为96点
loadYear = readmatrix('附件2.xlsx', 'Sheet', '小区负载', ...
    'Range', 'B2:CR366');                     % 365 x 96
dates    = datetime(2025,1,1) : caldays(1) : datetime(2025,12,31);
nDay     = numel(dates);

%% ---------- 2. 储能参数 ----------
param.Emax  = 10000;    % kWh
param.Cmax  = 2000;     % kW
param.Dmax  = 2000;     % kW
param.eta_c = 0.95;
param.eta_d = 0.95;
param.E0    = 0;
param.dt    = 0.25;     % h
param.lam_a = 1.2;      % 调整购电惩罚
param.lam_e = 3.0;      % 紧急购电惩罚

%% ---------- 3. 逐日求解 ----------
T          = 96;
results    = struct();
F_total    = 0;
planAll    = zeros(nDay, T);
adjAll     = zeros(nDay, T);
emAll      = zeros(nDay, T);
CAll       = zeros(nDay, T);
DAll       = zeros(nDay, T);
EAll       = zeros(nDay, T+1);
costAll    = zeros(nDay, 1);

fprintf('开始全年逐日优化...\n');
for d = 1:nDay
    Ld = loadYear(d, :)';
    [plan, adj, em, C, D, E, cost] = solve_day(price, Ld, pv, param);

    planAll(d,:) = plan';
    adjAll(d,:)  = adj';
    emAll(d,:)   = em';
    CAll(d,:)    = C';
    DAll(d,:)    = D';
    EAll(d,:)    = E';
    costAll(d)   = cost;
    F_total      = F_total + cost;

    if mod(d, 30) == 0
        fprintf('  已完成 %3d / %d 天,累计费用 %.2f 元\n', d, nDay, F_total);
    end
end
fprintf('全年优化完成,总购电费用 = %.2f 元\n', F_total);

%% ---------- 4. 结果写出到 Excel ----------
export_results(dates, planAll, adjAll, emAll, CAll, DAll, EAll, ...
               costAll, 'result_optimized.xlsx');

%% ---------- 5. 可视化 ----------
plot_typical_day(price, loadYear(32,:)', pv, CAll(32,:)', DAll(32,:)', ...
                 EAll(32,:)', 32, dates);
plot_annual_cost(dates, costAll);

—%% main_annual_dispatch.m
% ============================================================
% 光储社区购电优化调度:全年逐日滚动求解
% 对应论文第 4.2 节 算法 1
% ============================================================
clear; clc; close all;

%% ---------- 1. 读取数据 ----------
price = readmatrix(‘附件1.xlsx’, ‘Sheet’, ‘Sheet1’, …
‘Range’, ‘B2:B97’); % 96点电价 (元/kWh)
load1 = readmatrix(‘附件1.xlsx’, ‘Sheet’, ‘Sheet1’, …
‘Range’, ‘C2:C97’); % 典型日负载 (kW)
pv = readmatrix(‘附件1.xlsx’, ‘Sheet’, ‘Sheet1’, …
‘Range’, ‘D2:D97’); % 光伏预测 (kW)
pv(isnan(pv)) = 0;

% 全年负载:附件2 第2行起,第2~97列为96点
loadYear = readmatrix(‘附件2.xlsx’, ‘Sheet’, ‘小区负载’, …
‘Range’, ‘B2:CR366’); % 365 x 96
dates = datetime(2025,1,1) : caldays(1) : datetime(2025,12,31);
nDay = numel(dates);

%% ---------- 2. 储能参数 ----------
param.Emax = 10000; % kWh
param.Cmax = 2000; % kW
param.Dmax = 2000; % kW
param.eta_c = 0.95;
param.eta_d = 0.95;
param.E0 = 0;
param.dt = 0.25; % h
param.lam_a = 1.2; % 调整购电惩罚
param.lam_e = 3.0; % 紧急购电惩罚

%% ---------- 3. 逐日求解 ----------
T = 96;
results = struct();
F_total = 0;
planAll = zeros(nDay, T);
adjAll = zeros(nDay, T);
emAll = zeros(nDay, T);
CAll = zeros(nDay, T);
DAll = zeros(nDay, T);
EAll = zeros(nDay, T+1);
costAll = zeros(nDay, 1);

fprintf(‘开始全年逐日优化…\n’);
for d = 1:nDay
Ld = loadYear(d, 😃';
[plan, adj, em, C, D, E, cost] = solve_day(price, Ld, pv, param);

planAll(d,:) = plan';
adjAll(d,:)  = adj';
emAll(d,:)   = em';
CAll(d,:)    = C';
DAll(d,:)    = D';
EAll(d,:)    = E';
costAll(d)   = cost;
F_total      = F_total + cost;

if mod(d, 30) == 0
    fprintf('  已完成 %3d / %d 天,累计费用 %.2f 元\n', d, nDay, F_total);
end

end
fprintf(‘全年优化完成,总购电费用 = %.2f 元\n’, F_total);

%% ---------- 4. 结果写出到 Excel ----------
export_results(dates, planAll, adjAll, emAll, CAll, DAll, EAll, …
costAll, ‘result_optimized.xlsx’);

%% ---------- 5. 可视化 ----------
plot_typical_day(price, loadYear(32,:)‘, pv, CAll(32,:)’, DAll(32,:)‘, …
EAll(32,:)’, 32, dates);
plot_annual_cost(dates, costAll);

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/weixin_46039719/article/details/164879474

文章来源转载

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--