尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

基于运行数据的高铁牵引供电系统等值建模与参数辨识实战

基于运行数据的高铁牵引供电系统等值建模与参数辨识实战 1. 项目背景与核心任务拆解最近在整理过往的项目资料翻到了2021年电工杯数学建模竞赛A题的完整求解过程。这个题目当时在圈内讨论度很高因为它直接切入了“高铁牵引供电系统”这个既专业又复杂的工程领域。很多同学看到“运行数据分析”、“等值建模”这些词可能就有点发怵觉得是不是需要非常深厚的电力系统背景才能做。其实不然数学建模的魅力就在于它要求你用数学工具去理解和简化一个复杂的现实问题。这个题目就是一个绝佳的范例它考察的核心能力是如何从海量的、看似杂乱无章的工程数据中提炼出关键特征并构建一个能够反映系统核心运行规律的简化数学模型。简单来说这道题给了我们高铁牵引供电系统在特定区段、特定时间内的运行数据比如各牵引变电所的电压、电流、功率等等。我们的核心任务可以拆解为两个递进的层面第一是“数据分析”即读懂这些数据在说什么找出负荷变化的规律、异常点以及不同测点之间的关联第二是“等值建模”这是电力系统分析中的经典方法意思是我们不可能也没必要把系统中每一根电线、每一个变压器都原封不动地画进模型里而是需要根据数据分析的结果用一个结构更简单、参数更凝练的“等效电路”来代表原系统使得这个简化模型在关键端口上的电气特性比如电压、等效阻抗与原系统基本一致。这个等值模型的价值巨大它可以用于后续的系统仿真、稳定性分析、扩容规划计算量小但又能抓住主要矛盾。所以无论你是电气工程专业的学生还是对数据分析、建模感兴趣的同学这个项目都能让你收获颇丰。它不仅涉及时间序列分析、相关性分析、聚类等数据科学方法还要求你将分析结论转化为具体的电路模型和数学方程最后通过编程当时我们主要用MATLAB实现整个求解流程并撰写结构严谨的论文。接下来我就结合我们当时的解题全过程把每一步的思考、踩过的坑以及最终的实现方案毫无保留地分享给大家。2. 数据初探与预处理从“脏数据”到“干净特征”拿到的原始数据通常是CSV或Excel格式可能来自SCADA数据采集与监控系统。第一步永远不是急着跑算法而是静下心来“看”数据。我们当时的数据包含了多个牵引变电所假设为S1, S2, S3...在一天内以分钟或秒为间隔的采样数据字段可能包括时间戳、有功功率(P)、无功功率(Q)、电压(U)、电流(I)、功率因数等。2.1 数据质量诊断与清洗首先用pandas或MATLAB的readtable加载数据然后进行以下几项检查缺失值处理用isnull()快速查看缺失情况。电力数据偶尔的缺失可能是通信中断所致。对于孤立的缺失点如果前后时间点数据连续可以用线性插值interp1补全。如果某段时间大面积缺失则需要评估是否要剔除该时间段或在分析中予以说明。我们当时就发现某个变电所有半小时的数据全为NaN最终选择剔除该时段因为用前后数据插值会严重失真。异常值检测这是关键。电力参数有其物理范围比如电压不可能为负或极高。我们采用了“物理范围过滤”结合“统计方法”物理阈值直接剔除电压超过[0.9*额定电压, 1.1*额定电压]范围、电流为负值等明显错误数据。3σ原则拉依达准则对每个测点的功率序列计算其均值μ和标准差σ将超出[μ-3σ, μ3σ]范围的数据视为异常点。但要注意负荷本身可能有剧烈波动如列车启动所以需要结合业务理解。我们最终采用的方法是先对数据进行滑动平均滤波平滑掉高频噪声再对滤波后的残差应用3σ原则效果更好。可视化辅助绘制各测点功率随时间变化的曲线图。人眼对于突变的“毛刺”和长期偏离基线的“漂移”非常敏感。我们通过看图发现了一个变电所有一段时间的功率曲线呈现不自然的“平台状”怀疑是传感器饱和或故障后续分析中对该段数据的权重做了下调处理。注意数据清洗没有绝对的标准每一步操作都要记录在论文中并说明理由。这体现了建模的严谨性。2.2 特征工程与初步分析清洗后的数据才是分析的开始。我们需要从原始数据中构造出更有意义的特征。基本统计量计算每个变电所P、Q、U、I的日最大值、最小值、平均值、标准差、峰谷差。这些是描述负荷特性的最直观指标。例如平均值反映平均负荷水平标准差反映波动剧烈程度峰谷差反映调峰压力。负荷率与负载率负荷率 平均功率 / 最大功率。这个指标接近1说明负荷平稳远小于1说明负荷波动大。负载率通常指变压器 视在功率S / 额定容量可以评估设备利用率。相关性分析计算不同牵引变电所之间有功功率序列的皮尔逊相关系数。这能揭示它们是否受同一趟列车运行的影响同步性高还是各自独立供电。我们计算出的相关系数矩阵显示S1和S2的相关系数高达0.85以上而S3与其他所相关系数较低这为后续的等值分区提供了重要依据。时序特征如果数据频率足够高可以提取更精细的特征如功率上升/下降速率dP/dt这对应列车加速/制动过程。# 示例使用pandas进行基本特征计算与相关性分析 (Python思路原解题多用MATLAB) import pandas as pd import numpy as np # 假设 df 是加载并清洗后的DataFrame列包括 Time, S1_P, S2_P, S1_U, ... # 基本统计 stats df[[S1_P, S2_P, S3_P]].describe() # 计算负荷率 max_power df[[S1_P, S2_P, S3_P]].max() avg_power df[[S1_P, S2_P, S3_P]].mean() load_factor avg_power / max_power # 相关性矩阵 correlation_matrix df[[S1_P, S2_P, S3_P]].corr() print(correlation_matrix)通过这一步我们已经对系统运行状况有了一个定量的、全局的认识。接下来就要利用这些认识来指导我们的建模了。3. 牵引供电系统等值建模的核心思想与模型选择等值建模的本质是“降维”和“聚合”。高铁牵引网结构复杂包含多个变电所、分区所、AT所和长长的接触网。等值的目的是找到外部系统比如电网看进去的“入口”等效阻抗或者将内部多个关联性强的元件合并为一个等效元件。3.1 等值的常见类型与本题适用性戴维南/诺顿等值这是最经典的端口等值。将系统等值为一个电压源戴维南电压串联一个阻抗戴维南阻抗。适用于研究系统某一点如某个变电所高压侧的电压稳定性、短路电流计算。本题中如果关注的是牵引网对上级电网的影响可以采用这种等值。WARD等值、REI等值这些是网络等值用于大规模电网计算中保留边界节点消去内部节点。对于本题所给的有限节点几个变电所系统可能过于复杂不是首选。基于测量数据的等值本题核心这是我们采用的主要思路。既然我们拥有系统在多种运行状态不同负荷水平下的实时测量数据U, I, P, Q那么我们可以认为这些数据已经包含了系统的真实特性。我们可以利用这些数据反向“辨识”或“拟合”出一个等效电路的参数。3.2 我们采用的等值模型结构经过分析我们将整个牵引供电系统从上级电网接入点到牵引母线等值为一个戴维南等效电路与一个牵引负荷等效阻抗的联合模型。具体来说系统侧等值戴维南等值将上级电网和牵引变电所主变压器等值到一起看作一个理想电压源 (U_s) 和一个等效阻抗 (Z_s R_s jX_s) 串联。这个等效阻抗包含了系统短路阻抗、变压器阻抗等。负荷侧等值将波动剧烈的牵引负荷列车等值为一个时变的阻抗 (Z_l(t) R_l(t) jX_l(t)) 或功率 (S_l(t) P_l(t) jQ_l(t))。在稳态分析中我们更常用功率表示。那么从测量点假设在牵引变电所低压侧看进去的方程就是 [ \dot{U}_m \dot{U}_s - \dot{I}_m \cdot Z_s ] 其中(\dot{U}_m) 和 (\dot{I}_m) 是我们测量到的电压和电流相量需要从P, Q, U计算得出。(U_s) 和 (Z_s) 是待求的等值参数。这个模型结构简单物理意义清晰。难点在于(U_s) 在现实中也可能有轻微波动并非绝对恒定。但在短时间尺度如本题的一天数据内且上级电网较强时可以近似认为 (U_s) 恒定。这是一个重要的模型简化假设必须在论文中明确指出。4. 等值参数辨识最小二乘法的实战应用模型结构定了接下来就是用数据来“喂”出模型参数 (U_s)、(R_s)、(X_s)。这里我们采用了最小二乘法因为它直观、稳定且非常适合处理带有测量误差的数据。4.1 从测量值到相量计算我们的原始数据是标量U幅值PQ。要得到电压电流相量需要假设电压初相角。通常以测量点电压为参考设其相角为0°。这是一种常见且合理的简化因为我们关心的是相对关系。测量点电压相量(\dot{U}_m U_m \angle 0^\circ)测量点视在功率(S_m P_m jQ_m)测量点电流相量(\dot{I}_m \frac{S_m^}{\dot{U}_m^} \frac{P_m - jQ_m}{U_m}) 这里取共轭是因为功率是电压相量乘以电流相量的共轭这样我们就得到了每个时间点 (t_i) 下的 (\dot{U}_m(i)) 和 (\dot{I}_m(i))。4.2 构建最小二乘问题将电路方程 (\dot{U}m \dot{U}s - \dot{I}m \cdot Z_s) 拆分为实部和虚部。令 (\dot{U}s E \angle \delta)其实部为 (E \cos \delta)虚部为 (E \sin \delta)。令 (Z_s R_s jX_s)。 方程展开为 [ U{m,r} jU{m,i} (E \cos \delta jE \sin \delta) - (I{m,r} jI{m,i})(R_s jX_s) ] 分别令实部、虚部相等得到两个实数方程 [ \begin{cases} U_{m,r} E \cos \delta - I_{m,r} R_s I_{m,i} X_s \ U_{m,i} E \sin \delta - I_{m,i} R_s - I_{m,r} X_s \end{cases} ] 这里有4个未知参数(E, \delta, R_s, X_s)。对于第 (i) 个测量点我们可以写出 [ \begin{bmatrix} U_{m,r}(i) \ U_{m,i}(i) \end{bmatrix}\begin{bmatrix} 1 0 -I_{m,r}(i) I_{m,i}(i) \ 0 1 -I_{m,i}(i) -I_{m,r}(i) \end{bmatrix} \cdot \begin{bmatrix} E \cos \delta \ E \sin \delta \ R_s \ X_s \end{bmatrix} ] 将所有N个时间点的方程堆叠起来就形成了一个超定方程组 [ \mathbf{Y} \mathbf{H} \cdot \mathbf{\theta} ] 其中(\mathbf{Y}) 是 (2N \times 1) 的观测向量所有电压实部虚部。(\mathbf{H}) 是 (2N \times 4) 的系数矩阵。(\mathbf{\theta} [E\cos\delta, E\sin\delta, R_s, X_s]^T) 是待求参数向量。4.3 求解与结果验证使用最小二乘法求解(\mathbf{\hat{\theta}} (\mathbf{H}^T\mathbf{H})^{-1} \mathbf{H}^T \mathbf{Y})。在MATLAB中就是一句theta H \ Y。求解后可以得到 [ E \sqrt{(E\cos\delta)^2 (E\sin\delta)^2}, \quad \delta \arctan2(E\sin\delta, E\cos\delta) ] [ R_s \theta(3), \quad X_s \theta(4) ]关键技巧与踩坑点数据筛选不是所有数据点都适合用来拟合。当负荷电流 (I_m) 非常小时方程中与 (R_s, X_s) 相关的项很小会导致参数辨识病态结果不稳定。我们设置了一个电流阈值比如额定电流的10%只使用电流大于该阈值的数据点进行拟合显著提高了结果的可靠性。结果物理校验求出的 (R_s) 和 (X_s) 应该为正数且 (X_s/R_s) 比值应在合理范围内对于电网电抗通常远大于电阻。我们第一次跑出的结果 (R_s) 为负检查发现是电流相量计算时代码符号处理有误。模型验证用另一部分未参与拟合的数据比如后半天数据将测量电流代入求得的等值模型计算出预测电压 (U_{pred})再与真实测量电压 (U_{meas}) 比较。计算均方根误差RMSE和平均绝对百分比误差MAPE。我们当时的MAPE控制在2%以内说明等值模型精度良好。% 示例MATLAB中最小二乘拟合的核心代码片段 % 假设 Um_real, Um_imag, Im_real, Im_imag 都是 Nx1 的向量 N length(Um_real); H zeros(2*N, 4); Y zeros(2*N, 1); for i 1:N H(2*i-1, :) [1, 0, -Im_real(i), Im_imag(i)]; H(2*i, :) [0, 1, -Im_imag(i), -Im_real(i)]; Y(2*i-1) Um_real(i); Y(2*i) Um_imag(i); end % 求解最小二乘 theta H \ Y; % 提取参数 Ecos theta(1); Esin theta(2); Us_mag sqrt(Ecos^2 Esin^2); % 等值电源电压幅值 Us_angle atan2(Esin, Ecos); % 等值电源电压相角 Rs theta(3); Xs theta(4);5. 负荷特性聚类与分区等值如果系统中有多个牵引变电所且它们之间电气距离较远或负荷特性差异大用一个等值模型代表整个系统可能误差较大。这时就需要“分区等值”。我们之前计算的相关性矩阵就派上了用场。5.1 基于相关性/负荷曲线的聚类我们将每个变电所的日有功功率曲线视为一个高维向量维度为时间点数。然后采用聚类算法如K-means或层次聚类对这些曲线进行聚类。特征选择直接使用标准化后的功率时间序列作为特征。距离度量欧氏距离或相关系数距离1 - 相关系数。聚类结果在我们的案例中S1和S2的功率曲线形状高度相似相关系数高被聚为一类S3的曲线形态不同自成一类。这符合我们的直观认知S1和S2可能供电给同一段繁忙的干线负荷同步性强S3可能供电给一条支线或车场负荷模式不同。5.2 分区等值模型构建对于聚类后的每一类电气合并如果该类中的变电所电气上并联接入同一母线可以将它们的负荷功率直接相加视为一个“等值负荷”。分别等值以这个“等值负荷”和其对应的母线电压测量值取平均或选代表作为新的端口测量数据重复第4章的最小二乘参数辨识过程得到针对该区域的戴维南等值参数 (U_{s,cluster}, Z_{s,cluster})。网络简化如果各类区域之间还存在电气联系则需要用更简单的线路阻抗将这些等值区域连接起来形成一个简化网络。本题数据若未提供所间联络线数据此步可简化或基于典型参数假设。通过分区等值我们最终得到了一个由几个戴维南等值电源和它们之间简单连接构成的“骨架网络”。这个模型既大幅简化了原系统又保留了不同区域的主要特性用于分析区域间的相互影响、潮流分布等已经足够。6. 程序实现框架与关键代码解析整个项目的程序实现是一个从数据到结果的管道。我们当时以MATLAB为主其矩阵运算和绘图功能非常适合这类任务。这里给出一个高层次的程序框架和部分关键模块的代码思路。6.1 主程序流程框架%% 主程序 main.m clear; clc; close all; % 1. 数据加载与预处理 data load(traction_data.csv); % 假设数据已导出为csv [time, P, Q, U] preprocessData(data); % 自定义预处理函数处理缺失、异常 % 2. 基础分析与可视化 plotTimeSeries(time, P, U); % 绘制原始曲线 calculateStatistics(P, Q, U); % 计算统计量 corrMatrix calculateCorrelation(P); % 计算相关系数矩阵 plotCorrHeatmap(corrMatrix); % 绘制相关性热图 % 3. 等值参数辨识以整体等值为例 % 3.1 计算电压电流相量 [Um_real, Um_imag, Im_real, Im_imag] calculatePhasors(U, P, Q); % 3.2 筛选有效数据点大电流点 validIdx find(sqrt(Im_real.^2 Im_imag.^2) threshold); % 3.3 构建最小二乘问题并求解 [Us_mag, Us_angle, Rs, Xs] identifyThevenin(Um_real(validIdx), Um_imag(validIdx), ... Im_real(validIdx), Im_imag(validIdx)); fprintf(等值结果Us%.2f V ∠%.2f°, Rs%.4f Ω, Xs%.4f Ω\n, Us_mag, rad2deg(Us_angle), Rs, Xs); % 4. 模型验证 % 使用另一部分验证数据 [U_pred_real, U_pred_imag] simulateThevenin(Im_real_valid, Im_imag_valid, Us_mag, Us_angle, Rs, Xs); U_pred_mag sqrt(U_pred_real.^2 U_pred_imag.^2); rmse sqrt(mean((U_pred_mag - U_meas_valid).^2)); mape mean(abs((U_pred_mag - U_meas_valid) ./ U_meas_valid)) * 100; fprintf(验证集RMSE: %.3f V, MAPE: %.2f%%\n, rmse, mape); % 5. 负荷聚类与分区等值如果适用 % 5.1 聚类 [idx, centroids] performClustering(P); % P是变电所数×时间点数矩阵 % 5.2 对每个簇进行等值 for cluster_id 1:max(idx) cluster_indices find(idx cluster_id); % 合并簇内变电所数据... % 对该簇数据调用 identifyThevenin 函数... end % 6. 结果输出与绘图 plotValidationCurve(time_valid, U_meas_valid, U_pred_mag); plotEquivalentCircuitDiagram(Us_mag, Us_angle, Rs, Xs); % 绘制等值电路图 exportResultsToExcel(Us_mag, Us_angle, Rs, Xs, rmse, mape);6.2 关键函数详解identifyThevenin这是整个等值过程的核心函数。function [Us_mag, Us_angle, Rs, Xs] identifyThevenin(Um_real, Um_imag, Im_real, Im_imag) % 通过最小二乘法辨识戴维南等值参数 % 输入测量电压实部、虚部向量测量电流实部、虚部向量 % 输出等值电源电压幅值Us_mag (V)相角Us_angle (rad)等值电阻Rs (Ω)等值电抗Xs (Ω) N length(Um_real); % 构建观测向量Y Y zeros(2*N, 1); Y(1:2:end) Um_real; Y(2:2:end) Um_imag; % 构建系数矩阵H H zeros(2*N, 4); for i 1:N H(2*i-1, :) [1, 0, -Im_real(i), Im_imag(i)]; H(2*i, :) [0, 1, -Im_imag(i), -Im_real(i)]; end % 最小二乘求解 (使用伪逆更稳定) theta pinv(H) * Y; % 等价于 (H*H) \ (H*Y) % 提取参数 Ecos theta(1); Esin theta(2); Us_mag sqrt(Ecos^2 Esin^2); Us_angle atan2(Esin, Ecos); % 注意atan2返回值在[-pi, pi] Rs theta(3); Xs theta(4); % 简单的合理性检查 if Rs 0 || Xs 0 warning(辨识出的电阻或电抗为负值请检查数据或模型假设。); end end6.3 编程中的经验与教训相量计算符号这是最容易出错的地方。公式 (\dot{I} (P - jQ) / U) 中的负号-jQ源于功率计算中取电流共轭。一定要推导清楚并用一个简单例子如纯阻性负载Q0验证代码。数据单位的统一确保电压单位是伏特V功率单位是瓦W、乏Var计算出的阻抗单位才是欧姆Ω。原始数据可能是千伏kV和兆瓦MW需要统一换算。矩阵运算维度MATLAB中注意向量的行、列维度。在构建大矩阵H时索引计算要仔细建议先用小规模数据测试。结果的可视化除了最终的等值电路图一定要绘制“预测值-真实值”对比曲线。将预测电压和实测电压画在同一张图上误差一目了然。也可以用散点图画出所有数据点横轴是测量电流幅值纵轴是测量电压幅值同时画出根据等值模型计算出的“U-I”特性曲线看数据点是否分布在曲线附近。7. 论文撰写要点与模型评价延伸数学建模竞赛论文是最终呈现的载体。即使模型和程序做得再好论文写不清楚也功亏一篑。结合这道题分享几个论文撰写的关键点。7.1 论文结构建议问题重述与分析不要照抄题目要用自己的话提炼问题的核心——即“基于运行数据建立反映系统外部特性的等值模型”。分析难点在于数据量大且含噪声、负荷时变、模型需兼顾准确性与简洁性。模型假设清晰列出。例如“假设测量期间上级电网电压幅值及系统频率保持恒定”、“假设测量误差为高斯白噪声”、“忽略谐波影响仅考虑基波分量”等。合理的假设是简化模型的前提。模型建立这是核心章节。分小节阐述7.3.1 数据预处理方法与理由缺失值、异常值处理。7.3.2 负荷特性分析统计量、相关性、曲线聚类。7.3.3 等值模型选择戴维南等值与数学推导列出方程。7.3.4 参数辨识方法最小二乘法原理及在本问题中的具体应用形式。7.3.5 分区等值策略如果采用。模型求解与结果列出主要算法流程可以用流程图。给出关键中间结果如相关系数矩阵、聚类结果图。给出最终的等值参数表(U_s, R_s, X_s)。展示模型验证结果预测vs实测对比图、RMSE/MAPE误差表。模型评价与推广优点方法基于实测数据物理意义明确最小二乘法鲁棒性好模型结构简单便于后续应用。缺点/局限性假设电源电压恒定在电网波动大时误差会增加模型是线性时不变的无法反映系统非线性如变压器饱和未考虑负荷的谐波特性。改进方向可引入递推最小二乘法实现在线辨识可考虑用动态等值如考虑发电机惯性来研究暂态过程可结合更复杂的聚类算法如DBSCAN处理更复杂的负荷模式。推广该方法可推广至其他配电系统、分布式能源接入点的等值建模只要能有该点的电压电流时序数据即可。7.2 关于模型评价的深度思考在论文中除了给出误差数字还可以从以下几个角度深化模型评价敏感性分析改变用于拟合的数据段如只用上午数据、只用下午数据看等值参数的变化大不大。如果变化剧烈说明模型对运行点敏感或者系统本身在不同时段特性有变。外推能力测试用辨识出的模型去预测一个“前所未有”的大负荷场景如果数据中有这样的瞬时峰值看模型是否还能较好地预测电压跌落。这考验模型的泛化能力。与理论值的对比如果可能查找或估算该牵引变电所所在电网的典型短路容量和阻抗比将辨识出的 (X_s/R_s) 与之对比看是否在合理量级。这增加了结果的可信度。回顾整个解题过程从面对一堆冰冷的数据开始到最终构建出一个能代表系统行为的简洁数学模型这种感觉非常奇妙。它让我深刻体会到数学建模不是空中楼阁而是连接现实问题与数学工具的坚实桥梁。对于电气专业的同学这是将专业课知识电路、电机、电力系统分析用于解决实际问题的绝佳演练对于非电专业的同学这也是一个学习如何处理时序数据、建立机理与数据融合模型的经典案例。程序代码固然重要但背后每一步的思考、每一个假设的考量、每一个结果的校验才是建模工作真正的精髓。
返回列表