ARTICLE DETAIL

资讯详情

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

多能互补系统优化调度:变工况特性与柔性负荷建模实战

多能互补系统优化调度:变工况特性与柔性负荷建模实战 1. 为什么要把变工况特性和柔性负荷放进同一个调度模型1.1 忽略变工况特性模型和现场就会两张皮做多能互补系统优化调度的人很多都踩过同一个坑模型里算得好好的最优方案拿到实际运行中一对成本对不上、出力也对不上。问题往往出在一个基础假设上——把设备的效率当成一个固定不变的数。现实中的燃气轮机、内燃机、余热锅炉、电制冷机没有一台是额定效率永动机。以燃气轮机为例额定工况下效率可能到32%但负荷率掉到50%时效率可能只有26%左右相差6个百分点。这种差距反映到燃料成本上就是实打实的钱。如果调度模型里只用额定效率做优化算法就会倾向于让机组长时间停留在低负荷区间因为它算出来低负荷很划算。但实际上低负荷的单位发电燃料消耗高得吓人最后运行成本比仿真结果高出8%到12%是很常见的事。我最早做园区CCHP系统调度时就吃过这个亏。当时模型里给燃气轮机设了一个固定效率优化结果建议白天电价高时让燃机满发、晚上电价低时压到30%负荷运行。结果第一个月实际燃料费比仿真预估多了将近一成查来查去根源就是变工况效率没进模型。从那以后我所有调度模型里设备特性一律按变工况处理再也没犯过同样的错。1.2 负荷柔性是一把被浪费的调节扳手另一个常见误区是把负荷当成刚性的。传统的优化调度里电负荷、热负荷都被处理成一组固定数值序列——给定多少就是多少调度只能被动适应。但现实中大量负荷天生就有柔性空调和冰蓄冷系统制冷时段可以平移蓄冷槽就是天然的储能工业烘干、电解、搅拌这类可中断负荷短时间降载10%到20%对产品质量影响很小电动汽车充电负荷只要用户愿意晚充一两个小时完全没问题楼宇采暖依靠建筑热惯性室内温度在舒适区间内小幅浮动用户根本感知不到。把这些柔性负荷纳入优化模型相当于给调度器多了一把扳手。电价高峰时段、设备出力受限时段压一压柔性负荷新能源出力大的时段把一部分负荷搬过来消纳。很多项目算下来成本节省不是来自某个设备效率提升而是来自这种全局层面的削峰填谷。柔性负荷参与调度本质上就是把需求侧的调节能力作为一种虚拟机组放进优化问题跟供给侧的设备一起竞争最优出力分配。所以这个课题的出发点很明确变工况特性让设备的真实成本暴露出来柔性负荷给调度增加自由度。两者同时放进模型优化结果才经得起现场检验才有工程落地价值。下面我把整个建模和求解的过程完整拆开讲。2. 调度模型的数学化表达目标函数、变工况与柔性负荷2.1 目标函数运行成本最小到底在算哪些钱多能互补系统优化调度的目标函数通俗讲就是把一个调度周期内通常是24小时所有花钱的地方加起来求一个最小值。但运行成本这四个字展开来包含的项目比你想象的多。我在实际建模时目标函数一般写成下面几项之和购电成本从电网买电的费用按分时电价计算高峰时段电价可能是低谷的3到4倍这一项往往占大头燃料成本天然气、生物质、柴油等燃料的消耗费用跟设备出力直接相关设备启停成本燃机、锅炉每次启动都有额外的燃料消耗和寿命损耗优化时不考虑启停成本结果会非常抖设备频繁启停现场根本没法执行运行维护成本与设备出力水平相关的维护费用一般按出力比例折算柔性负荷调节补偿成本调用用户侧柔性负荷不是免费的要给用户激励比如每削减1千瓦时补偿多少钱弃风弃光惩罚成本如果有新能源如果模型允许弃风弃光就要设一个惩罚项避免优化算法为了省钱而故意弃掉本来可用的清洁电力。数学上可以写成min C Σ_t [ C_elec(t) C_fuel(t) C_start(t) C_om(t) C_flex(t) C_curtail(t) ]其中 t 是调度时段序号每个时段内的各项成本分别累加。这里有个经验目标函数各项的量纲和权重一定要检查。我见过有的项目里购电成本是万元级别柔性负荷补偿是几十块钱级别结果优化算法根本不会去动柔性负荷因为省下的电费远不够补偿成本。这不是模型错了而是参数设置没做好。合理的方式是根据实际项目的电价、气价和补偿标准把各项成本放在同一数量级上比较柔性负荷才有机会被调用。2.2 设备变工况特性的三种建模手法把变工况特性写进数学模型主流做法有三种我分别说清楚原理和适用场景。第一种是效率曲线拟合法。把设备的效率写成负荷率的函数比如 η a·PLR² b·PLR c其中 PLR 是部分负荷率。这个二次函数可以用设备厂家提供的性能曲线拟合出来也可以用现场实测数据回归。优点是简单直观缺点是二次函数直接进混合整数线性规划MILP会比较麻烦需要做分段线性化处理。第二种是输入-输出特性法。不直接建模效率而是拟合燃料输入与电/热输出的关系。比如燃气轮机的燃料消耗 F 与发电功率 P 之间的关系可以近似为 F α·P β其中 β 代表空载燃料消耗。这个方法的好处是天然反映了低负荷效率差的物理特性因为空载也要烧燃料。用这个方法建模优化算法会自动倾向于避开低负荷运行点效果比效率曲线更贴近实际。第三种是可行域法。主要针对热电联产CHP机组。因为CHP机组的电出力与热出力之间存在耦合关系不是随便一个电出力配一个热出力都行而是有一个可运行区域。这个区域通常用多边形来表示例如以电出力为横轴、热出力为纵轴几个顶点围成的区域就是可行域。把机组约束写成运行点必须在多边形内用一组线性不等式就能表达非常干净。我在实际项目里最常用的是第二种加第三种组合燃气轮机用输入-输出特性法CHP机组加可行域约束余热锅炉和电锅炉用效率曲线拟合法。这套组合在精度和求解效率之间比较平衡模型规模不至于失控。2.3 分段线性化把非线性变成MILP能吃的饲料上面说到效率曲线是二次函数但主流求解器处理非线性问题很吃力尤其是混合整数非线性规划MINLP求解时间会指数级上升。工程上通用的做法是分段线性化Piecewise Linearization。具体操作是把负荷率区间从0到100%分成3到5段每一段用一条直线近似效率曲线。比如0到30%是一段斜率较低的线30%到60%是一段较陡的线60%到100%是一段接近水平的线。每一段引入一个二进制变量表示设备当前运行在哪一段再加一组约束保证衔接点连续。这样做的好处有两个一是模型变成MILPGurobi、CPLEX这类求解器处理起来非常快二是分段本身就携带了物理信息——一旦设备进入低负荷段算法会看见效率低、成本高自然倾向于避开。我在实操中习惯分3段就够了分太多段会显著增加二进制变量数量求解时间成倍上涨但精度提升有限。对大多数工程场景3段分段线性化的误差完全可接受。2.4 负荷柔性调整的建模三类柔性负荷的区别与约束柔性负荷建模是另一个重点。我在项目里把柔性负荷分成三类它们的数学模型完全不同。第一类是可平移负荷。比如某工厂的消毒工序一批工件必须连续处理2小时但在这2小时可以安排在凌晨也可以安排在上午。建模时用一个时间窗约束启动时间必须在某个区间内持续时长固定。数学上需要二进制变量表示启动时刻一旦启动就必须连续运行指定时长。这类负荷的灵活性最强只要时间窗够宽对调度帮助很大。第二类是可削减负荷。比如照明、空调在高峰时段可以降载运行。建模时设定削减量上限比如每小时最多削减额定负荷的20%同时削减要产生补偿成本。约束相对简单实际负荷等于基准负荷减去削减量削减量在0到上限之间目标函数里加上补偿成本项即可。第三类是可转移负荷。典型代表是冰蓄冷空调。一天的总制冷需求基本不变但制冰时段可以自由安排白天用冰融化的冷量供冷晚上电价低时再制冰。建模约束的关键是能量守恒一天内各时段用电量之和等于基准总用电量但各时段的分配可以调整。这类负荷用一组等式约束就能表达。三类负荷建模时有一个共同注意事项柔性负荷的边界条件要和实际协议对齐。比如可削减负荷用户合同里写的削减量上限是20%模型里就不能设成30%否则优化结果好看执行时用户不买账。3. 约束条件与调度框架热平衡、电平衡和储能环节怎么处理3.1 电、热、冷三种能量平衡的硬约束多能互补系统之所以叫互补就是因为存在电能、热能、冷能多种能量形式的转换和耦合。调度模型必须保证每一个调度时段内各种能量都满足供需平衡。电平衡约束是所有设备出力之和加上电网购电、新能源出力、储能放电等于电负荷加上电锅炉等电转热设备的耗电量。热平衡约束是余热回收、燃气锅炉、电锅炉产热之和加上储热罐放热等于热负荷。冷平衡约束类似制冷机产冷量加上蓄冷槽放冷等于冷负荷。如果系统里还有氢能、生物质能就再加对应的平衡约束。这些约束看起来简单但实操中要注意能量的品位问题。余热锅炉产出的低品位热和燃气锅炉产出的高温热虽然都算热但品质不同能否满足用户侧的用热需求需要单独核查。我在项目里会额外加一组约束限制低品位热只能用于采暖类负荷不能用于需要高温的工业蒸汽负荷。这个细节不加模型会把所有热混在一起优化结果在工程上可能是不可行的。3.2 储能设备的时序耦合约束不能只看单时段储能是调度模型里最麻烦的设备因为它的当前状态和历史状态相关。储电量 E(t) 满足递推方程E(t) E(t-1) η_ch·P_ch(t) - P_dis(t)/η_dis其中η_ch和η_dis分别是充电和放电效率。还要加储电量上下限、充放电功率上限、以及不能同时充放电的逻辑约束。不能同时充放电通常用Big-M法处理引入二进制变量当充电时放电功率强制为0反之亦然。这里有个容易被忽略的坑储能设备的调度结果必须回到同一个起点。如果一个调度周期是24小时储能的最终电量应该和初始电量一致否则就是在变相透支储能能力今天的调度计划明天就没法执行了。我在约束里会显式加上 E(T) E(0)对于实际项目运营方也要求储能保持周期性的电量回归否则长期运行会出现储能耗尽或充满的极端状态。3.3 可运行域与爬坡约束设备不能在两个极端点之间瞬移除了稳态特性设备还有运行动态约束。燃气轮机、余热锅炉都有爬坡率限制出力不能瞬间从30%升到100%。约束形式为 |P(t) - P(t-1)| ≤ Ramp·Δt其中 Ramp 是爬坡速率。还有最小启停时间约束机组一旦启动至少要运行一定小时数一旦停机也要等一段时间才能重新启动。这些约束用二进制变量配合计数器逻辑来表达。我早期做调度时忽略过这个约束优化结果里机组一会满发一会停机相邻时段出力跳变剧烈拿给运行人员看直接被否了——现场机组根本经不起这么频繁的折腾。加上最小启停时间和爬坡约束后调度结果才变得可执行。3.4 柔性负荷与多能互补的耦合联动柔性负荷不只是电负荷侧的概念它同样适用于热负荷和冷负荷。比如楼宇采暖室内温度允许在22到24摄氏度之间浮动这就是典型的热负荷柔性等价于一个虚拟储热罐。用建筑热惯性的等效热容模型来描述室内温度随时间变化供热功率可以适当推迟或提前。把电、热、冷三种柔性负荷同时纳入调度多能互补系统的调节灵活性会显著提升。新能源出力大的时段让电负荷侧多用电热负荷上有余热的时段让热负荷多用余热冷负荷由蓄冷槽供给把电制冷的高峰负荷挪开。这种多能互补源荷互动的耦合优化是整个课题的核心价值所在。4. 求解方法与工具选型从MILP到工程落地的关键决策4.1 模型规模评估先算算你的问题有多大求解方法的选择首先取决于模型规模。一个典型的园区级多能互补系统调度模型假设24小时调度、时间间隔1小时包含5台设备、2套储能、3类柔性负荷那么决策变量大约是几百到一千个其中二进制变量可能占三成。这样的规模用MILP求解器轻松应对。但如果场景升级为多园区协同调度或者时间粒度细化到15分钟决策变量可能达到几千甚至上万个约束条件同步膨胀。这时候就要有策略了能线性化的尽量线性化能松弛的约束尽量松弛先跑一个简化版本验证模型逻辑再逐步加约束看求解时间变化。我个人的判断标准是先用MILP跑如果求解时间超过10到20分钟还没收敛或者模型始终达不到可接受的Gap比如小于1%再考虑启发式算法。很多初学者一上来就上遗传算法、粒子群算法觉得智能优化更高级实际上对于可以用MILP精确建模的问题商业求解器在速度和最优性上完胜启发式。4.2 求解器与建模工具的选择商业求解器里我用得最多的是Gurobi其次是CPLEX。两者对MILP的支持都非常成熟求解速度、数值稳定性都没得说。Gurobi在许可证政策上对学术用户比较友好CPLEX在传统工业界存量很大。如果你的问题是纯线性规划LP或者没有二进制变量的二次规划开源求解器CBC、GLPK也能胜任。还有一个选择是用Python建模配合Pyomo或PuLP这类优化建模库。Pyomo的优势是建模灵活、语法接近数学表达方便快速原型验证Gurobi自带的Python API写起来更直接适合正式生产代码。我通常的做法是前期用Pyomo搭模型验证逻辑后期用Gurobi的Python API重构优化性能虽然工作量多一些但便于维护和扩展。关于启发式算法遗传、粒子群、模拟退火等我的态度非常明确只有在模型非线性程度极高、无法有效线性化或者求解规模实在超出精确求解能力时才用。而且使用启发式算法必须配合约束处理机制比如罚函数法把不可行解推回可行域。我见过不少项目用遗传算法算出来一个最优解但细看储能约束已经违反、负荷平衡差了5%这种结果拿去工程现场完全不能用。4.3 线性化技巧与Big-M法的实战细节分段线性化的实操细节前面讲过这里补充Big-M法的两个关键经验。第一M值不能取太大。Big-M的本质是用一个大数M把逻辑约束转化为线性不等式。如果M取1e6数值求解时容易出现病态解的质量差甚至无解。原则是M取值比实际变量的最大可能值稍大即可。比如设备出力上限是5MWM取10就足够。第二逻辑约束的方向要反复检查。比如充电时不能放电写成 P_dis ≤ M·(1 - y_ch)当y_ch1正在充电时P_dis被压到0。这个约束写反了会导致模型允许同时充放电储能系统凭空创造能量优化结果严重失真。4.4 MPC滚动优化从离线调度走向实时控制上面讨论的都是离线优化调度即给定一整天的预测数据一次性求出全天调度方案。但实际运行中光伏出力预测、负荷预测都不可能完全准确离线方案执行到后半段往往已经偏离实际。工程上更稳的做法是模型预测控制MPC框架每15分钟或1小时滚动一次优化窗口每次只优化未来4到8小时执行第一个时段的调度指令然后根据最新实测数据更新预测滚动前移。这样做的本质是把一次性决策改造成边走边看的闭环控制。我在实际项目中把MPC和离线调度配合使用效果很好。离线调度算出的全天基准方案用于安排大设备启停计划MPC滚动优化则负责微调各设备的出力水平和柔性负荷调用量。这种分层架构兼顾了全局最优性和实时鲁棒性。5. 实战案例某园区多能互补系统优化调度的完整流程5.1 系统概况与参数设置拿我做过的一个真实园区项目来说明。系统构成如下1台2MW燃气轮机配套余热锅炉回收烟气余热2台电锅炉总容量2.5MW作为补充热源1台0.8MW光伏电站500kWh磷酸铁锂储能电池充放电功率250kW300m³蓄热罐最大储热容量约6MWh负荷侧园区办公楼的电负荷峰值约3.2MW热负荷峰值约1.8MW其中有20%的可平移负荷和15%的可削减负荷。电价采用一般工商业分时电价高峰10:00-15:0018:00-21:001.1元/kWh平段0.68元/kWh低谷23:00-7:000.36元/kWh。天然气价格2.8元/Nm³燃气轮机发电效率额定32%部分负荷效率按输入-输出特性法建模。5.2 三种方案的结果对比为了验证变工况柔性负荷的价值我做了三组对比实验方案A设备用额定效率建模负荷全部刚性。方案B设备考虑变工况特性负荷仍然刚性。方案C设备考虑变工况特性同时考虑20%可平移负荷和15%可削减负荷。调度结果非常能说明问题。方案A的单日运行成本是3.12万元方案B是2.86万元方案C是2.51万元。方案B比方案A节省8.3%方案C比方案A节省19.6%。为什么方案B就能节省8%因为变工况特性让优化算法看清了低负荷率的真实成本自动把燃气轮机的大部分运行时段安排在高效率区间同时把低谷电价时段安排给电锅炉供热而不是让燃机在低负荷硬扛。方案C进一步节省11%是因为在电价高峰时段模型主动削减了15%的可削减负荷、平移了部分可平移负荷到低谷时段相当于把高峰期的用电需求搬到了便宜的时间段。5.3 储能与柔性负荷的协同效果方案C里还有个有趣的细节储能电池和柔性负荷形成了很好的协同。白天光伏出力高峰时段11:00到14:00模型安排储能充电、同时把部分可平移负荷比如换电站的充电任务移到这个时段最大化消纳光伏。到了电价高峰时段储能放电、柔性负荷削减减少从电网购电。储能的日循环次数控制在1.2次左右没有过度充放兼顾了电池寿命。蓄热罐则利用夜间低谷电价蓄热、白天高峰时段放热配合电锅炉一起满足热负荷进一步压低了购电成本。这个协同效果是只优化供给侧设备出力、不调动负荷侧灵活性时很难实现的。5.4 实际执行中的偏差与修正仿真优化结果很好但实际部署时还是遇到了偏差。最大的问题是柔性负荷的实际响应率不如模型假设的理想。可平移负荷还好电蓄热、充电桩这类自动化程度高、协议清晰的负荷基本能按时执行。但可削减负荷涉及人的行为办公室里有人觉得温度高了不舒服手动把空调调回去实际削减率只有模型假设的一半左右。后来我在模型里对可削减负荷加了一个兑现率系数假设实际响应只有理论值的70%在约束里直接打折。虽然优化结果看起来保守了一些但实际运行成本更接近预期。这个经验我觉得很值得分享调度模型不要贪心把柔性负荷的响应率设得过于乐观最终执行偏差会让你吃亏。6. 常见问题速查表与实操经验6.1 典型问题与排查思路我在多个项目的建模、求解和部署过程中积累了不少排查问题的经验整理成一张速查表供参考。问题现象可能原因排查思路与解决方案模型无解infeasible约束冲突比如最小出力大于负荷需求先松弛所有硬约束逐个检查哪组约束导致不可行常见是储能的初始电量与周期回归约束冲突求解时间过长二进制变量太多、Big-M取值过大减少分段数检查M值是否取太大尝试设定Gap阈值提前终止调度结果频繁启停机组没有加最小启停时间约束增加最小运行/停机时间约束用二进制变量配合状态自锁逻辑实际运行成本远超仿真设备变工况特性未建模或参数失真核查设备部分负荷效率曲线用实测数据重新拟合参数柔性负荷调用率过低补偿成本设置偏高负荷侧调节不划算调整补偿成本参数使其与峰谷电价差匹配或增加柔性负荷的容量占比储能凭空发电充放电同时进行的逻辑约束错误检查Big-M约束方向确保同一时段不能同时充电和放电新能源消纳率异常弃风弃光惩罚成本设置过低提高惩罚成本确保高于调度新能源的边际成本6.2 几个值得注意的实操细节细节一时间粒度不要想当然。大多数项目用1小时时间间隔就够了但某些场景必须细化到15分钟。比如有快速响应的电储能、需求响应要求30分钟内完成的柔性负荷1小时间隔根本表达不了。但时间粒度细化会让模型规模翻倍求解时间大幅增加。我的做法是先用1小时跑通模型验证逻辑后再按需细化。细节二热网延迟和损耗不要默认忽略。如果园区供热管网较长热水从热源到用户端有传输延迟热负荷的时序匹配就不能简单按同一时段处理。管道散热损失的存在使得产热量必须大于用户热负荷差值就是管道损耗系数。不建模这些因素热平衡约束会假平衡实际运行中用户端温度达不到要求。细节三预测不确定性要有兜底。无论是光伏出力预测还是负荷预测误差都不可避免。我不建议在基础调度模型里直接上随机优化或鲁棒优化那会让模型复杂度上升一个量级更务实的做法是离线调度用确定性模型跑基准方案然后在执行层用MPC滚动修正把预测误差实时消化掉。这套组合对工程项目的性价比最高。细节四数据接口和参数标定是最大工作量。很多做算法的人低估了数据这块的工程量。设备效率曲线参数需要厂家提供或现场实测电价曲线需要结合最新电价政策负荷预测需要历史数据支撑。模型再漂亮喂进去的参数不准出来的结果就是空中楼阁。我每个项目的参数标定环节至少占整个工期的三分之一这还不包括现场采集设备的数据质量清洗。6.3 关于模型复杂度的经验法则最后聊一个经常被问到的问题调度模型做到多复杂才够用我的判断标准是可解释性与可执行性优先。模型过于复杂优化结果很难向运行人员解释现场执行更是一头雾水。模型过于简单又会漏掉关键物理特性。中间的平衡点就是抓住设备的变工况特性和负荷柔性这两个最影响经济性的因素把能量平衡、储能约束、爬坡约束这些物理底线守好其余细节能省则省。我在实际中体会最深的一点是调度系统最终是给人用的不是给论文用的。再先进的理论最终要落地到运行人员的操作界面。模型输出要能给出明确的哪个时段开哪台机组、负荷侧怎么调整的操作指令同时让运行人员理解为什么这么安排。如果优化结果好看但现场执行不了那它就是一个好看的数字游戏而已。调度模型的价值不在于算法多高级、约束多全面而在于能不能真实反映系统运行规律、能不能被现场执行、能不能持续带来成本节省。从变工况特性到柔性负荷调整每一步建模都是在缩小模型世界和物理世界之间的鸿沟。沿着这个方向做扎实多能互补系统的优化调度才能真正从仿真报告走向控制室的调度大屏。
返回列表