
简介本资源聚焦电力系统连锁故障级联失效的建模、仿真与路径计算面向电力系统专业本科生、研究生及从事电网安全分析的研究人员解决级联故障动态演化机制理解难、传播路径量化分析缺工具的实际问题。压缩包共78个文件含28个MATLAB源码如main.m、compute_distribution.m等核心算法脚本、17张结果图png/fig格式、9个JMP统计分析文件、5个Excel数据集含BA/ER网络参数与故障模拟数据、1份Word说明文档及1份README.md整体1.51MB结构清晰便于复现故障模拟全流程。已有336人学习下载提供从单节点故障触发、潮流重分布、次生故障识别到多轮迭代传播的完整计算框架配套可视化脚本plot_*.m与双层网络耦合建模模块Generate_two_network.m、allocate_interlinks.m可直接用于课程设计、科研验证或电网韧性评估实践。1. 连锁故障不是“单点崩塌”而是网络拓扑与负载重分配共同驱动的动态传播过程电力系统里一条线路跳闸后负荷不会凭空消失——它会沿着剩余路径重新分布。当某台变压器因过载退出运行邻近线路电流可能瞬间上升20%40%若该线路原本已承载85%额定容量这次重分配就足以触发其保护动作。这种“故障→重分配→新越限→新故障”的闭环就是连锁故障的本质。它不依赖人为误操作也不需要极端天气仅由网络固有结构和实时潮流耦合即可自发演化。本项目提供的Cascading-failure-master源码包正是围绕这一机制构建的可复现实验框架它不模拟具体继电保护逻辑而是用基于节点度、介数或实际潮流的负载重分配规则驱动多层网络如BA/ER模型中的级联失效过程。适合电力系统可靠性工程师验证拓扑韧性、算法研究员对比不同重分配策略的临界阈值、以及高校课题组开展小规模网络上的参数敏感性分析——尤其当你手头只有MATLAB环境且需要快速验证“增加跨层连接能否推迟崩溃点”这类假设时这套代码比从零搭建PSS/E或MATPOWER模型快35倍。2. 基于BA/ER双层网络的连锁故障建模为什么选度分布而非地理坐标2.1 网络生成与拓扑特性决定失效传播路径连锁故障的传播效率高度依赖底层网络的结构性质。本项目采用两种经典随机图模型BA网络Barabási–Albert通过优先连接机制生成无标度网络节点度分布服从幂律 $P(k) \sim k^{-3}$。这意味着少数枢纽节点如区域变电站承载远超平均值的流量一旦失效其负载将被强制分摊给大量低度节点极易引发雪崩。ER网络Erdős–Rényi所有节点连接概率均等度分布近似泊松分布无显著枢纽节点失效传播更均匀但临界崩溃点更陡峭。项目中BA_network.m和ER_network.m分别生成这两种网络关键参数为节点数N和边数MBA模型中M决定平均度。例如执行% 生成500节点BA网络初始m02每步新增1条边 G_ba BA_network(500, 2, 1); % 生成500节点ER网络连接概率p0.01约1250条边 G_er ER_network(500, 0.01);注意BA_network.m中第17行m floor(log(N))是经验性设置若需严格控制平均度应直接修改m参数而非依赖对数近似ER_network.m的p值需满足 $p \frac{\ln N}{N}$ 才能保证连通性否则级联可能在孤立子图内提前终止。2.1.1 双层网络耦合机制跨层连接如何改变崩溃阈值真实电网常含多电压等级如500kV主网220kV配网本项目用Generate_two_network.m构建双层结构并通过allocate_interlinks.m添加跨层连接。核心逻辑是每层独立生成BA或ER网络跨层连接数n_interlinks由用户指定如n_interlinks 50连接策略默认为“随机配对”但allocate_interlinks2.m提供了基于节点度加权的分配——度高的节点更可能获得跨层连接这更符合实际电网中枢纽站必设联络线的设计原则。执行示例% 生成两层BA网络各300节点添加100条跨层连接 [G1, G2, interlinks] Generate_two_network(300, 300, BA, BA, 100); % 使用加权策略分配连接需先计算各层节点度 degree1 sum(G1, 2); degree2 sum(G2, 2); interlinks_weighted allocate_interlinks2(G1, G2, 100, degree1, degree2);提示跨层连接数并非越多越好。test_allocation_interlinks.m的实验表明当n_interlinks超过某临界值如双层BA网络中为总节点数的8%系统反而因过度耦合导致单层故障更快渗透至另一层整体鲁棒性下降。这解释了为何实际电网中跨电压等级联络线数量受严格限制。2.2 故障初始化与负载分配从静态潮流到动态重分配连锁故障起始于一个初始扰动。项目提供两类初始化方式单节点失效single node dataBA.xlsx中预存了BA网络各节点的初始负载通常设为节点度或介数study_single.m加载后移除指定节点随机边失效load_based_cascade3.m支持按边权重如传输容量随机移除边并重分配其承载功率。负载分配规则在compute_distribution.m中定义支持三种主流模型模型类型数学表达适用场景代码调用参数均匀重分配$\Delta L_j \frac{L_i}{k_i}$理论分析基准忽略物理约束uniform基于度重分配$\Delta L_j L_i \cdot \frac{k_j}{\sum_{l \in \Gamma(i)} k_l}$模拟负荷按邻接节点容量比例分担degree基于介数重分配$\Delta L_j L_i \cdot \frac{b_j}{\sum_{l \in \Gamma(i)} b_l}$反映关键路径节点承受更大压力betweenness其中 $k_j$ 为节点 $j$ 的度$b_j$ 为其介数$\Gamma(i)$ 为节点 $i$ 的邻居集合。执行时需明确指定% 对BA网络G_ba使用基于度的重分配 load_data readmatrix(single node dataBA.xlsx); initial_load load_data(:, 2); % 第二列为初始负载 [fail_seq, final_size] compute_distribution(G_ba, initial_load, 1, degree);关键参数说明compute_distribution.m第4参数trigger_node指定初始失效节点索引如1表示第一个节点返回的fail_seq是按失效顺序排列的节点ID数组final_size为最终存活节点数。若final_size接近0说明该网络在该初始扰动下发生全局崩溃。3. 连锁故障路径计算从单步仿真到多轮统计的完整流程3.1 单次级联仿真main.m的执行链与状态追踪main.m是整个仿真的入口脚本其执行流程严格遵循摘要描述的5个步骤但以MATLAB向量化方式实现以提升效率。核心步骤分解如下3.1.1 故障触发与状态评估脚本首先调用get_vi.m计算各节点脆弱性指标如电流/容量比识别首个越限节点% 计算当前所有节点的负载与容量比 vi_ratio current_load ./ capacity; % 找出首个超过阈值如1.0的节点 trigger_idx find(vi_ratio 1.0, 1, first); if isempty(trigger_idx), break; end % 无越限则终止此处capacity为预设节点容量向量常取度值或固定常数current_load在初始时等于initial_load后续迭代中由compute_exact_step1.m更新。3.1.2 影响评估与故障传播失效节点被移除后其负载按选定规则重分配compute_exact_step1.m完成此计算% 假设节点i失效邻居集合为neighbors neighbors find(G(:,i) | G(i,:)); % 获取所有邻接节点 if strcmp(distribution_rule, degree) neighbor_degrees sum(G(:,neighbors), 1); % 各邻居度 weights neighbor_degrees / sum(neighbor_degrees); delta_load load_i * weights; % 负载增量 end current_load(neighbors) current_load(neighbors) delta_load;逻辑说明该段代码确保重分配仅作用于直接邻居符合电网物理约束且权重归一化避免负载“凭空产生”。若邻居中存在已失效节点current_load0其权重被置零并重新归一化——这是compute_exact_step1.m第42行的关键修正防止无效节点参与分担。3.2 多轮统计与临界点识别plot_simulation_alpha_c.m的数据处理逻辑单次仿真结果具有随机性需通过蒙特卡洛方法确定系统鲁棒性。plot_simulation_alpha_c.m执行以下操作对同一网络结构重复N_sim100次不同初始节点的失效实验统计每次仿真中最终存活节点比例R_final final_size / N绘制R_final随初始负载系数alpha即initial_load alpha * capacity变化的曲线识别临界点alpha_c当R_final从接近1骤降至接近0时对应的alpha值。关键代码段alphas linspace(0.5, 1.5, 50); % 测试50个alpha值 R_mean zeros(size(alphas)); for i 1:length(alphas) R_trials zeros(1, 100); for trial 1:100 init_load alphas(i) * capacity; [~, final_size] compute_distribution(G, init_load, randi(N), degree); R_trials(trial) final_size / N; end R_mean(i) mean(R_trials); end % 寻找alpha_cR_mean首次低于0.5的alpha值 alpha_c alphas(find(R_mean 0.5, 1, first));参数说明alphas范围需覆盖理论预测的相变区间BA网络通常为0.71.2R_mean 0.5是经验性阈值实际应用中可根据业务需求调整如电力系统要求R_final 0.95则alpha_c应取R_mean0.95对应的alpha。3.2.1 可视化故障路径plot_step.m的时空演化图plot_step.m将级联过程转化为动态图横轴为时间步即失效序号纵轴为节点ID每个点(t, j)表示节点j在第t步失效颜色深浅表示该步失效节点的负载值。执行命令% fail_seq为compute_distribution返回的失效序列 plot_step(fail_seq, current_load_history, BA_500);其中current_load_history是每步更新后的负载向量矩阵steps × N。该图可直观识别“早期失效是否集中于高介数节点”——若前5步失效节点ID在图中呈垂直密集带说明枢纽节点主导传播若呈水平分散则表明负载重分配已触发全局共振。4. 进阶技巧用critical_alpha.m快速定位网络脆弱环节4.1 基于介数中心性的脆弱节点排序critical_alpha.m不进行完整级联仿真而是通过静态分析快速识别最易触发崩溃的节点。其核心思想节点介数越高其失效导致的负载重分配路径越长、影响范围越广。算法步骤计算网络中所有节点的介数中心性centrality(G, betweenness)按介数降序排列节点对Top-K节点如K10分别作为初始失效点运行单次compute_distribution返回使final_size最小的节点索引及对应alpha_c。执行示例% 计算BA网络G_ba的介数 bet_cen centrality(G_ba, betweenness); [~, idx_sorted] sort(bet_cen, descend); top_nodes idx_sorted(1:10); alpha_c_list zeros(1,10); for i 1:10 [~, final_size] compute_distribution(G_ba, initial_load, top_nodes(i), degree); alpha_c_list(i) final_size / N; % 此处简化为存活率实际需扫alpha end most_critical top_nodes(find(alpha_c_list min(alpha_c_list), 1));4.2 跨层连接优化的实证检验表当需评估跨层连接策略对鲁棒性的提升效果时可直接调用test_allocation_interlinks2.m并对比关键指标。下表为BA双层网络各300节点在不同连接策略下的典型结果跨层连接数分配策略平均alpha_calpha_c标准差最小R_finalalpha1.030随机0.820.150.3130度加权0.910.080.6760度加权0.880.110.52100度加权0.790.220.24解读度加权分配在30条连接时达到最优平衡——alpha_c提升11%且波动减半说明枢纽节点优先互联能有效延缓崩溃但增至100条后alpha_c反降印证了“过度耦合降低鲁棒性”的结论。实际工程中应结合该表选择连接数而非盲目增加联络线。4.3 故障路径导出为可交互图谱twod_plot_optimal_interlinks_1.m支持将级联过程导出为Gephi兼容的CSV格式便于进一步分析% 生成故障传播边列表每行from,to,step edges_csv []; for t 1:length(fail_seq)-1 from_node fail_seq(t); to_nodes find(G_ba(:,from_node) | G_ba(from_node,:)); % 邻居 for j 1:length(to_nodes) edges_csv [edges_csv; from_node, to_nodes(j), t]; end end writematrix(edges_csv, cascade_path_edges.csv, Delimiter, ,);导入Gephi后可设置节点大小为介数、边颜色为失效步数直观呈现“故障如何从局部枢纽扩散至全局”。本文还有配套的精品资源点击获取