1. 浮标太阳能充电系统能量流建模与基准策略实现
能量流对象与建模假设
浮标太阳能充电系统的能量流可以抽象为三个储能/耗能节点:光伏阵列(发电)、蓄电池组(储能)、负载(耗能)。本节建立以1小时为步长的离散能量流模型,用于后续策略对照。建模前先固定以下约定,避免符号混乱:
- 功率符号约定:流入蓄电池为正,流出为负。光伏发电功率
P_pv ≥ 0,负载功率P_load ≥ 0。 - 荷电状态
SOC取 0~1,蓄电池可用容量C_bat(Wh),充放电效率分别记为η_ch、η_dis。 - 基准策略采用固定阈值:
SOC < SOC_on时允许充电,SOC ≥ SOC_off时停止充电;本节基准策略只做“充电允许/禁止”判断,不做功率限幅。
基准策略实现
下面用 Python 实现该模型。输入为24小时的光伏功率与负载功率序列(示例数据,用于演示计算过程,非实测),输出逐时 SOC 与能量平衡结果。策略函数只依赖当前 SOC 与两个阈值,便于后续替换为优化策略时保持接口一致。
import numpy as np
# ---- 系统参数(示例值)----
C_bat = 1200.0 # 蓄电池可用容量 Wh
SOC0 = 0.55 # 初始荷电状态
SOC_on = 0.60 # 低于此值允许充电
SOC_off = 0.90 # 达到此值停止充电
eta_ch = 0.95 # 充电效率
eta_dis = 0.95 # 放电效率
dt = 1.0 # 步长 h
# ---- 24h 输入序列(示例数据)----
# 光伏:夜间为0,正午附近峰值约 180 W
P_pv = np.array([0,0,0,0,0,10,45,95,150,175,180,170,
150,120,80,40,10,0,0,0,0,0,0,0], dtype=float)
# 负载:通信与传感周期性工作,均值约 35 W
P_load = np.array([30,30,30,30,30,30,35,40,45,45,40,40,
40,40,40,40,40,40,35,35,30,30,30,30], dtype=float)
def baseline_charge_allowed(soc):
"""固定阈值基准策略:返回是否允许充电"""
if soc < SOC_on:
return True
if soc >= SOC_off:
return False
# 处于 [SOC_on, SOC_off) 区间时保持上一状态,这里简化为允许
return True
def simulate(P_pv, P_load):
soc = SOC0
rows = []
for t in range(len(P_pv)):
u_ch = 1 if baseline_charge_allowed(soc) else 0
# 充电功率受光伏可用功率限制
P_ch = P_pv[t] * eta_ch * u_ch
P_dis = P_load[t] / eta_dis
dE = (P_ch - P_dis) * dt
soc_new = soc + dE / C_bat
# 物理约束:SOC 限制在 [0,1]
soc_new = min(max(soc_new, 0.0), 1.0)
rows.append((t, P_pv[t], P_load[t], u_ch, P_ch, P_dis, dE, soc_new))
soc = soc_new
return rows
rows = simulate(P_pv, P_load)
print(f"{'t':>3} {'P_pv':>6} {'P_load':>7} {'u_ch':>5} {'dE(Wh)':>8} {'SOC':>7}")
for r in rows:
print(f"{r[0]:>3} {r[1]:>6.1f} {r[2]:>7.1f} {r[3]:>5d} {r[6]:>8.1f} {r[7]:>7.3f}")
E_in = sum(r[4] for r in rows) * dt
E_out = sum(r[5] for r in rows) * dt
print(f"\n24h 充电能量: {E_in:.1f} Wh")
print(f"24h 放电能量: {E_out:.1f} Wh")
print(f"24h 净能量变化: {E_in - E_out:.1f} Wh")
print(f"末态 SOC: {rows[-1][7]:.3f}")
结果判读与基线记录
运行上述代码后,应重点核对三件事,它们构成后续优化的对照基线:
- 能量守恒:净能量变化应等于
C_bat × (SOC_end − SOC0),若不等说明 SOC 被限幅截断,需在结果中标注。 - 策略触发点:观察
u_ch从 1 变 0 的时刻是否发生在 SOC 达到SOC_off之后,以及夜间 SOC 下降速率是否与负载一致。 - 基线指标:记录末态 SOC、24h 净能量变化、充电被禁止的时长,作为例2、例3 优化效果的比较基准。
若把
SOC_on 与 SOC_off 设为相同值,策略会在阈值附近频繁切换;本节基准策略保留两个阈值,正是为了给后续状态机设计留出改进空间。示例中的光伏与负载序列仅用于演示计算流程,不代表任何实际浮标站点的观测数据。实际应用时应替换为现场记录或经标定的估算序列,并重新核对容量与效率参数。