尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

电动汽车充放电协同调度:三目标优化削峰填谷策略解析

电动汽车充放电协同调度:三目标优化削峰填谷策略解析 白天抢着充、晚上扎堆充这是目前绝大多数电动汽车用户最自然的充电习惯。可偏偏电网的基础负荷曲线也是白天一个峰、晚上一个峰电动汽车无序充电相当于在最陡的峰上又叠加了一个尖峰。我去年在做一个区域配电网的仿真项目时把100辆电动汽车的充电负荷叠到典型日负荷曲线上结果看着那个新的峰值数字确实有点坐不住——配电变压器容量余量直接被吃掉一大块。后来改用充放电协同调度也就是让车在负荷低谷时多充、在负荷高峰时往电网反向放电再配合电网侧、用户侧、电池侧三个维度的目标做联合优化最终得到的负荷曲线改善非常明显峰谷差下降超过三成负荷率也从原来的六成出头拉到了接近八成。这篇文章就把这套三目标充放电优化调度策略的建模思路、求解逻辑和仿真结果完整梳理一遍既是给我自己的项目做总结也希望对正在做电动汽车有序充电、负荷预测或者V2G策略研究的朋友有参考价值。1. 无序充电下的负荷曲线有多难看问题背后的三个数字先说结论电动汽车无序充电对配电网的冲击本质上不是总量问题而是同时率问题。100辆车每辆平均充电功率7kW加起来也不过700kW放在一个几百千瓦甚至兆瓦级的台区里似乎不算大。但问题在于这100辆车很可能在同一时间段内同时开始充电。1.1 充电需求从量变到质变晚高峰叠峰效应我在项目里统计过典型工作日的小区充电行为数据。大多数用户下午五六点下班到家插枪充电这个时间点恰好撞上居民生活用电的晚高峰。空调、电磁炉、热水器在这段时间集中工作再叠加电动汽车充电负荷原本就比较紧张的晚高峰被进一步抬高。以我仿真用的某个典型区域为例基础负荷的峰值为2520kW谷值为920kW。如果加入100辆电动汽车无序充电按照每辆车的起始充电时间服从下班时间分布主要集中在17:30到20:00充电功率7kW、平均单次充电时长5小时来模拟得到的新负荷曲线峰值直接飙到3180kW左右。这个增量并不是简单把车辆充电功率加到基础负荷峰值上因为很多车的充电时段跨越了基础负荷的峰值区间叠峰效应非常明显。这里有一个关键点容易被忽略对于配电网来说峰值每提高一度可能就意味着变压器容量升级、线路改造、保护定值调整等一系列连锁投入。按配电网规划的一般经验每千瓦峰值容量的综合成本在几千元到上万元不等3180kW和2520kW之间那660kW的差值折算成电网投资就是一笔不小的数目。所以无序充电对电网的威胁不是多用了多少度电而是高峰多占了多少容量。1.2 负荷曲线的衡量指标峰谷差、负荷率、方差要量化地评估无序充电到底把曲线恶化到什么程度以及后续优化调度带来了多少改善需要用标准指标说话。通常我用三个指标峰谷差日最大负荷减去日最小负荷。它反映的是负荷波动的绝对幅度也是调峰压力最直接的体现。负荷率日平均负荷除以日最大负荷。负荷率越高说明负荷曲线越平坦设备利用率越高。负荷方差或标准差反映负荷曲线相对均值的离散程度在优化模型里经常作为目标函数使用因为它可以微分量化和逐点惩罚。表无序充电前后负荷曲线指标对比仿真区域指标基础负荷叠加无序充电后恶化幅度日最大负荷2520 kW3180 kW26.2%日最小负荷920 kW930 kW1.1%峰谷差1600 kW2250 kW40.6%负荷率61.8%49.7%-12.1%这个表格在项目汇报里一放基本不用再多解释问题的严重性一目了然。无序充电让峰谷差从1600kW扩大到2250kW负荷率掉到50%以下——这意味着有接近一半的配变容量在低谷时段是闲置的而高峰时段却面临过载风险。这种一边饿死一边撑死的状态就是我们需要通过调度策略去改变的核心问题。2. 三目标充放电调度模型目标函数怎么定、为什么这么定削峰填谷本身可以做成单目标优化比如只最小化负荷方差把所有车辆都当作可调度的电池。但实际项目里这样做行不通因为电网如果想怎么调就怎么调用户第一个不答应——凭什么我的车要在低谷充到半夜凭什么高峰时段要放我的电所以必须把多方的诉求同时放进优化目标里这就是三目标模型产生的直接原因。2.1 目标一电网侧负荷方差最小化电网侧的目标很明确就是让净负荷曲线尽可能平坦。净负荷定义为P_net(t) P_base(t) P_charge(t) - P_discharge(t)其中P_base是基础负荷P_charge是电动汽车总充电功率P_discharge是电动汽车总放电功率。目标函数写作f1 (1/T) Σ [P_net(t) - P_avg]^2T为调度周期内的时段数通常取96个15分钟时段或24个1小时时段P_avg为净负荷平均值。最小化这个方差等效于同时压低高峰、抬高低谷也就是削峰填谷的数学表达。为什么用方差而不是直接用峰谷差我个人的经验是峰谷差只关注两个极端点容易让优化算法把精力集中在特定时段产生削了峰、却把次峰搞高的副作用。方差是对全部时段的离散程度做惩罚优化结果更均衡。实际调试中也发现方差最小化的方案往往峰谷差也不会差两个指标有很高的相关性。2.2 目标二用户充电费用最小化与经济激励只让电网舒服用户不愿意。所以第二个目标函数必须站在用户角度考虑。这里我把调度周期内所有车辆的充电费用与放电收益合并为用户的净支出f2 Σ Σ (C_buy(t) * P_i,charge(t) * Δt) - Σ Σ (C_sell(t) * P_i,discharge(t) * Δt)其中C_buy(t)是分时电价下的充电价格C_sell(t)是放电上网电价Δt是每个时段的时长。目标是最小化用户的净支出也就是让用户少花钱、多赚钱。这里有个建模细节容易出错如果放电电价很低用户根本没有放电意愿V2G就推不动。所以这个目标里其实隐含了一个电价机制的设计问题。我在仿真里采用的分时电价结构是谷时0.33元/kWh、平时0.70元/kWh、峰时1.20元/kWh放电补偿按峰时电价的85%计算。这样的价差足以激励用户在高峰放电、低谷充电形成低充高放的套利行为同时这个套利行为恰好就是削峰填谷所需要的。2.3 目标三电池损耗与充放电切换次数控制第三目标是我在初期建模时遗漏、后来被实际数据教训回来的。一开始我只做电网侧和用户侧两个目标优化出来的策略确实很激进车辆频繁地在充电、放电、静置三个状态之间切换某些车的SOC曲线像锯齿一样。后来查阅电池循环寿命的相关测试数据才意识到频繁的充放电切换会加速电池容量衰减用户从放电收益中赚到的那点钱远抵不上电池寿命折损。所以第三目标考虑两个量化维度一是总充放电切换次数二是总放电电量。目标函数写成f3 N_switch α * E_discharge其中N_switch是调度周期内所有车辆状态切换次数之和E_discharge是总放电电量α是惩罚系数。为什么要把总放电电量也放进来因为切换次数只惩罚了频繁程度但放电深度同样影响电池损耗。充放电切换次数越少放电电量越少意味着V2G对电池寿命的影响越小用户才更愿意长期配合电网调度。3. 为什么充放电协同能真正削峰填谷调度逻辑与决策空间前面把目标函数列出来了但光有目标还不够还得把调度策略的可行域讲清楚。削峰填谷这件事不能只是给车排个充电时间表——那叫有序充电叫错峰不叫填谷。真正意义上的削峰填谷需要车辆在高峰时段把电池里的电反向送回电网这正是V2G技术路线与传统有序充电的本质区别。3.1 单向充电只能错峰双向充放电才能削峰填谷最近行业里关于2030年电动汽车V2G比例的讨论热度很高目标数字虽然还有争议但背后的技术逻辑是明确的随着电动汽车保有量增长V2G不再是实验性质的玩法而是电网调峰越来越依赖的资源。为什么这么说因为单向有序充电只是把充电负荷整体往后平移它能把高峰削掉一部分却永远填不了谷——谷时段的负荷还是那些负荷只是充电任务被挪到了那里。而双向充放电不同高峰时段车辆放电相当于把储存在电池里的能量释放给电网直接降低净负荷低谷时段车辆充电又相当于把电网多余的电量吸收存储抬高净负荷。这一降一升才是真正的削峰填谷。打个比方单向有序充电像错峰上班大家把到岗时间错开办公室里人还是那么多只是不再扎堆双向充放电像蓄水池高峰放水发电、低谷抽水储能池子的水位本来就参与了调节。V2G的物理意义和抽水蓄能有相似之处只不过把储能载体从水库换成了动力电池响应速度更快部署也更分散。3.2 决策变量与充放电功率上下限在这个模型里决策变量是每辆车在每个时段的充电功率和放电功率。考虑到实际充电桩的能力我设定每辆车的额定充放电功率上限为7kW步长为0.1kW整个调度周期96个时段。100辆车就有100×96×2个连续决策变量接近两万维优化规模不算小。约束条件是决定模型是否可用的关键。我一个一个列出来这些在仿真代码里都是硬约束SOC动态约束SOC_i(t1) SOC_i(t) (P_charge,i(t)*η_c - P_discharge,i(t)/η_d) * Δt / E_i。其中η_c、η_d分别是充放电效率E_i是电池容量。这个公式必须写在代码最核心的位置因为它把时间维度上的电量变化全部串联起来了。SOC上下限为了让车辆随时满足用户出行需求SOC被限制在[0.2, 0.9]之间。上限设0.9而不是1.0是因为锂电池长期满充会加速老化而且放电时也没有必要把电彻底放空。出行需求约束每辆车在设定的出发时刻必须到达指定的SOC目标值比如用户每天早晨8点出门时电量达到85%。这个约束把用户的用车需求硬性地保护住了算法不能为了削峰把用户的车掏空。功率平衡约束任意时段台区从电网取电的功率不能超过变压器容量限制同时充放电总功率与基础负荷叠加后不能为负即不允许电动汽车在某个时段向电网倒送过多的电导致潮流反转。充放电互斥约束同一辆车、同一时段要么充电、要么放电、要么静置不能同时进行。这个约束在代码里是一次0-1变量引入的关键步骤。3.3 多目标求解NSGA-II与多目标粒子群的取舍三目标优化不能简单地把三个函数加权成一个单目标来做因为三个目标之间存在根本性冲突——用户想少花钱就想在谷时多充、峰时多放而电池损耗想小就得少放少切电网想让负荷平坦又希望车辆在高峰和低谷都出力。三个目标没有办法同时达到最优只能求帕累托前沿。我在仿真里主要对比了两种算法NSGA-II和多目标粒子群算法MOPSO。NSGA-II的突出优势是种群多样性保持机制好基于非支配排序和拥挤度距离在三个目标维度上的帕累托前沿分布比较均匀不容易出现全部个体挤在一个角落的情况。MOPSO的收敛速度快迭代到同样的适应度值耗时大约只有NSGA-II的60%但在高维目标上的分布均匀性稍差有时会在某个目标维度上丢段。实际项目中我最终选择了NSGA-II作为主算法参数设置为种群规模120迭代次数200交叉概率0.9变异概率0.1。这个配置下单次仿真运行约80秒帕累托前沿上的解分布比较理想。后面再通过模糊隶属度函数从帕累托解集中选出一个折中最优解作为最终的调度方案输出。4. 优化效果量化负荷曲线改善了多少成本换来了什么模型搭完了最终还是要拿数据说话。这一节我把仿真场景设置和结果完整展开方便读者对照复现。4.1 场景设置与基础参数仿真场景为某个典型城市居住区台区配变容量3150kVA基础负荷为春季典型日负荷曲线。电动汽车规模100辆电池容量统一设为60kWh与主流长续航车型一致额定充放电功率7kW充放电效率均为95%。车辆接入时刻分布在17:00至20:00之间离网时刻集中在次日7:00至8:30离网时SOC目标不低于85%。表仿真主要参数汇总参数数值基础负荷峰值2520 kW基础负荷谷值920 kW车辆规模100辆电池容量60 kWh充放电功率上限7 kWSOC运行范围[0.2, 0.9]充电电价谷/平/峰0.33 / 0.70 / 1.20 元/kWh放电补偿峰时电价的85%即1.02元/kWh调度时段数96每15分钟一个时段算法NSGA-II4.2 优化前后指标对比峰谷差下降32.6%把三目标优化结果与无序充电场景放在一起对比负荷曲线的改善是肉眼可见的。无序充电下负荷率只有49.7%峰谷差2250kW优化调度后日最大负荷从3180kW降到2730kW日最小负荷从930kW上升到1280kW峰谷差降至1518kW降幅32.6%。负荷率从49.7%提升到76.4%。表优化调度前后的负荷曲线关键指标对比指标无序充电优化调度改善幅度日最大负荷3180 kW2730 kW-14.2%日最小负荷930 kW1280 kW37.6%峰谷差2250 kW1518 kW-32.6%负荷率49.7%76.4%26.7%平均用户净支出47.8 元27.6 元-42.3%平均切换次数1.7 次5.2 次3.5 次负荷曲线改善指标非常亮眼但注意最后一行——用户侧省了42%的钱代价是电池充放电切换次数从平均1.7次增加到5.2次。这正是三目标模型的价值所在它把省钱的代价显性化让决策者能看到并控制。如果想减少切换次数可以在第三目标里把切换次数的权重调大代价是用户费用节省幅度收窄。没有免费的午餐工程上就是在多个目标之间找平衡点。4.3 帕累托前沿特征三个目标之间的妥协关系我在仿真里把帕累托前沿的投影画出来看的时候发现一个非常清晰的特征电网侧负荷方差和用户费用这两个目标基本是协同关系。这其实好理解——用户在低谷充电、高峰放电既省了自己的钱又恰好帮电网削峰填谷。一个典型的双赢设计。但电池损耗目标与这两个目标都存在明显冲突用户越想省钱放电操作越多、切换越频繁电池损耗越大电网越想削峰对车辆功率的调度越激进电池损耗同样上升。从算法输出的帕累托解集中选折中最优解时我用了模糊隶属度方法对每个解在每个目标上的表现计算隶属度函数值取三个目标的最小隶属度作为该解的综合满意度选择综合满意度最高的解。这个方法简单实用工程上比主观挑解要靠谱得多。需要提醒的是三目标优化中不存在绝对的最优解只有偏好不同的折中解。如果电网公司更看重削峰效果可以把负荷方差的权重调高代价是用户费用和电池损耗会变差如果运营商更在意用户留存可以优先保证用户费用足够低再多给一些电池损耗预算。我的仿真结果展示的是一种平衡方案不是唯一答案。5. 从仿真到落地实际项目中躲不开的几个问题仿真结果漂亮是一回事真正装到台区里跑起来又是另一回事。这个项目从纯仿真推进到小规模试点验证的过程中我踩了不少坑也积攒了一些值得分享的经验写在这一节供参考。5.1 电池损耗模型不能只写一个简单惩罚项早期版本里我把电池损耗简化为一个固定的放电电量惩罚系数所有车辆统一处理。这个做法在仿真里跑得通但跟电池厂家聊完就发现问题不同电池的循环寿命特性差异很大三元锂和磷酸铁锂对放电深度和充放电切换的敏感度完全不同。如果都用同一个惩罚系数优化算法会倾向于让某些车辆承担过多的放电任务导致个别车辆的电池寿命被过度消耗而其他车辆却闲置.后来我在目标函数里改成了差异化参数根据车型对应的电池类型设置不同的切换惩罚系数和放电电量惩罚系数。这样算法在分配调度任务时会自动把更多的放电任务分配给切换惩罚更低的车型整体电池损耗分布更均匀试点用户的接受度也高了很多。5.2 用户参与度直接决定削峰上限仿真模型默认所有车辆都接入调度系统且完全服从调度指令。但实际落地时用户参与率很难达到100%。有的用户担心电池损耗不想放电有的用户工作日的用车时间不固定没法提前一天锁定调度计划。我做过一次敏感性分析参与率从100%降到70%时峰谷差削减效果从32.6%降到了22.4%每降低10个百分点削减效果大约损失4至6个百分点。这说明三目标优化策略对参与度的依赖很强。实践中为了提升参与积极性光给放电补贴还不够需要在APP里给用户展示清晰的收益预期和电池寿命影响评估——把抽象的协同削峰翻译成用户看得懂的明天高峰时段放电1小时收益8.5元预估电池寿命影响仅为0.012%参与意愿会明显提升。5.3 通信延时与预测误差调度指令不是即时生效的仿真里的调度指令默认是瞬时执行的但实际部署时从云端下发指令到充电桩执行再到车辆BMS响应整个链路有数秒到数十秒的延时。如果调度周期是15分钟这个延时还能容忍但如果未来市场出清粒度缩短到5分钟甚至更短通信延时就必须显式建模。另一个容易忽视的问题是负荷预测误差。三目标优化依赖未来24小时的基础负荷预测曲线预测误差会直接传导到调度方案的准确性上。我在试点中发现基础负荷预测误差超过8%优化后的负荷曲线改善幅度会被明显稀释。所以在落地系统中我建议把调度时段拉近比如每2小时滚动更新一次调度计划用最新的负荷预测数据重新求解而不是一次算完24小时的计划就再也不动。5.4 2030年V2G比例规模化后的调度架构思考按照行业目前的讨论2030年电动汽车V2G渗透率会有一个明确目标规模化接入后集中式求解100辆车的多目标优化模型在算力上没问题但如果是几十万辆甚至上百万辆车接入集中式NSGA-II的求解规模和通信压力就完全不可行了。我个人的观察是到时候需要走分层分区调度的路线上层电网调度中心下传净负荷目标曲线下层聚合商利用类似三目标模型的思路对各自车群做分布式求解车群之间通过一致性协议达到全局协同。每个聚合商管理几百辆到几千辆车求解规模适中也方便处理用户隐私数据——聚合商只需要上报总充放电功率能力边界不需要上报每辆车的具体SOC和行为模式。这个方向我在项目预研里做了一些初步测试把100辆车扩展成分3个聚合商管理每辆车归属一个聚合商聚合商之间用交替方向乘子法ADMM协调净功率目标算出来的整体负荷曲线集中式方案只偏差了不到5%但单次求解时间从80秒降到了15秒以内。如果未来真到了百万辆车级别的V2G时代大规模分布式调度架构几乎是唯一可行的技术路线。再说回这个项目本身。从最初无序充电曲线的难看到三目标模型跑出峰谷差下降32.6%的结果中间其实反复迭代了很多版。模型本身不复杂真正花时间的反而是那些不在论文里写的细节电池损耗参数怎么标定、用户参与率怎么建模、预测误差怎么处理。这些细节决定了策略在真实场景里是纸面好看还是实际好用。如果你也要做类似的三目标充放电调度我的建议是先别急着上复杂算法把目标函数里的每一项都跟实际业务方对清楚确认每个指标都能算明白、能解释清楚再去调算法优化这样项目推进会顺很多。后面有机会我再把分布式调度架构的实验细节单独整理一篇。
返回列表