节点边际电价(LMP,Locational Marginal Price)是电力现货市场出清的核心产物,每天96个时段、每个时段每个节点都有一串价格,看起来就是一张巨大的数字表格。刚开始接触的人很容易只看“均价”或者“最高价”,但真正判断市场有没有堵点、机组有没有被强制调整、结算费用为什么涨了,都得回到“全时段、分节点”的维度去扒。
这篇东西写给三类人:一是电力交易员或售电公司做价格分析的人,二是做市场仿真、算法研究的学生或工程师,三是刚入行想搞懂LMP原理的运营人员。我会用一套模拟算例,把“有阻塞”和“无阻塞”两种场景下的全时段出清结果拆开来看,重点讲清楚LMP由哪几部分构成、为什么阻塞会出现节点价差、全时段耦合约束怎么改变价格曲线,以及实际操作中怎么快速定位关键断面。
1. 节点边际电价到底怎么算出来的
要先理解“有无阻塞的区别有多大”,得先回到LMP的定义和计算过程。很多人对LMP的印象是“不同节点价格不同,因为电网有线路约束”,这话对,但不完整。节点边际电价的本质是:在该节点上额外增加1兆瓦负荷,系统重新优化调度后,总购电成本的变化量。这个“边际”不是某一台机组的报价,而是整个系统在满足安全约束条件下,重新优化的边际成本增量。
1.1 LMP的三层构成:能量、阻塞、损耗
业内常用公式把LMP拆成三个分量:
节点电价 = 能量分量 + 阻塞分量 + 损耗分量
- 能量分量:全网统一的基础能量价格,反映系统整体供需平衡的边际成本。
- 阻塞分量:由线路越限、断面受限等安全约束引起的价格修正项。这个分量可能为正也可能为负,具体取决于节点在阻塞断面的哪一侧。
- 损耗分量:考虑线路损耗后对节点电价的微调。实际系统中,损耗往往和能量分量合并或单独分摊,各国市场处理方式不同。
以上三个分量之所以能被分开,是因为优化问题的拉格朗日乘子(影子价格)天然对应不同约束:负荷平衡约束对应能量分量,线路潮流约束对应阻塞分量,节点功率平衡或损耗相关的约束对应损耗分量。
展开讲一个容易混乱的点:“阻塞分量”并不是线路潮流超过限额后“罚款”形成的价格,而是在优化模型里,线路潮流约束被激活后,经济调度被“绑架”,被迫改变发电组合,导致不同节点的边际发电成本出现差异。举例:某条500千伏线路送电容量已到限额,系统为了不越限,只能让受端的高价机组多发、送端的低价机组少发,那么受端节点因为要引入更贵的电源,价格抬升;送端节点呢?因为多出来的低价电送不过去,本地机组竞争变弱,价格也可能上升,也可能因为被压出力而出现负阻塞分量。这正是阻塞分析的魅力所在——不是简单地“贵的地方贵,便宜的地方便宜”。
1.2 为什么“有阻塞”和“无阻塞”的差异集中在阻塞分量
如果电网没有线路潮流约束,也没有断面限额,优化问题就退化为一个纯经济调度模型。此时任何节点增加负荷,系统都可以自由调动全网最便宜的机组,最终所有节点的LMP只有能量分量和损耗分量,节点间价差很小,基本取决于电网损耗差异。
而真实电网一定存在输电约束。当某条线路或某个输电断面达到传输极限,安全约束经济调度(SCED)就必须把潮流越限控制住。这时,“被阻塞”的送电侧节点和“缺电”的受电侧节点,会出现明显的价格分化。这个分化的大小,取决于阻塞断面的严重程度、两侧机组的报价梯度、以及跨时段爬坡能力等因素。
所以在实际分析中,我通常会先看各节点LMP的标准差和最大价差,再去看阻塞分量。如果全时段最大价差超过某个阈值(例如30元/兆瓦时),基本可以断定当天存在显著阻塞。如果只是整体价格水平上涨但节点间价差很小,那大概率是供需紧张导致能量分量抬升,跟阻塞无关。这个判断方法简单粗暴,但非常有效。
2. 出清模型与全时段耦合:单时段和96点还不一样
很多刚开始做市场分析的人会踩一个坑:把每一个时段单独拿出来算,每个时段都做一遍“无阻塞 vs 有阻塞”的对比。这种“静态切片”式的分析会丢失跨时段约束的影响,导致结论严重失真。
现货市场出清不是96个独立问题,而是96个时段耦合在一起的混合整数优化问题,也就是安全约束机组组合(SCUC)加安全约束经济调度(SCED)。
2.1 目标函数与约束:从经济调度到安全约束机组组合
出清模型的目标一般是:
最小化总购电成本 = 各机组运行费用(启动、空载、发电)+ 可能包含的负荷侧报价费用
约束条件包含:
- 负荷平衡约束:各时段全网发电总出力+购入电力=负荷+网损
- 机组出力上下限约束
- 爬坡约束:相邻时段出力允许的最大升降幅度
- 最小启停时间约束:机组开机后不能立刻停机、停机后不能立刻开机
- 线路潮流约束:每条线路/每个断面的潮流不能超过限额
- 备用约束:系统需要预留旋转备用
- 储能和新能源约束:如果市场包含储能、风电光伏等,还有SOC状态变量和预测出力约束
其中爬坡约束、最小启停时间约束、储能SOC约束,等都是把96个时段“串起来”的耦合约束。举个例子:某台火电机组在第30时段被调度满发,第31时段由于爬坡限制,不能立刻降到很低,只能以额定爬坡速率逐步降负荷,这就会影响后续时段的出清结果和节点价格。如果你只看单时段,根本无法捕捉这种“惯性”。
2.2 全时段分析为什么必须看跨时段约束
全时段分析的价值在于,它把时间上的前后关联摊开了看:
- 高价时段有可能是因为前一时段的爬坡约束导致高价机组不得不在当前时段多发。
- 阻塞程度不仅取决于本时段负荷和机组报价,还取决于上一时段机组出力基点。如果上一时段送端机组已经在最大出力,这一时段即便负荷不涨,也没有更多空间继续上调,阻塞情况可能加剧。
- 新能源反调峰场景下,午后光伏大发时段送端节点电价可能极低甚至负值,但到了晚高峰,靠爬坡约束硬爬上去的火电会让部分节点价格飙升。
所以,做“有无阻塞全时段分析”时,两个场景都必须采用完整的SCUC/SCED模型,并且用相同的机组报价、负荷曲线、网络拓扑,只改变“是否有线路限额”这一个变量,才能得到真正可对比的结论。
2.3 节点电价求解的数学本质:影子价格
LMP之所以能在出清结果里直接看到,是因为优化求解器(如国内的某些招标求解器,或开源求解器)会输出约束对应的对偶变量。在最优解处,负荷平衡约束的影子价格就是系统的能量边际价格,线路潮流约束的影子价格就是阻塞分量。
严格来说,混合整数优化(MIP)问题的最优解中,对偶变量并非总是唯一或稳定,因此实际市场出清会采用“固定整数变量,再求解线性规划”的两阶段方法来获取可靠的价格。这也是为什么出清规则里要对机组启停状态固定后再算价格。这一点在无阻塞和有阻塞场景都适用,但阻塞越严重,MIP整数解对不同价格变量的影响越明显。
在我的实践中,分析节点电价时一定要拿到出清软件的“分项结果”,而不仅仅是节点LMP汇总值。只有分项结果才能区分某节点涨价是全网能量价涨,还是局部阻塞引起的。否则分析报告会变成“哪里贵、哪里便宜”的流水账,用户看了也不知道该对哪个断面采取措施。
3. 有无阻塞的全时段结果怎么对比
光讲原理太抽象,我用一个模拟算例来说明。算例不涉及真实电网数据,是我根据常见市场结构拼出来的模拟项目X,目的是演示分析思路。
3.1 模拟场景设计(算例)
- 系统节点数:9个节点,简化成5个厂站节点、4个负荷节点
- 机组数:8台,包含2台大容量燃煤机组(报价较低但爬坡慢)、2台燃气机组(报价高但灵活)、2台风电场(出力曲线给定,报价接近0)、2台储能(SOC范围0-200兆瓦时)
- 时段数:96点(15分钟一个点)
- 线路数:12条,其中关键断面有2个:断面A(连接送端低价区和主网)、断面B(连接主网和受端高价区)
- 负荷曲线:典型夏季双峰曲线,早高峰10点-12点,晚高峰19点-21点
- 对比方案:
- 方案1(无阻塞):所有线路容量设为极大值,例如10000兆瓦
- 方案2(有阻塞):阻塞断面A限额350兆瓦,断面B限额280兆瓦
注意,两个方案都保留爬坡约束、最小启停时间约束、储能SOC约束,只改线路限额。这样才能把“阻塞”的作用单独剥离出来。
3.2 无阻塞情况:出清结果与电价特征
无阻塞场景下,系统像一个“铜板”电网,没有输电瓶颈,所有节点电价几乎一致。由于没有线路约束,所有发电机按报价高低统一排序,负荷高峰时段最后被调用的机组决定了系统能量边际价格。
模拟结果大致是:
- 96个时段的全网均价约为286元/兆瓦时。
- 各节点各时段的LMP非常接近,最大价差仅来自网损差异,约2-4元/兆瓦时。
- 早高峰和晚高峰时段价格抬升,主要由燃气机组边际报价决定,约520元/兆瓦时。
- 光伏大发时段(12点到15点)价格显著下跌,约120元/兆瓦时,甚至出现小幅负值模拟(对应主动弃风情况)。
- 储能策略清晰:在低价时段充电、高价时段放电,两个时段价差完全来自能量价格时变,不存在储能通过阻塞套利的空间。
这个场景的价值在于定义了一个“无阻塞基准价格曲线”。后面做任何阻塞影响评估,都拿这个基准来对比。没有这个基准,你无法判断阻塞到底影响的是哪一部分。
3.3 有阻塞情况:价格分化与再调度效应
有阻塞场景下,断面A和B的限额被激活,出清结果发生结构性变化:
- 送端区域(节点1、2)的低价燃煤机组无法把全部电力送出,导致断面A送端侧出现“窝电”现象,部分时段只能压减出力或关停。
- 受端区域(节点7、8、9)由于缺电,更多依赖本地燃气机组和高价储能放电,受端节点电价整体抬升。
- 典型晚高峰时段(第76时段,19:15),送端节点LMP约420元/兆瓦时,受端节点LMP约610元/兆瓦时,节点间价差接近190元/兆瓦时。
- 阻塞分量为正的点主要集中在受端,阻塞分量为负的点主要集中在送端,负阻塞分量意味着该节点机组因阻塞被压低报价,其“边际价值”低于全网能量价。
- 全时段最大LMP价差达到283元/兆瓦时,远远超过无阻塞场景的4元/兆瓦时。
再调度效应也很明显:无阻塞下,送端燃煤机组出力接近满发,受端燃气机组只在高峰时段开2台;有阻塞下,送端燃煤机组在多个时段被压到60%-70%出力,受端燃气机组启动次数增加,且部分时段连续运行多台。这意味着阻塞不仅改变电价,还改变机组启停计划和运行轨迹。
还有一个容易忽略的点:储能行为变了。无阻塞时储能是“低充高放”,但在有阻塞时,受端区域的储能更愿意在早高峰前放电、在午间充电,甚至在晚高峰来临前预留SOC,因为受端晚高峰电价抬升让储能套利价值增加。这种跨时段影响如果只看到价格表是发现不了的,必须看储能SOC时序曲线。
3.4 全时段指标汇总与对比表
我用下面这个表把两个方案的核心指标放在一起:
| 指标 | 无阻塞方案 | 有阻塞方案 | 差异解读 |
|---|---|---|---|
| 全网能量分量均价(元/兆瓦时) | 286 | 292 | 受端高价机组更多被调度,整体成本上升 |
| 最大节点间LMP价差(元/兆瓦时) | 4 | 283 | 阻塞导致送受端价格分化 |
| LMP标准差(元/兆瓦时) | 1.2 | 67.5 | 节点价格离散度大幅上升 |
| 关键断面A平均负载率 | 45% | 100% | 断面A长时间越限受限 |
| 燃气机组总发电量(兆瓦时) | 1320 | 2100 | 受端高价机组替换送端低价电量 |
| 燃煤机组总发电量(兆瓦时) | 5860 | 5120 | 送端低价机组被压减出力 |
| 节点LMP出现负阻塞分量的时段数 | 0 | 34 | 送端窝电频繁导致负价差 |
| 弃风电量(兆瓦时) | 120 | 340 | 阻塞限制了风电外送通道 |
这张表是我做阻塞分析时最喜欢用的“总览”形式。它有四个作用:一是快速量化阻塞对市场整体成本的影响;二是定位严重受阻时段;三是为输电阻塞管理提供依据;四是评估阻塞对新能源消纳的负面影响。
4. 实操中的坑与常用工具经验
以上分析思路,放到实际项目里跑的时候会遇到很多细节问题。有些问题是数据层面的,有些是模型层面的,有些是解释层面的。下面记录几个我在实操中反复遇到的坑和对应处理方式。
4.1 数据准备:预测负荷、机组参数、网络拓扑
做全时段分析,第一步是准备数据。很多人以为出清分析最麻烦的是求解器,其实不是,数据清洗才是最耗时的一环。
负荷曲线要注意时区对齐。某些系统提供的是15分钟间隔,某些是5分钟,还有一些是小时平均数据,需要统一插值到96点。机组参数中,爬坡率是最容易出错的指标——文档里给的可能是“每分钟多少兆瓦”,模型里要求的时间单位是“每小时多少兆瓦”,换算错一个单位,整个出清轨迹就会失真。
网络拓扑数据要特别注意“断面”而不是“单条线路”。一个阻塞断面可能包含多条并联线路、多条不同电压等级的线路,在模型里要把它们定义为聚合约束。若只看单条线路,可能单条都没越限,但总断面的潮流已经超过稳定限额。
实操建议:把数据准备拆成“机组表、负荷曲线表、网络表、约束表”四个模块,每个模块加一列“数据来源”和“更新时间”,避免版本混乱。我每次做分析之前都会跑一次“平衡性检查”,验证各节点功率平衡,否则后面所有价格结果都不可信。
4.2 如何快速定位阻塞关键断面
拿到全时段出清结果以后,如果LMP分化明显,下一步要找出“谁是元凶”。常用的手段是用灵敏度分析或“影子价格排名”:
- 查看每个时段每个线路约束的对偶变量绝对值。对偶变量大的线路/断面,说明它对价格影响最大。
- 绘制时段-断面负载率热力图,横轴是96个时段,纵轴是各断面,颜色是负载率。负载率长期接近100%的断面就是关键断面。
- 对比两种方案的机组出力差异。出力变化最大的机组往往位于阻塞断面的一侧,顺着这些机组的并网节点就能找到阻塞方向。
要注意,对偶变量是“局部边际”概念,不等于实际影响的钱数,但用来排名足够。实际工业界还会计算“输电断面价格对载荷水平的弹性”,但那是进阶内容,普通分析先用排名法即可。
4.3 常见问题与排查技巧实录
我在跑全时段分析时遇到过的典型问题,列出来供参考:
| 问题现象 | 可能原因 | 排查方向 |
|---|---|---|
| 同一节点96点电价全部相同 | 模型可能退化为无约束经济调度,检查线路限额是否未起作用 | 查看负载率是否远低于100% |
| 某时段LMP出现极端负值(如-500元/兆瓦时) | 机组报价下限为负、或储能SOC边界触发、或弃电惩罚设置不合理 | 检查该节点是否有负报价机组被调度,确认弃电成本和SOC边界 |
| 有阻塞场景总购电成本反而低于无阻塞 | 可能因为模型没有固定机组启停变量,整数解在两种方案下不同,导致成本对比失真 | 必须固定启停计划再计算阻塞租金,或对比同一启停方案的SCED结果 |
| 爬坡约束导致价格剧烈跳变 | 相邻时段机组出力受爬坡限制,边际机组切换 | 检查是否有更便宜的机组因爬坡无法跟上,考虑是否加斜坡报价 |
| 分析报告被质疑数据不对 | 可能因为把“交易关口计量点”和“物理节点”混用,LMP对象错了 | 先核对节点映射关系,再查价格 |
其中“启停计划不同导致成本对比失真”是我最常提醒同事的一个点。严格研究阻塞对出清成本的影响,应该采用“先固定机组组合,后对比经济调度”的方法,或者用相同的机组组合,去对比不同网络约束下的LMP。否则你对比的是两个完全不同的整数解,很难把差异归因于阻塞。
5. 我也踩过的几个坑:全时段分析的三个细节
最后说三个我在实际项目里反复踩、改了无数次的经验,希望对你有用。
5.1 别只看均价,要看分时价差带宽
有一次我做某市场月度复盘,某一天全网均价只比前一天涨了8元/兆瓦时,看起来波澜不惊。但把96点曲线拉出来,送端节点和受端节点在晚高峰时段的价差比前一天多了120元/兆瓦时。如果只看均价,完全发现不了阻塞加剧。后来我做任何分析,都先画“全时段价差带宽图”,上下包络线之间就是市场分裂程度。均价不能反映阻塞,价差带宽才能反映。
5.2 储能数据比火电更难搞
储能参与现货市场后,全时段分析复杂度明显增加。因为储能既有充放电约束,又有SOC连续性约束,跨时段耦合特别强。有些模型在96点连续计算时,储能SOC边界处理不当会导致早晚高峰电价被过冲。比如某算例里,因为午间充电功率限制,晚间储能放电量不足,受端晚高峰电价被抬高到900元/兆瓦时。后来我加了一个“储能在高峰前的SOC最低保障”约束,价格才回落到合理区间。做分析时一定要把储能的SOC时序曲线单独画出来,和电价曲线对照看,能发现很多模型问题。
5.3 报告写给谁,分析粒度就不一样
同样一套“有无阻塞全时段分析”结果,给调度人员看,重点放在关键断面负载率、机组调整建议上;给交易员看,重点放在节点价差、阻塞租金、购电成本影响上;给规划人员看,重点放在阻塞持续时段、需要扩容的通道上。我通常会生成三份不同视图的图表,而不是一份“大杂烩”。这样虽然工作量增加,但每份报告都能直接用于决策,这才是全时段分析的价值所在。
最后按老规矩,送你一条我在实际工作中验证过很多次的判断口诀:如果某节点价格高于全网同步基准价3%以上,先怀疑是不是阻塞;如果全网不同节点价差波动剧烈,但能量分量很稳定,那大概率是网络约束在主导价格信号;如果连能量分量都在剧烈波动,说明系统供需形势比阻塞更难处理。把这三句话记住,再去做“有无阻塞”的对比,你会少走很多弯路。