ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

风光柴储多目标联合调度:从数学建模到工程落地全解析

风光柴储多目标联合调度:从数学建模到工程落地全解析 “风光柴储多目标联合调度”这个话题在微电网或离网电源圈子里但凡干过两年以上一看就懂这是给风、光、柴、储四种不同脾气的电源做“联合排班”既要省钱、又要减排、还要保证不拉闸。别小看这四个字的组合——风机出力看天光伏出力看太阳柴油机想开就开但烧油心疼储能能充能放但电池寿命有限四者放到同一个系统里协同运行本质上就是一个带着约束的多目标优化难题。这篇文章我会把问题拆开讲透从数学建模、目标设计、求解方法到实际调度中的坑一条条捋清楚尤其适合刚入门的微电网工程师和做新能源调度的研究生。1. 问题拆解风光柴储联合调度到底在解决什么1.1 四种电源的“性格”决定了问题难度很多人第一次接触风光柴储调度时以为就是“有太阳用光有风用风不够了烧油还差就放电”。逻辑没错真正落地的时候会发现每个电源都有自己的脾气。风电最大的特征是波动性和反调峰性。白天用电高峰时风速往往不大到了夜间风速反而上升。我实测过不少风电数据15分钟级出力波动经常超过20%而且这种波动是近乎随机的很难提前精确预判。光伏则完全相反出力曲线基本跟着日照走每天中午最高、夜间为零但最怕云层快速移动——一片云过来五分钟之内出力能掉一半。这两个可再生能源电源虽然天然存在互补白天光伏强、夜间风电强但它们的“互补”只是统计意义上的无法当作确定性的调度依据。柴油发电机组属于可控电源理论上可以随时调节但它有两个关键的物理限制一是最小技术出力通常不能低于额定功率的30%40%低了燃烧不稳定排温下降积碳严重二是启停代价每一次启动都有油耗和机械磨损而且不允许频繁启停——你不可能让柴油机像开关灯一样隔几分钟就启停一次。储能系统是这四者里最灵活的“缓冲垫”能充能放响应速度在毫秒级。但储能也不是万能的SOC有上下限充放电功率有上限循环寿命有限深度充放一次就有一次损耗。从调度经济性看储能每一次动作都该折算成成本而不是当作“免费”的调节资源。把这四种电源放在一张时间表里统一排班就是风光柴储联合调度。难点在于它们各自的约束条件交织在一起目标又互相打架这是一个典型的多约束、多目标、带整数变量柴油机启停的组合优化问题。1.2 多目标冲突的本质是资源分配多目标联合调度里有几个核心目标最常见的三个是经济性最优、环保性最优、可靠性最优。这三者并不是关系友好的三兄弟而是经常互相拆台的竞争者。经济性目标希望运行成本最低核心是少烧油、减少柴油机运行小时数。环保性目标希望碳排放最低本质上也是希望风光出力最大化、柴油机越少开越好。看起来这两个目标方向一致但经济和环保并不完全绑定——如果单纯为了省钱可以让柴油机在适合的高效区长时间运行尽量减少启停次数如果单纯为了环保可以让柴油机在低负载下“点补丁式”运行填补新能源缺口启停次数增加总油耗未必高但经济性一定会变差。可靠性目标则让问题更复杂。风光出力不可控要做到不拉闸、不失负荷就必须留有足够的备用容量。这意味着要么柴油机保持在线要么储能保持高电量待命。无论哪种都会和“让风光多发点电、让储能多吞吐”的环保目标产生冲突。用大白话说你的风光资源越丰裕调度方案里越容易省钱省排放但系统可靠性就越依赖储能和柴油机。可调度资源越紧张可靠性与经济环保的矛盾就越尖锐。这个矛盾本质上就是不确定性与确定性之间的资源分配博弈。1.3 这类问题出现在哪些真实场景这类调度问题最常见的落地场景有几类偏远海岛独立微电网、山区边防站点、应急供电系统、工矿企业的孤立电网以及部分以可再生能源为主的并网型微电网。以海岛系统为例柴油机组通常持续运行因为船舶运输燃料成本高、油价波动大运维队伍上岛又麻烦。很多岛上的微电网改造前调度几乎靠老师傅“拍脑袋”——看天气、看经验、看负荷曲线手动决定柴油机何时开、储能何时充放。改造为风光柴储联合调度后系统可以在天气好的时候让柴油机停掉用储能和风光保障供电天气差的时候再提前启动柴油机压缩燃料消耗。这类系统的规模并不一定很大几兆瓦以内居多但麻雀虽小五脏俱全。它涉及到预测、优化、实时控制、设备保护等多个环节是一个极具工程综合性的小微系统。对工程技术人员来说把这类问题吃透再去做大电网的新能源消纳调度方法论是完全打通的。2. 核心建模思路目标函数与约束条件的取舍2.1 目标函数怎么写从需求倒推调度问题的建模起点不是数学公式而是业务需求。首先要分清你做的是日前调度、日内滚动还实时调度这决定了时间分辨率和决策变量粒度。最常用的经济性目标函数是分钟级运行成本最小化表达式大致为总成本 柴油机燃料成本 柴油机启停成本 各设备运维成本 储能损耗折算成本燃料成本可以用油耗曲线拟合。柴油发电机组的油耗并非线性而是分区间变化的低负载区间油耗率明显偏高。工程上常用二次曲线或分段线性函数来描述油耗与出力之间的关系然后用发电功率乘以油耗率再乘以油价换算成燃料成本。碳排放目标就是把柴油发电量乘以碳排放因子。常规柴油机每发1kWh电的CO2排放量约为0.80.85 kg具体数值取决于机组效率和负载率不同厂家差异不大工程计算直接用这个常数即可。可靠性目标处理方式有两种一种是把失负荷概率LPSP建模为软约束再以罚函数形式放进目标函数另一种是把可靠性作为硬约束要求全天失负荷电量不超过某个阈值。如果是做研究建议先把LPSP量化出来再考虑是用罚函数还是硬约束。需要特别提醒多目标线性加权是常见的简化方式但三个目标的量纲完全不同。成本是元排放是kg可靠性是百分比直接加权毫无意义。必须先各自归一化到01之间再乘以权重。归一化基准通常取各单目标优化下的最优值——也就是经济单目标跑出来的最低成本作为成本目标的归一化分母以此类推。2.2 约束条件里最能看出水平目标函数定得再精细约束条件建得不到位整个模型依然废掉。我审过不少方案很多问题都出在约束写得不够全面。功率平衡约束是第一个必须满足的等式约束风电出力加光伏出力加柴油机出力加储能放电功率等于负荷功率加储能充电功率。这个约束看起来简单但很多人忘了把损耗加进去——线路损耗、变流器损耗在离网系统中通常按负荷的3%5%估算。然后是各设备自身的上下限约束。柴油机除了功率上下限还必须加上最小运行时间和最小停机时间约束。这两条约束很关键少了它们求解器会给出“柴油机每隔15分钟启停一次”的荒谬方案因为从数学上看频繁启停能精确跟踪负荷但实际上机组根本受不了。储能约束要注意SOC边界和功率边界。SOC一般限制在0.20.9之间避免过放保护触发。充放电功率受PCS容量限制这个比较容易理解。容易遗漏的是调度周期末SOC的回归约束——如果只做24小时调度且对末时刻SOC无约束模型会把储能电量“白嫖”到最低点第二天根本没有电可用。正确的做法是让调度周期的SOC末值等于初始值或者考虑跨周期衔接。备用容量约束也容易被遗漏。系统必须保有一定的旋转备用以便在风光骤降或负荷突增时维持频率。对于离网系统这个备用通常由柴油机和储能共同承担建议预留当天最大负荷的10%15%作为备用容量。2.3 调度时间尺度未必只有一个实际工程中风光柴储联合调度很少只做一个时间尺度因为预测误差随着时间尺度缩小而显著减小。常用的架构是两层日前计划按1小时分辨率滚动优化决定柴油机启停计划、储能各时段的充放电计划、可再生能源的预测出力基准。这里面的决策变量包含0-1整数变量柴油机开还是停和连续变量各设备出力这就是混合整数规划问题。日内修正按15分钟或5分钟分辨率执行基于最新的超短期预测数据和实际运行状态对日前计划进行修正。日内修正最常用的是模型预测控制MPC思路每个周期向前滚动预测一段时域求解有限时域优化问题只执行第一步然后滚动推进。做研究时只做单尺度还说得过去做工程落地时单尺度基本不可用。我曾经在一个项目中只用日前的1小时分辨率调度结果夜间风电骤增时段调度计划完全跟不上储能SOC被打穿。后来改成15分钟滚动修正问题就解决了。误差不是均匀分布的风光变化最剧烈的时段恰恰是调度最困难的时段多时间尺度协作比任何高深算法都管用。3. 求解方法论从数学规划到智能算法3.1 混合整数线性规划是工程首选对于离网微电网的规模风光柴储联合调度问题用混合整数线性规划MILP求解通常最可靠、效率也最高。柴油机的启停用0-1整数变量表示各设备出力用连续变量表示约束条件线性化后交给成熟的商业求解器或开源求解器处理几分钟内就能找到全局最优解。MILP最大的好处是确定性和可复现性。同一份数据和同一组约束求解结果百分之百一致这在工程验收和调度审计中非常关键。智能算法跑十遍可能有十个不同的结果谁去签字负责所以现场调度我首选MILP。难点在于目标函数中的非线性项必须线性化。比如柴油机油耗曲线是二次曲线可以分段线性化作近似处理储能寿命损耗与充放电深度关系也是非线性的可以用线性递减模型或分段近似。这些线性化处理不会带来太大的精度损失却能换来稳定的可解性。对于非线性的目标函数或约束还有一个思路是采用混合整数非线性规划MINLP但求解难度大工程实践中除非必要一般不用。能线性化的尽量线性化这是做调度建模的铁律。3.2 多目标处理的三种主流套路多目标调度问题怎么处理取决于最终要什么形态的决策结果。线性加权法最简单把归一化后的三个目标乘以权重再加总。坏处是非凸Pareto前沿上权重法的解可能漏掉中间的折中区域且权重选择主观性强。对工程实践来说通常够用因为调度员本来就希望得到一个明确的优化结果。权重怎么定可以参考运营方偏好燃料成本高就放大经济权重环保考核严就放大环保权重。ε-约束法是另一种常用方法把最关心的目标保留为目标函数其余目标作为约束上界。比如把运行成本作为目标函数碳排放不得超过某个阈值LPSP不得超过0.001。这种方法能得到更丰富的Pareto前沿也便于和业主讨论“减排多少对应增加多少成本”的边际关系。多目标智能优化算法如NSGA-II、MOPSO则是追求一次运行得到一整条Pareto前沿。优点是可视性好能看到三个目标互相制约的全貌。缺点同样明显参数敏感、结果不稳定、计算耗时在大规模工程问题中可能无法保证每次都能收敛。我的建议是方案论证阶段用NSGA-II把Pareto前沿画出来和决策层讨论工程落地阶段用MILP把最优决策固定下来。算法本身不是目的可解释、可执行、可复核才是调度方案的生命线。3.3 智能算法的适用边界和调参经验很多初学的人喜欢一上来就NSGA-II以为用了进化算法就“高级”了。但智能算法在真实调度场景中有明显的适用边界。如果你的系统规模很小比如3个以内柴油机、几十个决策变量MILP完全可以解决根本不需要进化算法。如果你的系统规模非常庞大比如几十台分布式机组MILP可能求解时间过长这时候启发式智能算法才显示出优势。但请记住要用大规模邻域搜索、问题分解等手段配合而不是“裸跑”遗传算法。如果确实要用NSGA-II做研究给你几个我实测的参数参考种群规模在50100之间交叉概率0.80.9变异概率0.050.1最大迭代次数200500。变异概率别太小小了容易早熟收敛到某一目标极端区域。同一组数据建议用多个随机种子重复跑810次观察Pareto前沿的稳定性。如果每次跑出来的前沿差异巨大说明约束条件可能设置有误或者目标函数归一化做得不对。还有一种现代趋势是用深度强化学习DRL做在线调度把调度问题建模为马尔可夫决策过程训练一个策略网络根据当前状态直接输出调度动作。这个方向适合动态环境下的实时决策尤其是预测误差大、需要快速响应的场景。但工程上对训练数据的真实性要求极高虚拟环境与现场设备特性偏差会导致“训练时天下无敌、上线时一塌糊涂”我目前只在预研项目中探索过真正敢拍板上线的项目还很少见。4. 实操案例一个小型离网微电网的调度赛马4.1 一个典型的离网系统参数设定为让整个建模和求解过程更直观我搭建一个典型的离网型海岛微电网算例。系统包含风电额定800 kW光伏额定2000 kW柴油机组单台1200 kW储能1000 kW / 2000 kWh峰值负荷1500 kW日用电量约16 MWh电价和成本参数按实际工程经验取值柴油价格按6.5元/升估算柴油机发电油耗率取0.21 L/kWh对应约1.37元/kWh的燃料成本换算成0.55元左右再叠加运维实际可按0.6元/kWh计入柴油机运维成本0.05元/kWhCO2排放因子0.85 kg/kWh。风电运维成本0.03元/kWh光伏运维成本0.02元/kWh储能寿命损耗按每充放1 kWh折算0.12元成本。这些数字看起来琐碎但它们直接决定调度结果的风向。比如储能寿命损耗如果按0.12元/kWh计入比风电运维成本高4倍那么调度模型就会倾向于少用储能。如果储能损耗参数设置得过低模型会让储能疯狂充放表面上风光利用率提升了实际上电池寿命损耗带来的隐性成本被无视了。4.2 三种权重下的调度结果对比我分别测试了三组目标权重观察调度行为的差异方案A“纯经济倾向”经济权重0.7环保0.2可靠0.1。归一化后目标函数给出结果柴油机全天开机约14小时负荷高峰和低谷都靠柴油机托底储能只做浅充浅放。风力光伏尽量消纳但无须追求极致。结果日均运行成本约14800元碳排放约8900 kgLPSP接近于0。方案B“纯环保倾向”环保权重0.8经济0.1可靠0.1。结果让柴油机只在傍晚负荷高峰开后半夜停机储能一天深度循环超过2.5次风电光伏满发追踪。成本上涨到17500元碳排放降至约3200 kg但因为储能SOC在下午已跌到下限夜间风电骤降时出现了约0.004的失负荷概率相当于一天之内有几分钟供电缺口。方案C“三方平衡”经济0.4环保0.3可靠0.3。柴油机启停两次——中午光伏大发时停掉傍晚负荷爬坡前再启凌晨风电大发时储能充电蓄能白天储能配合放电压峰。最终成本约15600元碳排放约5600 kgLPSP小于0.001。三者都不是最优但实现了可接受的折中。这是最典型的“多目标赛马”演示权重改变调度行为截然不同。方案B看起来最环保却牺牲了可靠性方案A成本低但排放高只有当约束条件完备、权重设置符合运营需求时调度结果才是真正能落地的。4.3 日前调度与滚动修正的配合上述结果属于日前调度计划。为了提升执行效果我按15分钟时间窗口做日内滚动修正。具体做法是以日前计划作为参考轨迹每15分钟根据最新的风电超短期预测、光伏实时出力和负荷实测数据进行一次窗口长度为4小时16个步点的优化。修正时只把第一步的指令下发到PCS和柴油机控制器下一个周期再滚动计算。举一个典型波动案例某日12:30云层遮光光伏出力从1.6 MW在10分钟内掉到0.9 MW。日前计划中该时段光伏预测出力为1.4 MW如果不做滚动修正系统会有接近500 kW的缺口。滚动修正检测到偏差后立即在下一个周期增加储能放电和柴油机补出力同时削减非关键负荷。整个过程持续约十分钟系统频率控制在49.850.2 Hz之间。滚动修正的另一大好处是能处理柴油机启停延迟。柴油机从收到启动指令到并网输出额定功率通常需要13分钟因此滚动窗口必须把启停决策的“提前量”考虑进来。我的经验是日前计划就预判好启停窗口日内滚动只在原计划基础上做小幅修正而不是推倒重来。推倒重来会导致柴油机频繁启动产生大量不必要油耗。5. 常见问题与排查技巧实录5.1 量纲不一致和目标无法比较的问题这是新手最容易掉进去的坑。成本、排放、可靠性三个目标量纲完全不同直接加权做优化权重实际是在充当量纲转换系数而非真正的偏好系数。举例成本8000元、排放6000 kg各归一化后才能在同一个量纲下比较。如果不归一化成本目标天然会被排放目标“淹没”或反过来。归一化的分母取单目标最优值之外另一个工程上稳妥的做法是取一个固定的盈亏平衡基准比如把成本基准设为“全年纯柴油供电总成本”排放基准设为“等于风光出力为零时的总排放”这样基准物理意义清晰不会随着单目标优化结果漂移。5.2 SOC初值与末值约束缺失做单日起始调度时如果不设定储能SOC初值和末值的关联模型会在凌晨把储能放干以便全天成本最低。这解决了“今天”却毁掉了“明天”。正确的做法是把储能SOC的历史衔接纳入模型或者直接加约束要求末时SOC等于初值。工程上还有一种处理方式是让初值由“上一日滚动修正最后一个时段的状态”决定这才是真正意义上的连续调度。注意SOC约束别只设上下限。如果不考虑循环次数和DOD惩罚储能会被当成大容量电池任性使用。寿命损耗折算进目标函数或者能耗成本之后调度方案才更贴近电池的实际运营方式。5.3 柴油机启停和最小运行小时被忽略不少模型里柴油机只有简单的出力上下限约束没有最小运行时间约束结果优化方案会出现柴油机每半小时启停一次的情况。从数学模型看这是合理可行的但在物理现场根本不可能执行——频繁启停会大幅增加维修成本和停机风险。解决方法是给每台柴油机增加“最小开机时间”和“最小停机时间”约束通常工程值为24小时。同时还要考虑启动过程对备用容量影响柴油机启动瞬间并网会造成冲击需要在目标函数中加入启停惩罚项或约束条件对启动次数上限做限制。5.4 算法早熟与结果不稳定如果选择智能算法求解最让人头疼的就是结果不稳定。我从实践中总结几个排查顺序第一看种群多样性和交叉变异参数变异概率太低容易早熟建议先提高到0.1试跑一遍。第二看目标函数是否“陷阱过多”。如果Pareto前沿大部分区域全是非可行解说明约束条件过于苛刻需要放宽部分约束或增加松弛变量。第三用多随机种子重复实验。如果不同种子跑出的结果差异超过5%优先怀疑归一化和目标方向出了问题。我曾经遇到一次智能算法结果“完美”但完全异常——后来发现是碳排放目标的方向写反了模型在帮系统“多排碳”。这种事在调试中真的会发生别高看自己该做单元测试就做单元测试。5.5 数据颗粒度和预测误差带来伪最优风光资源数据是调度模型的“原料”。有人在建模时用平均风速来近似风电出力这就相当于用“全年平均温度”设计空调——在工程上就是胡闹。风电出力是有强非线性的切入风速3 m/s切除风速25 m/s额定风速一般在1012 m/s。风速从9涨到11 m/s出力可能翻倍。必须用15分钟或更细颗粒度的时序风速数据再通过实际机组的功率曲线转换成功率序列。光伏出力还要考虑温度系数和组件衰减虽然光照是主变量但温度升高会让组件效率下降。预测误差不可避免手段是滚动修正和场景分析。我建议至少做三组调度场景预测场景、乐观场景、悲观场景对比调度方案的鲁棒性。悲观场景下如果系统还能满足功率平衡和备用约束这个方案才算“站得住”。写在最后的一些体会把风光柴储多目标联合调度问题走完一整套流程之后我最深的感受是这个问题的瓶颈通常不是算法而是建模的准确度和约束的完备度。花了大量时间调NSGA-II的参数不如花半小时去核算柴油机的油耗曲线是否准确、储能的SOC会不会实现跨日衔接、预测数据是不是真实反映当地的风光资源特征。另一个让我反复强调的点是多目标调度没有绝对最优解。所谓“最优”是在特定成本、政策、运维条件下各方妥协出来的一个可执行方案。研究阶段可以把Pareto前沿画得很漂亮工程上必须拍板选择一组权重或一组优先级把多目标问题变成可以执行的单目标问题这是学术走向工程必须跨越的一道坎。最后分享一个我自己的小习惯每次做调度方案之前先跑一遍纯柴油机供电的基准场景当作“底线”再跑一遍风光新能源满发、储能最大限度参与的“理想场景”。两条线一夹调度方案的改善空间和改进方向就很清楚了。多目标调度的价值本质上就是在底线与理想之间找到一条真实可以走的路。
返回列表