2025年“深圳杯”数学建模挑战赛C题国奖大佬万字思路助攻
完整版1.5万字论文思路和Python代码下载:https://www.jdmm.cc/file/2712073/
引言
本题目旨在分析分布式能源 (Distributed Generation, DG) 接入配电网系统后带来的风险。核心风险评估公式为:
R = P_{loss} \times C_{loss} + P_{over} \times C_{over}
其中:
-
R 代表系统总风险。
-
P_{loss} 代表系统失负荷的发生概率。
-
C_{loss} 代表由系统失负荷造成的危害程度。
-
P_{over} 代表系统过负荷的发生概率。
-
C_{over} 代表由系统过负荷造成的危害程度。
我们需要针对所提供的有源配电网62节点系统(数据见附录Excel表1和表2,即文件 表1 有源配电网62节点系统负荷参数.csv
和 表2 有源配电网62节点系统拓扑参数.csv
),建立风险计算模型,并分析不同场景下系统风险的演变情况。
通用建模方法与数据准备
在深入具体问题之前,我们先讨论一些通用的建模方法和必要的数据准备工作。
1. 系统拓扑与数据解读
-
网络模型构建:根据
表2 有源配电网62节点系统拓扑参数.csv
中的起点、终点、长度、电阻和电抗数据,构建配电网的图模型。节点对应母线/负荷点/开关,边对应线路段。可以使用如图networkx
(Python库) 进行网络拓扑的表示和分析。 -
负荷数据:
表1 有源配电网62节点系统负荷参数.csv
提供了各节点的有功负荷 P (kW)。题目中指明不考虑无功功率。 -
分布式能源(DG)位置:题目描述“8个分布式能源DG从不同位置接入到配电网中,如图1所示”。需要仔细解读图1(在
C题:分布式能源接入配电网的风险分析.docx
中),将DG1至DG8明确映射到表1、表2中的具体节点编号上。如果图1中的DG连接点不是已编号的负荷节点,可能需要将其视为新的发电节点,并明确其与哪个现有节点相连。 -
线路额定参数:
-
题目给出“3条馈线额定负载均为2.2 MW,对应额定载流量为220A”。馈线电压为10kV。
-
“过负荷:线路电流超过额定载流量10%以上”。这意味着每条线路(或至少是关键线路)都需要一个额定载流量。表2并未直接给出各线路段的额定电流。关键假设/数据缺失:如果所有支路的额定电流未给出,需要做出合理假设。例如,主干线路参考220A,支路根据其下游总负荷设计容量按比例估算,或者统一假设一个基于导线型号(若能从电阻电抗反推)的电流限值。在模型中应明确指出此假设。联络线(S13-1, S29-2, S62-3)的容量也需明确,可假设与所连接的馈线容量相当。
-
-
开关信息:图1中标注了分段开关S1-S62以及联络开关S13-1, S29-2, S62-3。这些开关的状态(正常开/合,故障时可操作)对故障隔离和负荷转供至关重要。
2. 故障率计算
根据题目给出的故障率参数:
-
每个分布式能源故障率:p_{dg} = 0.5\%
-
每个用户故障率:p_{user} = 0.5\% (此处“用户故障”可能指负荷点连接设备故障导致该负荷无法供电)
-
每个开关故障率:p_{sw} = 0.2\%
-
配电线路故障率:p_{line} = \text{线路长度(km)} \times 0.002/\text{km}。线路长度从
表2
获取。
由于题目说明“各个类型故障是独立发生的,同一时间同一类型只发生一个故障”,这简化了概率计算,主要考虑单一故障事件。
3. 潮流计算简化
题目明确“不考虑无功功率和电压越限的影响,风险计算分析仅考虑有功功率和电流的影响”。
-
有功潮流:可以使用直流潮流模型(DC Power Flow)的简化形式,或者基于基尔霍夫定律的有功功率平衡方程。考虑到线路电阻
表2
给出了,线路损耗 P_{loss,line} = I^2 R 或 P_{loss,line} = \frac{P^2+Q^2}{V^2}R \approx \frac{P^2}{V_{nom}^2}R (由于Q忽略)可以被估算。 -
电流计算:对于三相平衡系统,电流 I 可以由有功功率 P (kW)和线电压 V_{LL} (kV,此处为10kV)计算:
$$
I = \frac{P \times 1000}{\sqrt{3} \times V_{LL} \times 1000 \times \cos\phi}
$$
由于不考虑无功,功率因数 \cos\phi=1。所以 I = \frac{P}{\sqrt{3} \times 10} (A)。其中P为三相总有功功率。
4. 危害程度函数 (C_{loss} 和 C_{over})
-
C_{loss} (失负荷危害程度):题目提及“供电中断危害可依据部门客户危害度函数进行计算”,但未提供具体函数。可以参考网络资料中关于“用户平均断电损失(Customer Average Interruption Cost, CAIC)”或“失负荷价值(Value of Lost Load, VoLL)”的概念 (如NREL的CDF计算器 [3.1] 或维基百科关于VoLL的解释 [4.1])。若无详细分类,可假设一个平均的单位失负荷成本(例如,/kW 或 /kWh)。
-
C_{over} (过负荷危害程度):过负荷可能导致设备寿命缩短、损耗增加甚至损坏 [5.1, 5.2, 6.2]。其量化也较复杂。模型中可以简化为:当发生过负荷时,产生一个固定的惩罚成本,或者成本与过负荷的程度和持续时间相关(若考虑动态)。
问题解答
问题1:失负荷风险和过负荷风险的计算模型
A. 失负荷风险模型 (R_{loss} = P_{loss} \times C_{loss})
1. P_{loss} (系统失负荷的发生概率) 计算思路:
-
故障识别与枚举:
-
线路故障:遍历所有线路段,根据长度计算故障率。
-
开关故障:遍历所有开关(分段开关和联络开关),使用给定的故障率。开关故障可能指开关误动或拒动。这里主要考虑导致供电中断的开路故障。
-
DG故障:遍历所有DG,使用给定故障率。
-
用户故障:遍历所有负荷点,使用给定故障率。
-
-
故障影响分析 (对每一个单一故障场景):
-
确定初始中断范围:发生故障后,利用网络拓扑判断哪些负荷失去电源。例如,线路L发生故障,则L下游的所有负荷(在没有其他电源的情况下)会失电。
-
尝试通过联络线恢复供电:
-
识别失电区域内可以通过联络线转供的负荷。
-
检查转供路径(包括联络线本身及目标馈线)的容量是否足够,即转供后不能引起新的过负荷。联络开关的容量需要预先定义。
-
“供电恢复的目标是在系统拓扑结构发生变化时,将系统的经济损失降至最小”,这意味着在多种恢复方案可选时,应优先恢复重要负荷或总负荷量最大的方案(如果负荷有优先级或不同C_{loss})。
-
注意约束:“分布式能源不得向上级电网倒送功率”,以及联络线转移功率时,不应导致源馈线向上级变电站倒送。
-
-
计算净失负荷:经过联络线转供后,仍然无法恢复的负荷总量 Load_{unserved, i} (kW),对应于故障场景 i。
-
-
P_{loss} 的确定: 严格来说,P_{loss} 不是一个单一概率,而是与失负荷大小相关的。一个更准确的指标是期望失负荷 (Expected Energy Not Supplied, EENS) 或期望失负荷功率 (Expected Power Not Supplied, EPNS)。 对于风险公式中的 P_{loss},可以理解为某种等效的“发生失负荷”的概率。一个简化的方法是:
$$
P_{loss} = \sum_{i \in \text{Faults}} P(\text{Fault}_i) \times I(\text{Fault}_i \text{ leads to net load loss})
$$
其中 P(\text{Fault}_i) 是故障 i 的发生概率,I(\cdot) 是指示函数。 更合理的做法是计算期望未服务功率:
$$
E[P_{unserved}] = \sum_{i} P(\text{Fault}_i) \times Load_{unserved, i}
$$
如果风险公式必须使用单一 P_{loss} 和 C_{loss},那么 P_{loss} 可以是“发生任意导致失负荷的故障的总概率”,而 C_{loss} 则是这些故障下的平均或加权危害。 或者,将风险公式理解为期望损失:
$$
R_{loss} = \sum_{i} P(\text{Fault}_i) \times (Load_{unserved, i} \times \text{CostPerKW})$。 这样 $P_{loss,i} = P(\text{Fault}_i)
$$
$$
C_{loss,i} = Load_{unserved, i} \times \text{CostPerKW}
$$
2. C_{loss} (系统失负荷造成的危害程度) 计算思路:
-
C_{loss} = Load_{unserved} \times V_{VoLL}
-
Load_{unserved} 是某故障场景下,经过优化恢复后最终未能供电的负荷量 (kW)。
-
V_{VoLL} 是单位失负荷的经济损失 ($/kW 或 $/kWh)。如前述,可参考已有研究或行业数据,或作为参数输入。如果负荷有不同类型(居民、商业等),V_{VoLL} 可以是各类型负荷的加权平均。
3. 代码实现思路 (Python 为例):
-
使用
pandas
读取和处理CSV数据。 -
使用
networkx
构建电网图模型,存储节点(负荷、DG、开关)、支路(线路参数、额定电流、故障率)信息。 -
主循环:遍历所有可能的单一故障点(线路、开关、DG)。
-
内部逻辑:
-
模拟故障发生,从图中移除故障元件或改变其状态。
-
使用图算法(如DFS/BFS)确定孤岛和失电区域。
-
转供逻辑:
-
识别可通过联络开关连接到其他正常馈线的失电区域。
-
进行潮流计算或容量校核,判断转供可行性(不超过联络线及目标馈线容量,不向上级倒送功率)。
-
以最大化恢复负荷或最小化损失为目标选择转供方案。
-
-
计算最终的 Load_{unserved}。
-
-
-
汇总所有故障场景的 P(\text{Fault}_i) \times C_{loss,i} 得到总的 R_{loss}。
B. 过负荷风险模型 (R_{over} = P_{over} \times C_{over})
1. P_{over} (系统过负荷的发生概率) 计算思路:
-
潮流计算:在给定的运行方式下(负荷情况、DG出力情况),计算网络中各条线路的有功功率 P_{line}。
-
电流计算:根据 P_{line} 和额定电压 (10kV),计算线路电流 I_{line} = \frac{P_{line}}{\sqrt{3} \times 10 \text{ (kV)}}。
-
过负荷判断:对每条线路,检查 I_{line} > 1.1 \times I_{rated,line}。I_{rated,line} 是该线路的额定载流量(需预设或假设)。
-
“不得向上级变电站倒送”约束:在潮流计算中,必须保证从变电站到馈线的功率方向,或者说变电站出口开关 (CB1-CB3) 处的功率为正(从变电站流出)。如果DG出力过大可能导致倒送,则需要弃风或通过联络线向其他馈线转移(前提是其他馈线有接纳能力且联络线容量允许)。
-
P_{over} 的确定:
-
对于确定的运行场景(如DG全出力,或特定出力水平),如果发生过负荷,P_{over} 为1,否则为0。
-
如果考虑DG出力的不确定性(例如,在问题3中会更突出),则 P_{over} 可以是:在一定观测时间内(如一天中所有小时),发生过负荷的小时数比例;或者通过蒙特卡洛模拟,DG出力按某种概率分布取值,统计过负荷发生的频率。
-
在本问题中,可能需要评估的是在基准DG容量下,是否存在某些线路在特定(可能是最不利)条件下发生过负荷。
-
2. C_{over} (系统过负荷造成的危害程度) 计算思路:
-
量化过负荷的危害可以有多种方式:
-
简化:一旦发生过负荷,即产生一个固定的惩罚值。
-
与过负荷程度相关:例如,C_{over} = k \times (\frac{I_{line} - 1.1 \times I_{rated,line}}{1.1 \times I_{rated,line}}),其中 k 是一个成本系数。
-
考虑设备寿命损失:更复杂的模型会把过负荷映射到设备(如变压器、电缆)的加速老化模型,从而计算经济损失 [5.2, 6.2]。
-
-
参考搜索结果,如 "Electrical Overload: Understanding the Risks and How to Prevent It - E-Abel" [5.1] 描述了过热、设备损坏、寿命降低等风险,但具体成本化需要模型假设。
3. 代码实现思路:
-
实现简化的潮流计算函数(如基于功率平衡迭代或矩阵求解的DC潮流近似)。
-
输入:节点负荷、DG出力(初始容量300kW/个)、网络拓扑及参数。
-
主逻辑:
-
计算各线路功率和电流。
-
检查倒送功率约束,如有倒送,需调整DG出力(弃风)或尝试通过联络线向其他馈线转移功率,前提是不导致其他线路过负荷且联络线容量允许。
-
检查各线路是否过负荷。
-
-
若有过负荷线路,则记录,并根据上述 C_{over} 计算方法估算危害。
问题2:分布式能源容量从I增加到3I,分析系统风险演变
-
DG容量设定:初始容量 I = 300 \text{ kW}/DG。总共8个DG。 容量从 I 增加到 3I,步长 0.3I。即每个DG的容量依次取: 300, 300(1+0.3), 300(1+0.6), \dots 直到 3 \times 300 = 900 \text{ kW}。 具体容量点 (kW/DG):300, 390, 480, 570, 660, 750, 840, 900。
-
建模思路:
-
对于上述每一个DG容量水平(所有8个DG同时调整容量):
-
更新DG出力:在模型中设置DG的出力为此容量值(这里假设DG按其容量稳定出力,不考虑其波动性,除非题目暗示需要结合典型日出力曲线,但问题2似乎更侧重容量参数本身的影响)。
-
重新计算失负荷风险 R_{loss}:
-
DG容量的增加可能会改变故障后的供电能力。如果DG被允许在故障后为部分区域供电(形成孤岛,需视题目是否有此设定,通常配电网孤岛运行较复杂),则可能降低失负荷。但DG本身也有故障率。主要影响在于,如果DG在网,可以减少从主网获取的功率,改变潮流分布。
-
使用问题1中建立的 R_{loss} 模型,代入新的DG容量。
-
-
重新计算过负荷风险 R_{over}:
-
DG容量增加,显著增加了线路过负荷和向上级电网倒送功率的风险,尤其是在负荷较低时。
-
使用问题1中建立的 R_{over} 模型,代入新的DG容量,严格检查倒送和线路过载情况。
-
-
计算总风险 R = R_{loss} + R_{over}。
-
-
结果分析:绘制总风险 R、失负荷风险 R_{loss}、过负荷风险 R_{over} 随DG总容量(或单个DG容量)变化的曲线图,据此分析演变趋势。
-
-
代码实现思路:
-
外层循环遍历DG的各个容量水平。
-
循环内部调用问题1中开发的风险计算函数(失负荷风险函数和过负荷风险函数)。
-
存储每个容量水平下的 R_{loss}, R_{over}, R。
-
使用
matplotlib
等库进行绘图。
-
问题3:假设8个DG全部为光伏,分析每一个光伏的最大接入容量对系统风险的影响
-
典型光伏发电曲线:
-
需要查找典型的日发电功率曲线。例如,晴天时光伏出力在白天呈钟形曲线,峰值在中午附近,夜间为0。可参考搜索到的资料,如 ResearchGate上的典型曲线 [1.1] 或NREL的数据 [2.2]。曲线通常以标准日照下的峰值功率的百分比形式给出(例如,每小时一个出力系数 Profile(t) \in [0,1])。
-
P_{PV}(t) = \text{PV装机容量} \times \text{Profile}(t)。
-
-
“每一个光伏的最大接入容量”的理解:
-
这可能指对8个DG位置,逐个分析:当某个位置的光伏容量从一个较小值逐渐增大时,系统风险如何变化,从而找到一个“风险可接受”或“边际风险增长过快”的容量点,这个点可视为该位置的“最大接入容量”的参考。
-
或者,对每个DG位置,设定一个较大的接入容量(例如问题2中的3I=900kW,或根据线路热稳极限反算的理论上限),然后评估此时系统风险的构成。
-
更可能的问法是:单独改变一个PV的装机容量,保持其他PV容量在基准值(如初始的300kW),分析该PV容量变化对系统总风险的影响。这种敏感性分析能体现不同接入位置对风险的贡献差异。
-
-
建模思路 (按敏感性分析理解):
-
选择一个基准场景,例如所有PV容量均为初始值 I=300 \text{ kW}。
-
对外层循环:遍历8个PV位置 (DG1 to DG8)。
-
对内层循环:对于当前选定的PV,将其装机容量从一个下限(如0或I)逐步增加到一个上限(如3I或更高,或直到风险急剧增加)。其他7个PV容量保持基准值。
-
风险计算 (含时间维度):由于PV出力随时间变化,风险也可能随时间变化。
-
选择一天中若干典型时刻(如每小时一次,共24个时刻),或者至少选择几个关键时刻(如清晨低负荷无PV、中午高峰PV低/中负荷、傍晚高峰负荷无PV)。
-
对于每个时刻 t:
-
获取该时刻所有PV的出力 P_{PV,j}(t) (j为PV编号)。
-
获取该时刻的负荷 P_{load,k}(t) (如果负荷也随时间变化,则需负荷曲线;若无,则用
表1
的固定负荷)。 -
运行问题1中的风险评估模型(失负荷、过负荷),得到该时刻的瞬时风险 R(t)。
-
-
日总风险/平均风险:可以将瞬时风险进行加权平均或求和,得到日度量下的风险值。例如,期望日风险 R_{daily} = \sum_{t} R(t) \times \Delta t (如果R(t)是风险功率)或 R_{daily} = \text{mean}(R(t))。
-
-
结果分析:对于每个PV位置,绘制其接入容量与系统(日)风险之间的关系曲线。比较不同位置的曲线,分析哪些位置对风险更敏感,以及其“最大经济接入容量”或“风险拐点容量”大致在什么水平。
-
-
代码实现思路:
-
实现一个函数,根据输入的PV装机容量、时刻 t 和标准化的PV出力曲线,返回该PV的瞬时出力。
-
主程序包含嵌套循环:外层遍历PV位置,中层遍历该PV的测试装机容量,内层遍历一天中的各个时刻。
-
在最内层,调用问题1的风险计算模块(需适应瞬时DG出力)。
-
存储结果并绘图。
-
问题4:在问题3基础上,假设每个光伏配置储能电池,分析影响
-
储能配置:储能容量不超过PV装机容量的15%。这通常指储能的功率容量 P_{ESS,max} \le 0.15 \times P_{PV,capacity}。储能的能量容量 E_{ESS,max} (kWh) 也需要设定,例如,假设为功率容量的2小时或4小时 (E_{ESS,max} = P_{ESS,max} \times \text{Duration})。还需要考虑充放电效率 \eta_{ch}, \eta_{dis},以及最小/最大荷电状态 (SOC) 约束。
-
储能运行策略:这是关键。储能的目的是平抑PV波动、削峰填谷、参与调峰调频、提高自消纳、减少弃光、降低风险。一个合理的策略应服务于风险最小化。
-
基本策略示例:
-
充电:当PV出力大于本地负荷且可能导致线路过载或向上级倒送时,优先给储能充电 (若SOC < SOC_{max} 且充电功率 \le P_{ESS,max})。
-
放电:当PV出力不足以满足本地负荷,或在系统故障、主网失压时,储能放电支援 (若SOC > SOC_{min} 且放电功率 \le P_{ESS,max})。
-
目标:可以设定为优先保证本地负荷供电,其次避免线路过载和倒送,再次参与经济调度(如峰谷套利,但本题更侧重风险)。
-
-
-
建模思路:
-
在问题3的模型基础上,为每个PV增加一个储能单元模型。
-
在每个时刻 t 的计算中,加入储能的充放电决策逻辑。
-
首先确定PV的理论出力。
-
根据储能策略,决定储能是充电、放电还是闲置,以及相应的功率。
-
更新储能的SOC: SOC(t) = SOC(t-1) + \frac{P_{ESS}(t) \times \Delta t \times \eta}{E_{ESS,max}} (充电取 P_{ESS}>0, \eta=\eta_{ch};放电取 P_{ESS}<0, \eta=1/\eta_{dis})。
-
PV和储能联合向电网注入/吸收的净功率为 P_{DG\_net}(t) = P_{PV}(t) - P_{ESS,charge}(t) + P_{ESS,discharge}(t)。
-
-
使用此 P_{DG\_net}(t) 作为DG等效出力,代入问题1的风险模型中,重新计算 R_{loss}(t) 和 R_{over}(t)。
-
重复问题3中的分析流程(改变单个PV及其配套储能的容量,分析对系统日风险的影响)。
-
-
结果分析:对比有无储能情况下的风险曲线。预期储能可以:
-
显著降低过负荷风险 R_{over}(通过吸收多余PV出力,减少峰值注入)。
-
可能降低失负荷风险 R_{loss}(通过在PV出力低或故障时段供电)。
-
-
代码实现思路:
-
在PV模型旁增加储能模型类/函数,包含SOC、功率/能量容量、效率、充放电逻辑。
-
修改问题3的时间序列仿真循环,在每个时间步先执行储能的调度决策,再进行电网风险评估。
-
总结与展望
上述思路为解决该数学建模问题提供了框架。在具体实施中,还需要注意以下几点:
-
关键参数的明确:如前所述,所有线路的额定电流、联络线容量、DG在拓扑图中的精确接入点、客户停电损失的具体数值或函数形式、过负荷的量化成本等,都需要明确。如果题目未完全给出,模型中必须清晰地列出所作的假设。
-
模型的简化与合理性:鉴于问题的复杂性,某些方面的简化是必要的(如忽略无功和电压、单一故障假设等已在题目中指明)。关键在于确保简化不失问题本质。
-
计算效率:特别是对于问题3和4中涉及时间序列和多场景迭代的分析,需要考虑算法效率,避免不必要的重复计算。
-
结果的可视化与解读:清晰的图表(如风险随参数变化的曲线、关键节点或线路的风险贡献等)对于结果呈现和分析至关重要。
参考文献(部分)
-
[1] NREL Customer Damage Function Calculator: Customer Damage Function Calculator
-
[2] Wikipedia - Value of Lost Load: https://en.wikipedia.org/wiki/Value_of_lost_load
-
[3] ResearchGate - Typical daily PV generation and load profiles: https://www.researchgate.net/figure/Typical-daily-PV-generation-and-load-profiles-of-a-day-time-business-office_fig2_358496934
-
[4] NREL - Solar Supply Curves: Solar Supply Curves | Geospatial Data Science | NREL
-
[5] E-Abel - Electrical Overload: Understanding the Risks and How to Prevent It: Electrical Overload: Understanding the Risks and How to Prevent It [May 2025]
-
[6] MES - Understanding the Impact of Overloading on Transformer Health: Understanding the Impact of Overloading on Transformer Health
-
[7] IMIA - Analysis of Transformer Failures: https://www.imia.com/wp-content/uploads/2023/07/wgp3303.pdf