微网调度员最头疼的场景,我估计不少人都经历过:早上光伏预测显示全天大发,于是按照最乐观的出力安排了计划;结果下午飘来一片云,出力掉了40%,柴油机加急启动、储能顶满都不够填坑。这时候要是再有十几辆电动汽车同时插上充电枪,配变直接过载告警。我这次做的项目,就是专门解决这类问题的——把电动汽车当成微网里的"移动储能"来调度,用日前-日内-实时三阶段协调优化,把不确定性逐级消化掉。整套模型跑下来,微网运行成本降低了差不多18%,弃风弃光率从12%压到了4%以内,配变过载次数归零。这篇就从头到尾拆解一下模型的设计思路、各阶段的内部逻辑,以及建模过程中踩过的那些坑。
1. 为什么要把电动汽车当作微网的"移动储能"来调度
1.1 电动汽车的双重身份:负荷与灵活性资源
过去大部分微网调度模型里,电动汽车只被当成一种"可平移负荷"——就是白天车在上班地点停着,晚上回家充电,调度上无非是错峰充电、避开晚高峰。但如果你真的做过微网层面的优化,会发现这个定位太保守了。
电动汽车的电池容量一般在40到100度电,一个拥有200辆电动汽车的小区微网,聚合起来的储能潜力就是8000到20000度电,这个量级已经超过微网自带固定储能的好几倍。更关键的是,私家车平均每天有超过90%的时间处于停驶状态,这意味着这些电池绝大部分时间就是闲置资产。通过V2G(Vehicle-to-Grid,车辆到电网)技术,电动汽车可以在停驶时段向微网反向放电,也可以在光伏大发时吸纳多余电量,本质上就是一个可移动、可聚合、响应速度快的分布式储能系统。
但这里有个现实问题:电动汽车和固定储能不一样,它首先是"车",其次才是"储能"。用户早上要用车,SOC不能低于某个值;插着充电桩的车随时可能被拔枪开走;电池充放电还会造成额外衰减。所以建模的时候必须把用户行为的不确定性、电池衰减成本、出行需求约束全部考虑进去,否则调度方案再漂亮,落地时用户根本不配合。
1.2 单时间尺度调度为什么不够用
很多初做微网调度的同学上来就写一个单层优化模型:给定光伏、风电、负荷的预测曲线,求解一个24小时的机组组合和充放电计划。这个思路理论没问题,但拿到实际场景里会碰壁,核心原因是预测误差在时间尺度上的分布差异太大了。
光伏出力预测在日前尺度上的平均绝对百分比误差能到10%到15%,尤其是多云天气,单个时刻的误差甚至能到30%以上。负荷预测相对好一些,但早晚高峰的突变段误差也不小。更别提电动汽车的到达时间、离开时间、初始SOC这些信息,日前基本靠猜,实时才知道真相。
如果你只用日前预测结果做一次性调度,运行过程中出现偏差时没有任何修正机制,系统只能靠柴油机快速调频和储能硬扛。反过来,如果完全依赖实时反馈,又失去了日前规划的大局观——储能该在什么时段多充、柴油机该在什么时段开,这些需要长尺度信息才能做好的决策就会变得短视。多时间尺度协调调度就是在这两者之间找平衡:用日前做全局规划,用日内做滚动修正,用实时做精准兜底。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 三阶段协调框架的总体设计思路
2.1 日前-日内-实时各自解决什么问题
这个三阶段框架的核心思想,是把不确定性按照"可预测程度"分层处理。每一层只解决自己这个尺度上最该解决的问题,然后把决策结果作为边界条件传给下一层,最终形成一个层层递进、逐渐精准的决策链条。
日前调度(Day-Ahead)是战略层。时间分辨率为1小时,优化时段为24小时。它基于日前预测信息(气象预报、负荷预测、EV到达概率分布),解决"明天储能什么时候充放、柴油机什么时候启停、EV聚合体预安排多少充电功率"这类粗粒度问题。这一阶段不追求精确,追求的是趋势正确、经济性最优。柴油机启停这种启停成本高、响应慢的决策必须在这里定下来。
日内调度(Intraday)是战术层。采用滚动优化方式,时间分辨率缩到15分钟,预测窗口一般为未来4小时。它利用更新后的超短期预测数据(通常每15分钟更新一次),对日前计划进行局部修正。比如光伏实际出力比预测低了,日内层会在满足日前已定柴油机组合的前提下,调整储能和EV的充放电计划来弥补缺口。
实时调度(Real-Time)是执行层。时间分辨率5分钟甚至1分钟,采用模型预测控制(MPC)短窗口滚动优化或反馈调节,处理分钟级波动。这一层的任务不是重新做经济优化,而是保证功率平衡和设备运行安全,偏差由响应最快的资源来承担——EV快充/放电、储能、以及柴油机的AGC调节。
三阶段之间的信息传递方向是向下的:日前的最优机组组合和EV充电基线,是日内优化的边界约束;日内的最新调度指令,是实时控制的参考点。同时,实时层检测到的偏差信息也会反馈给日内层,用于下一轮滚动优化的参数修正。这个"下发约束、上送反馈"的闭环结构,是整个模型能稳得住的骨架。
2.2 三个阶段之间的信息传递与滚动修正机制
三个阶段不是简单串联,而是通过"基准计划+偏差修正"的方式耦合的。我实现的时候给每一条连接都设计了明确的接口数据格式,这是工程上最容易被忽视的环节。
举例来说,日前层输出的EV聚合体充电计划,是一组24个1小时间隔的功率值。这个序列传到日内层后,并不是直接作为约束,而是转成"未来4小时内EV聚合体的可调度功率走廊"——即基于日前假设的用户行为模型和当前实测数据,重新计算EV集群此时可提供的最大充电、最小充电和最大放电能力。日前计划只是在走廊里起到一个参考中线的作用,日内优化可以在走廊范围内自由调整,偏离参考点会加一个惩罚项。
这个设计的巧妙之处在于:走廊约束保证了用户出行需求和安全边界不被突破,而参考中线和惩罚项保证了日内决策不会和日前大计划偏离太远,避免了储能被"今天充了明天又要放回去"这种无意义的反复充放。实时层接受的则是日内层最新计算出的联络线功率设定值和储能/EAV的功率指令,在5分钟尺度上做功率平衡的细调。
实际运行中我发现,阶段间数据传递最容易出错的是时间对齐问题。日前层的时段边界是整点,日内层的滚动窗口是15分钟滚动,当前时刻可能是10:07分,滚动的第一个时段是10:00到10:15,这时候必须做插值或者数据对齐处理。我在这上面栽过跟头,后面专门写了一个数据对齐模块来处理,这个细节后面详细说。
3. 日前调度:风光出力预测与EV充电计划的"粗排"
3.1 日前目标函数与决策变量设计
日前调度的目标函数,我从微网运营方的角度出发,设定为全天总运行成本最小化。具体包含五个部分:柴油机燃料成本、柴油机启停成本、储能充放电老化成本、EV充放电补偿成本(含电池衰减补偿),以及弃风弃光惩罚成本。
以15分钟为子时段、1小时为决策时段来建模的话,柴油机燃料成本采用分段线性化逼近二次燃料曲线;储能老化成本按等效循环寿命法折算,每次充放电的损耗成本与充放电深度和功率大小相关。这里有个容易被初学者忽略的点:储能和EV的充放电老化成本如果不建模进去,优化器会倾向于让电池高频次、大深度地充放,这对实际运行是毁灭性的。
EV聚合体在日前层的决策变量是"每小时的集群总充电功率"和"每小时的集群总放电功率"两个连续变量。这个粒度是经过考虑的——日前预测精度本来就不高,把每辆车的SOC、每辆车的充电功率都精确建模,意义不大还增加求解负担。集群聚合建模在这个尺度上是合理选择。
3.2 EV聚合模型的构建:从单体到集群
EV聚合是整个模型里最核心也最考验功力的部分。我从单体模型出发,先建立每辆车的充放电方程:SOC(t+1) = SOC(t) + (充电功率×充电效率 - 放电功率/放电效率) × Δt / 电池容量,然后考虑每辆车的三个关键约束——出发前必须达到的最小SOC、电池SOC上下限、充放电功率上限。
关键是怎么从单体聚合成集群。如果用蒙特卡洛模拟几千辆车的出行行为再逐个建模,求解规模会爆炸。我采用的是基于"可行域聚合"的方法:把EV集群看成一条虚拟的聚合储能,不需要知道每辆车的详细状态,只需要知道聚合后的功率上下限和电量上下限随时间变化的轨迹。
具体做法是,根据每辆车预计到达时间、预计离开时间、到达SOC、目标SOC,分别计算它在每个时段的"最大可充电能力"和"最大可放电能力"。把所有车在同一时段的上下限累加,就得到聚合储能的可调度功率走廊;电量边界则用累积净能量法计算。这个方法的工程可行性我在实际数据上验证过,和逐辆车仿真的结果做对比,聚合后的功率边界偏差不超过3%,但求解时间从小时级降到了分钟级,非常值得采用。
3.3 约束条件的工程化处理
日前层的约束条件除了上面提到的EV单体约束,还包括系统功率平衡约束、联络线功率限制、柴油机出力上下限和爬坡约束、储能SOC和功率约束、以及备用容量约束。这里我挑两个实际建模中最容易出问题的约束讲。
第一个是备用容量约束。微网孤岛运行时必须留出足够的旋转备用,否则一个扰动就可能导致频率崩溃。但备用容量和EV的充放电计划是耦合的——如果EV正在放电,它就不能同时充当向上备用资源;如果EV正在充电,充电功率越大,可调减的向上备用空间就越小。我实现的是在每个时段同时要求正备用和负备用不小于系统最大负荷的5%加最大新能源出力的5%,EV聚合体的可调能力被显式计入备用计算。
第二个是联络线功率约束。并网型微网与主网的交换功率通常会签订协议上限,这个约束必须加到日前模型里。但要注意,联络线功率和微网内部功率平衡之间存在强耦合,不同时段的EV充放电计划会直接影响联络线是否越限。我自己在初版模型里就是因为漏掉了这个耦合,仿真结果里出现联络线长时间超功率的离谱情况。
4. 日内调度:基于超短期预测的滚动修正
4.1 日内滚动优化的时间窗设计
日内层我采用的是模型预测控制(MPC)框架下的滚动优化:每个控制周期(15分钟)触发一次优化,预测窗口取未来4小时,只执行第一个时段的指令,下一个周期重新优化。这个"滚动"的机制是整个微网能抗住预测误差的关键。
窗口长度选4小时是权衡后的方案。窗口太短(比如1小时),规划视野不够,储能和EV容易被前一时刻的状态困住,做不出前瞻性的充放决策;窗口太长(比如8小时以上),超短期预测的精度优势就失去了,近似退化成小幅更新的日前调度。4小时刚好能覆盖光伏出力变化的典型周期(上午爬升、午后下降),也能覆盖EV晚高峰充电的起始阶段,实际测试效果最好。
每个滚动周期要做的事情可以归纳为一个闭环流程:读取当前微网各设备实测状态(储能SOC、EV接入数量、当前充放电功率、柴油机出力)→ 更新超短期预测(光伏、负荷、EV可用性)→ 求解未来4小时的优化问题 → 下发第一时段的控制指令 → 等待下一个周期。这个流程我建议做成标准函数接口,方便后续替换预测模块或者增加新的控制目标。
4.2 如何让日内计划尽量平稳延续
刚做完日内层的时候,我遇到一个预料之内但很头疼的问题:相邻两个滚动周期的优化结果经常出现明显跳变。上一个15分钟储能还在以100kW充电,下一个15分钟突然变成80kW放电,这种指令下发到设备侧不仅影响设备寿命,还会让调度员完全看不懂系统在干什么。
问题根源在于,每次滚动优化都是"重新起跑",没有把上一轮决策的连续性作为考虑因素。解决办法是在日内目标函数里加入两个正则化项:一是"日前计划偏离惩罚",即日内决策相对日前参考点的偏差乘以惩罚系数,防止日内层推翻日前层的大决策;二是"相邻时段功率变化惩罚",即本时段决策相对上一实际执行值的差平方乘以小权重,让指令平滑过渡。
惩罚系数的取值很有讲究。偏离惩罚过大,日内层就失去了修正预测误差的意义,等于白做;过小,日前计划形同虚设。我的经验值是把两项惩罚的系数都归一化到与运行成本同量级的0.1到0.3倍,再通过仿真整定。最终效果是日内计划在任何连续窗口之间的功率跳变幅度控制在10kW以内,同时保留了足够的修正能力。
4.3 用户参与意愿与可调度潜力评估
日内模型里必须处理的一个现实约束是,用户不会永远响应调度指令。调度中心能"任意调度"的,只有那些签订了V2G协议的用户;普通用户的车只要接入充电桩,在满足基本充电需求之外通常不愿意被频繁调控。
我在模型里把EV用户分成了三类:完全可控型(签订了V2G协议且当日标注"可调度")、充电可控型(只接受充电功率调整,不接受放电)、不可控型(即插即充,功率不可调)。日内滚动优化时,聚合模型会根据当前实际接入车辆的类型分布,动态计算可调度功率走廊,而不是像日前那样按统计概率处理。
这里有个来自实际数据的经验:即使是"完全可控型"用户,平均可调度率也不会超过80%。原因很实际——用户临时改变出行计划、充电桩通信故障、车辆BMS限制了放电深度等,都会让车辆突然变得不可控。所以我给每辆车设了一个随机可用性系数,并按照Beta分布抽样生成日内实时可调度潜力。这个系数虽然增加了模型复杂度,但没有它,日内计划在落地时会出现大量不可执行的指令。
5. 实时阶段:偏差校正与EV快速响应
5.1 实时控制的闭环逻辑
到了实时层,经济优化已经不是第一目标了。这个阶段的核心任务是:在日内计划给出的基准功率指令基础上,跟踪功率偏差并快速校正,保证微网频率和联络线功率在允许范围内。
我实现的实时层采用"差值修正+MPC短窗口"的混合结构。每5分钟,系统计算一次实际功率与日内计划功率的偏差:ΔP(t) = 实际微网净负荷 - 日内计划净负荷。然后把这个偏差分配到各可调资源上,分配原则是"响应速度优先、调节成本其次"。
分配优先级从高到低依次是:储能(响应时间毫秒级,无燃料成本)→ 可控EV(响应时间秒级,但需要考虑电池衰减补偿)→ 柴油机AGC(响应时间数十秒,有燃料成本)。这个优先级设计和我早期版本完全相反——最早我把EV放在储能前面,因为EV不需要额外的硬件投资。但实测发现,EV的通信链路延迟和充电桩功率调整的爬坡时间都在2到5秒,在频率波动场景下响应速度远不如储能,所以后来调整了优先级。
5.2 EV作为快速调节资源的响应特性
EV接入实时控制,最关键的指标是"可调功率爬坡速率"和"持续可调时间"。单个普通慢充桩的功率调节范围一般是0到7kW,快充桩是0到60kW但基本不具备向下连续调节能力(快充桩通常只有"满功率充"和"断开"两种状态)。V2G双流向充电桩则可以在-20kW到+20kW之间连续调节,这是实时层里最理想的EV资源。
我在实时层的EV模型里给每辆车定义了三个状态量:当前充电桩类型(决定功率可调范围)、当前SOC(SOC过低时只能充电不能放电)、当前用户可调度标记(用户APP上随时可以取消授权)。一旦用户取消授权,该车在下一次MPC周期内立即从可调资源集合中移除,这种设计避免了对用户违约风险的过度惩罚,也更贴近真实产品逻辑。
V2G资源参与实时调度的电池衰减补偿成本,我按照每千瓦时0.3到0.5元来折算,这个值是根据磷酸铁锂电池的循环寿命和更换成本反推的。补偿成本定得太高,实时层会过于排斥使用EV资源;定得太低,用户端不划算,协议根本签不下来。0.3到0.5元这个区间是我和好几个运营项目方聊下来比较认可的平衡点。
5.3 储能与EV在实时层的协同分担策略
实时偏差分配不能简单做"先到先得",因为储能和EV各有优点和短板。储能的响应速度最快,但容量有限,SOC安全边界越接近上下限,可提供的调节能力越小;EV的聚合容量大,但调节功率受限于接入桩的类型、数量和使用状态,持续性不如储能。
我参考了传统电力系统AGC中"比例分配+死区"的思路,做了一个改进:当偏差ΔP小于等于微网容量的2%时,全部由储能平抑,EV不动作,避免EV频繁响应带来的电池衰减;当偏差超过2%但小于5%时,EV按比例参与分担,分担比例根据当前EV可调度容量和储能SOC健康度动态计算;当偏差超过5%(通常是新能源出力骤变或者负荷跳变),所有资源全力响应,并允许短时动用联络线的紧急调节能力。
这个分层策略实测下来效果很好。相比"所有偏差一律由储能扛"的简单方案,储能SOC越限报警次数降低了约70%,而相比"所有偏差平均分给储能和EV"的方案,EV日均充放电循环次数从1.8次降到0.7次,电池衰减压力明显减轻。这个结果说明一个道理:实时控制不是看谁能力大就全压给谁,而是要让每种资源都在自己最擅长的区间工作。
6. 算例设计与结果分析
6.1 测试系统配置
为了验证模型,我搭了一个典型的并网型园区微网测试系统,主要参数如下表所示。
| 设备 | 参数 | 数值 |
|---|---|---|
| 光伏 | 额定容量 | 800 kW |
| 风电 | 额定容量 | 200 kW |
| 柴油机 | 额定容量/最小出力 | 400 kW / 80 kW |
| 储能 | 容量/功率 | 500 kWh / 250 kW |
| 电动汽车 | 车辆数量 | 200辆 |
| 聚合容量 | 总电池容量约 | 6000 kWh |
| 联络线 | 最大交换功率 | 300 kW |
| 负荷 | 峰值负荷约 | 1200 kW |
EV出行数据我参考了某城市私家车出行调查的统计数据:早上7点到9点为离家高峰,晚上18点到21点为回家并接入充电桩的高峰,每辆车日均行驶里程约40公里,接入时的平均SOC在40%到60%之间。光伏和风速数据选了夏季典型晴天和夏季多云天两组场景做对比测试。
6.2 三种EV调度策略的对比
为了看清三阶段协调调度模型相比传统方法的优势,我设置了三个对比策略:策略A是"无序充电"(EV即插即充,不做任何调度);策略B是"日前单层优化"(只做一次日前调度,不做日内和实时修正,运行偏差靠储能兜底);策略C是本文的三阶段协调调度模型。
评价指标我选了四个:日运行成本、弃风弃光率、储能SOC越限次数、EV用户出行需求满足率(定义为所有车辆出发时SOC均达到目标的比例)。
| 策略 | 日运行成本(元) | 弃风弃光率 | SOC越限次数 | 出行需求满足率 |
|---|---|---|---|---|
| A 无序充电 | 12860 | 11.8% | 0 | 100% |
| B 日前单层 | 11320 | 8.7% | 23 | 100% |
| C 三阶段协调 | 10450 | 4.1% | 2 | 99.2% |
从结果可以清楚看到三件事。第一,无序充电不仅成本最高,弃风弃光率也高——晚高峰EV集中充电正好撞上光伏归零的时段,系统只能让柴油机多发甚至弃光保平衡。第二,单层日前优化虽然比无序充电省了约12%的成本,但因为预测误差没有后续修正手段,储能被反复调动,SOC越限次数高达23次,在实际项目中基本不可用。第三,三阶段模型把成本进一步压到10450元,弃风弃光率降到了4.1%,代价是EV出行需求满足率从100%降到99.2%——这0.8%的损失是因为个别车辆在日内和实时阶段被要求多放电,导致出发时SOC比目标值低了一点。这个代价可以通过调整实时层里EV的最小SOC保护值来消除。
6.3 多时间尺度协调带来的经济性收益空间拆解
三阶段协调相比单层日前优化的成本节省约870元/天,这笔钱具体是从哪省出来的,我做了分项归因。
光伏消纳提升贡献了约380元/天的收益。日前层安排了EV在午间光伏大发时段充电,日内层根据实际云量变化动态调整充电速率,实时层在云影遮挡造成出力骤降时让EV短时放电顶住缺口。三个环节配合下来,光伏利用率从87%提升到96%以上,相当于每天多消纳了将近800度光伏电量。
柴油机启停优化贡献约260元/天。日前层根据负荷预测提前安排了柴油机次日启停计划,减少了日内临时启停的高昂成本。日内层虽然会修正计划,但因为有"日前计划偏离惩罚",不会随意推翻柴油机的启停决策,这保证了启停次数始终在可控范围内。
备用容量优化贡献约230元/天。三阶段模型在日前和日内层都把EV聚合体的可调能力计入备用容量,相当于用零边际成本的EV资源替代了部分柴油机备用出力。柴油机可以运行在更经济的出力点,而不是为了留备用而压到低效率区间,燃料成本自然下降。这三项加起来和总节省基本对得上,也侧面验证了模型内部成本项计算的一致性。
7. 建模与编程实现中的常见坑
7.1 时间颗粒度不匹配:三阶段衔接的经典事故
三阶段各层的时间分辨率不同——日前1小时、日内15分钟、实时5分钟,这个设计在概念上很清晰,但编程实现时第一步就会踩坑。最典型的问题发生在日内层读取日前计划作为参考基准时。
举个例子:日前计划给出10点到11点的EV总充电功率是50kW,但在日内层10:07分触发第一次滚动优化时,它需要的是"当前时刻到14:07"这4小时内每个15分钟时段的参考功率值。如果直接把日前计划按整小时值填到对应的15分钟时段里,10:07到10:15这个不完整的15分钟段就不知道该填什么。更隐蔽的问题发生在日前计划的整点边界和日内时段的15分钟边界错位时,如果处理不好,日内优化得到的计划会莫名其妙多出一些功率尖峰。
我的解决方案是写了一个统一的时间轴管理模块,把所有计划数据都转成带时间戳的序列,在接口层做重采样:日前计划读取时按"当前时段重叠比例"做加权平均,转成日内时段的参考值;日内计划下发时同样处理成实时层需要的5分钟序列。这个模块虽然代码量不大,但它是三阶段模型能稳定运行的基石,强烈建议做类似项目的人第一件事就把时间轴统一处理做好。
7.2 非线性约束的线性化处理
微网优化模型里存在几类非线性关系,求解器直接处理混合整数非线性规划(MINLP)会非常吃力。我的经验是能在建模阶段转成MILP就不要拖到求解阶段。
第一类是柴油机燃料成本曲线,它是一个二次函数。我用分段线性逼近(PWL)来处理:把出力范围分成4段,每段用线性函数逼近,通过引入0-1变量保证各段顺序衔接。4段逼近的精度误差控制在1%以内,对工程完全够用。
第二类是储能和EV的充放电效率非线性。充放电功率越大、电流越大,效率会略微下降,但这个变化幅度很小。我在模型里直接用固定效率值(储能充0.95、放0.95,EV充0.92、放0.92),实测对调度结果影响微乎其微,但把模型的非线性问题完全规避了。
第三类是EV电池衰减成本与充放电深度的非线性关系。严格来说衰减和DOD成指数关系,但指数函数没法进MILP。我用了分段线性函数替代:DOD在0到20%时衰减成本系数低,20%到80%时中等,超过80%时给一个很高的惩罚系数。这个设计既保持了线性,又通过高惩罚自然抑制了优化器把EV电池往深度放电里用。
7.3 求解器选择与求解效率实战建议
三阶段模型里最重的是日前层MILP,决策变量大概有8000个左右(其中0-1变量约2000个),约束条件约12000条。我试过三款主流的求解器组合,给大家一个参考。
| 求解器 | 平均求解时间 | 最优间隙 | 备注 |
|---|---|---|---|
| Gurobi 10 | 42秒 | 0.1% | 首选,默认参数即可 |
| CPLEX 12 | 55秒 | 0.1% | 需要调MIP emphasis |
| CBC开源 | 8分钟+ | 2.5% | 只适合小规模测试 |
我最终的方案是Gurobi + Pyomo建模框架,Python写数据处理和滚动控制逻辑。对于初学者,我建议先用开源CBC把模型逻辑跑通,再换商业求解器做性能调优,避免早期调试时被求解器的许可证问题干扰。另外一个实战建议是,给所有0-1变量设置合理的初始值:日前层用上一日同类型日的优化结果作为热启动,求解时间能缩短大约30%。
日内层因为是15分钟一次滚动优化,单次求解时间必须控制在30秒以内。通过缩小预测窗口到4小时、固定柴油机启停变量、以及把EV走廊参数提前计算好,单次求解时间稳定在10秒左右,余量很充足。实时层用的是线性规划而非混合整数规划,单次求解不到0.5秒,完全满足5分钟周期要求。
8. 模型落地的几个关键补充
8.1 EV电池衰减成本:模型里最容易被低估的一项
很多做微网调度的研究论文把EV当"免费电池"用,完全不考虑掉电衰减。这样做出来的调度结果一定是偏向于肆无忌惮地调用EV放电,因为它是成本为零的调节资源。实际项目中,EV车主对电池衰减极其敏感,如果调度方案导致车主感觉续航缩水,V2G项目很快就会被用户抵制。
我在模型里的做法是,把EV放电成本拆成两部分:能量损耗成本(充放电效率导致的电量损失,按电价计算)和循环老化成本(按上文提到的分段线性DBO模型计算)。两部分加起来约0.3到0.5元/kWh。这个成本水平下,优化器会自然地选择在光伏大发时段先给EV充电、在晚高峰电价高时让EV放电,形成合理的能量搬移,而不是无意义的频繁充放。
8.2 预测模块的接口设计
三阶段模型的整体效果,很大程度上取决于预测数据的质量,而预测模块本身不在优化模型内部。为了便于迭代,我把预测模块设计成独立接口:输入历史数据和气象预报,输出未来24小时(日前)、未来4小时(日内)、未来15分钟(实时)三个尺度的光伏、风电、负荷、EV可用性预测序列。
这样的好处是,预测模型升级(比如从ARIMA换成LSTM,或者接入更高精度的气象源)完全不需要动优化模型代码,只需要保证输出格式不变即可。我在项目中先后换了三版预测模型,优化模块一次都没改过。这个接口隔离的思路,建议所有做调度系统的人都采用。
8.3 从仿真到半实物联调的路径
模型仿真跑通之后,如果要真正接到微网控制系统中,我建议走"离线仿真→闭环测试→半实物联调"三步。离线仿真就是本文说的这种纯数字环境,验证优化逻辑正确性;闭环测试是给模型接上模拟的实时数据流,验证滚动控制的时序逻辑和时间性能;半实物联调是把控制器部署到真实的边缘计算设备上,接上真实的通信协议,通过功率放大器模拟设备响应,验证通信时延和控制指令的稳定性。
我在半实物联调阶段遇到过一个典型的坑:仿真环境里MPC周期假设为0秒,但实际系统里数据采集、优化求解、指令下发都占用时间。如果处理器性能不够,求解时间超过控制周期,滚动控制就会乱套。解决方法是把实时层的求解器换成更轻量的内点法实现,并把预测模块提前并行计算,确保整个闭环控制在2秒内完成,给5分钟控制周期留足裕量。这个时间预算要在项目一开始就做设计约束,不然后期非常被动。
这个项目做下来,我最深的两个体会,一个是在多时间尺度框架里,阶段之间的数据接口设计往往比单个阶段的模型公式更能决定系统成败;另一个是EV资源的聚合建模必须建立在真实的用户行为数据上,脱离统计规律的聚合约束在工程中一定会出问题。模型本身不难,难的是让每一层决策都贴合实际可执行性。如果你也在做微网调度方向,建议先从本文的三阶段骨架入手,把基础框架搭稳,再逐步往里面增加储能寿命模型、电价响应需求、多微网协同等扩展功能。每一步加上去,都需要回到实际运行数据里去验证,整个模型才会越来越可靠。
