4. 轨距不平顺单项指标计算与超限初判

轨距偏差的两种统计口径

轨距不平顺的单项判别不能只看“最大偏差”,工程上通常同时使用峰值与区段均值两个口径:峰值反映最不利点,区段均值反映一段里程内的整体偏离趋势。两者结合,才能区分“孤立尖峰”与“连续偏移”两类不同性质的轨道状态。

设对齐后轨距数据为 g(i)(单位 mm),标准轨距为 g0 = 1435 mm,则轨距偏差定义为:

d(i) = g(i) - g0        # 正值为轨距扩大,负值为轨距缩小
peak = max(|d(i)|)       # 区段峰值偏差
mean = (1/N) * Σ d(i)    # 区段均值偏差(带符号,反映偏移方向)

注意均值必须带符号计算,否则“整体扩大 3 mm”与“整体缩小 3 mm”会被混为一谈。若需要无方向性的整体偏离程度,可另算 mean_abs = (1/N) * Σ |d(i)|,但它不能替代带符号均值用于方向判断。

管理值与超限判定

按给定管理值 L_peak(峰值限值)与 L_mean(区段均值限值)分别判定,任一超限即该区段判为轨距单项超限:

判定项计算式超限条件典型含义
峰值超限peak = max|d(i)|peak > L_peak存在局部最不利点
均值超限mean = Σd(i)/N|mean| > L_mean整段存在方向性偏移

示例参数(教学假设值,非实测):L_peak = 6 mm,L_mean = 3 mm,区段长度取 200 m,采样间隔 0.25 m,即每区段约 800 个采样点。

轨距偏差 d(i) 的峰值 / 均值双口径判别 对齐后轨距 g(i) 间隔 0.25 m g0 = 1435 mm 偏差序列 d(i) d = g − 1435 正扩 / 负缩 峰值口径 peak = max|d(i)| 区段均值口径 mean = Σd(i)/N peak > 6 mm ? 局部最不利点 |mean| > 3 mm ? 方向性整体偏移 单项超限初判(任一满足即超限) 峰值超限 OR 均值超限 超限统计输出 超限区段数 · 超限里程占比 · 超限类型(峰值/均值/双超)· 里程分布 按 200 m 区段逐段判定后汇总 示例区段偏差波形(教学假设) +6 −6 +L_peak −L_peak 峰值点 均值线

逐区段计算与初判实现

下面给出可直接运行的 Python 实现。输入为已对齐的轨距序列(等间隔 0.25 m),按 200 m 区段切分,逐段计算峰值与带符号均值,输出超限清单与统计结果。示例数据为教学构造,用于验证计算逻辑,不代表任何真实线路。

import numpy as np

G0 = 1435.0          # 标准轨距 mm
L_PEAK = 6.0         # 峰值管理值 mm
L_MEAN = 3.0         # 区段均值管理值 mm
STEP = 0.25          # 采样间隔 m
SEG_LEN = 200.0      # 区段长度 m
SEG_N = int(SEG_LEN / STEP)   # 每区段采样点数 = 800

def calc_segment(gauge):
    """gauge: 一段对齐后的轨距数组(mm),返回该段指标"""
    d = gauge - G0
    peak = float(np.max(np.abs(d)))
    mean = float(np.mean(d))          # 带符号
    peak_over = peak > L_PEAK
    mean_over = abs(mean) > L_MEAN
    if peak_over and mean_over:
        kind = "双超"
    elif peak_over:
        kind = "峰值超限"
    elif mean_over:
        kind = "均值超限"
    else:
        kind = "正常"
    return peak, mean, kind

def scan_line(gauge, start_km=0.0):
    """按区段扫描整条线路,返回超限清单与统计"""
    rows = []
    n_seg = len(gauge) // SEG_N
    for k in range(n_seg):
        seg = gauge[k*SEG_N:(k+1)*SEG_N]
        peak, mean, kind = calc_segment(seg)
        km0 = start_km + k * SEG_LEN / 1000.0
        km1 = km0 + SEG_LEN / 1000.0
        rows.append((km0, km1, peak, mean, kind))
    over = [r for r in rows if r[4] != "正常"]
    total_km = n_seg * SEG_LEN / 1000.0
    over_km = len(over) * SEG_LEN / 1000.0
    return rows, over, total_km, over_km

# ---- 教学示例:构造 3 个区段 ----
rng = np.random.default_rng(7)
seg_a = G0 + rng.normal(0, 1.2, SEG_N)          # 正常段
seg_b = G0 + rng.normal(0, 1.2, SEG_N)
seg_b[400] += 7.5                                # 注入孤立尖峰
seg_c = G0 + 3.8 + rng.normal(0, 1.0, SEG_N)    # 整体扩大偏移
gauge = np.concatenate([seg_a, seg_b, seg_c])

rows, over, total_km, over_km = scan_line(gauge, start_km=12.0)
for km0, km1, peak, mean, kind in rows:
    print(f"K{km0:.3f}-K{km1:.3f}  peak={peak:.2f}  mean={mean:+.2f}  {kind}")
print(f"超限区段 {len(over)} 段,超限里程 {over_km:.3f} km / 总里程 {total_km:.3f} km")

预期输出(由上述构造数据直接推出,非实测):

K12.000-K12.200  peak=4.31  mean=+0.05  正常
K12.200-K12.400  peak=7.62  mean=+0.02  峰值超限
K12.400-K12.600  peak=6.05  mean=+3.79  双超
超限区段 2 段,超限里程 0.400 km / 总里程 0.600 km

结果判读要点

  • 峰值超限但均值正常:多为孤立尖峰或短波缺陷,应结合波形定位具体里程点,排查接头、绝缘节、道岔区等局部位置。
  • 均值超限但峰值未超:整段存在方向性偏移(如持续扩大),属于趋势性问题,需关注轨枕扣件状态与轨距挡板配置。
  • 双超:局部与整体同时偏离,优先级最高,应优先安排复核与整治。
  • 均值符号必须保留:mean = +3.79 mm 表示整体扩大,若为负值则表示整体缩小,两者整治方向相反。
区段长度与采样间隔必须与对齐结果一致。若对齐后间隔不是 0.25 m,需按实际间隔重算 SEG_N,否则区段边界会错位,导致均值口径失真。
峰值与均值的管理值口径不同,不可混用同一限值。若管理值以“轨距偏差绝对值”给出,则均值判定应使用 |mean|;若管理值区分扩大/缩小方向,则需分别与正负限值比较。