CC session b0a6e834
技 术 汇 报

供水管网漏损定位

压 力 指 纹 法
M 块在线压力表的读数 → 全网候选漏损管道的概率排名(top-K)。 本页 28 节按 30 分钟汇报节奏组织(§N/28 为进度标记),从水力学第一性原理推到装表决策; 两处 live 演示的数字全部现场计算,可当场重跑验证。
⚠️ 口径声明:本页全部数字出自 6 节点教学演示网(1 水库 40 m 水头 / 6 节点 / 7 管)的合成实验, 用于讲清方法机理与装表规律,不是任何实际管网的实测成绩。单漏点假设;测量噪声按 σ=0.02 m(±2 cm 表精度)合成。

§1/28汇报要回答的三个问题

供水管网漏损治理里,"哪里在漏"是最贵的一问:漏点埋在地下,全网逐段开挖排查不现实。本次汇报讲一个用在线压力监测缩小排查范围的方法——压力指纹法,围绕三个问题展开:

  1. 原理:为什么几块压力表的读数里,藏着漏点位置的信息?(§3–§16,从水力学第一性原理一步步推)
  2. 能力:这个方法能定位到什么程度、什么时候会失手?(§17–§21,含 live 演示与平局案例)
  3. 决策:装几块表、装在哪,够用又不浪费?(§22–§25,装表阶梯 Monte Carlo 现场实验)

方法链条上每个数字都可溯源:全程用一张 6 节点教学演示网算到底,所有中间量(阻力系数、流量分配、压降、相关系数、概率)都摆在页面上,专家可以拿计算器抽验任何一格。

§2/28汇报路线:七章怎么走

内容回答什么
A问题定义定位环节在漏损治理链条里的位置;输入输出的数学形式§3–4
B演示网与水力学6 节点演示网全参数;从 Hazen-Williams 一根管,推到有漏工况 16 条方程的联立解§5–9
C指纹库什么是漏损"指纹";7×6 指纹表怎么来、怎么读;为什么只用压力§10–12
D匹配算法残差 → 去均值 Pearson → softmax 全链手算;live 演示一;平局的含义§13–18
E精度与自由度M 块表只有 M−1 维;哪些候选天生分不开;P0 盲区§19–21
F装表决策表数 6→1 的性能阶梯(live Monte Carlo);三个拐点;第 4 块表加哪§22–25
G边界与结论方法的诚实边界;四条结论;备查问答§26–28

推导链环环相扣但每节自足:赶时间可以只走 A → C → D(§17) → F(§23) → G 的演示主线,B 章水力学推导供质询时回溯。

A
问题定义
§3–§4 · 定位环节在哪、输入输出是什么

§3/28漏损排查是一条漏斗,本法站在中段

漏损治理的完整链条是一条逐级收窄的漏斗,每级用的物理量和设备都不同:

① 发现有没有漏、漏多少 总分表流量对账 / DMA 夜间最小流量分析——"总账"对不上就是有漏。用的是流量
② 定位(本法)漏在哪根管 压力指纹匹配:全网候选 → top-K 概率清单,把排查范围从全网缩到两三根管。用的是压力
③ 定桩漏在管上哪一米 听漏仪 / 噪声相关仪沿候选管精确定桩号。用的是声学
④ 修复开挖修复 范围已缩到米级,开挖成本可控

压力和流量在这条漏斗里分工明确、互不替代

流量(总表对账)压力(多点模式)
回答的问题有没有漏、漏多少(发现)漏在哪根管(定位)
信息形态一个总量,无空间分布压降的空间分布,位置信息的载体
设备经济性流量计贵,只装进出口边界压力表便宜,可铺在管网内部
盲区定不了位(边界只有总量)总管类均匀降压漏损(§21)

所以"为什么定位只用压力不用流量"的第一层答案是分工:流量已经在①把"有漏"确认了,②要的是空间信息,而空间信息只在密布的压力表上。更深一层的物理答案在 §12。

§4/28问题的数学形式:读数进,概率排名出

把定位问题写成算式,输入输出都很小:

输入:M 个压力表读数 p实测 ∈ ℝM(单位 m)  → 输出:N 个候选漏点的概率 [P1, …, PN],取 top-K (本演示网 M=3、N=7;真实问题里 N 是候选管段数)

为什么输出是概率排名,不是一个坐标?三个原因:

方法全链只有四步:建指纹库(离线一次)→ 算残差 → 去均值 Pearson 匹配 → softmax 概率。往下 B、C、D 三章把每一步的数字算到底。

B
演示网与水力学最小集
§5–§9 · 从一根管的 Hazen-Williams 推到漏损工况 16 条方程

§5/28演示网全参数:6 节点 / 7 管 / 1 水库

拓扑(P0 总管进网,P1–P6 成环)

■ 水厂 = 水库边界,恒定水头 40.00 m(唯一压力边界)。每个节点用户用水 0.004 m³/s(≈每秒 4 升),全网合计 0.024 m³/s。节点高程全部取 0 —— 于是水头 H = 压力表读数 p,后文两词通用。管线粗细按管径。

管道参数与阻力系数 R(糙率 C=100 全网统一)

连接长 L (m)径 D (m)R(m/(m³/s)1.852
P0水厂–J1(总管)1500.30111.4
P1J1–J22500.25451.5
P2J2–J34000.202 141.8
P3J3–J42000.154 348.4
P4J4–J55000.1510 871
P5J5–J63000.201 606.4
P6J6–J11800.25325.0
R 由 §6 的公式逐根算出。注意管径的威力(D 的 −4.871 次方):P4 与 P0 一细一粗,R 差近百倍——这正是后面"压降空间分布不均匀"的物理来源。监测集 = J1/J3/J5 三块压力表(演示里可切 4 表 / 6 表)。

选这张小网做全程算例,是刻意的:它小到每个数字都能手算跟仿真对账(B 章会当场对),又大到具备真实管网的关键结构——环状供水(水能绕两条路走)、管径差异、总管与末梢的区别。方法在这张网上讲清了,规模放大只是把矩阵变大,链条一步不变。

§6/28水力学最小集:一根管的过路费公式

整个方法只依赖一条水力学经验公式。水在管里流动要跟管壁摩擦,能量沿程消耗,表现为水头(= 压力,本网高程全 0)一路变小。一根管消耗的水头叫沿程损失 h,自来水行业用 Hazen-Williams 公式:

h = R · Q1.852R = 10.667 · C−1.852 · D−4.871 · L (SI 单位:Q 用 m³/s、D/L 用 m,h 出 m;常数 10.667 只在 SI 下成立,R 的量纲为 m/(m³/s)1.852。指数 1.852:流量翻倍,损失变 21.852=3.61 倍——湍流摩擦的非线性)

拿总管 P0 从头算一遍(L=150 m,D=0.30 m,C=100;水库 40 m;全网用水 0.024 m³/s 全部经它进网):

算式结果
R = 10.667 × 100⁻¹·⁸⁵² × 0.30⁻⁴·⁸⁷¹ × 150 = 10.667 × 0.0001977 × 352.3 × 150R = 111.4
h = 111.4 × 0.024¹·⁸⁵² = 111.4 × 0.001000h = 0.111 m
H(J1) = 40 − 0.11139.889 m

三步之外没有别的了——J1 处压力表就该读 39.889 m。感受一下非线性:用水翻倍到 0.048 m³/s,损失变 111.4 × 0.0481.852 = 0.402 m,是 0.111 m 的 3.61 倍而不是 2 倍。这个非线性决定了整网方程组没有解析解,只能迭代(§9)。

再加一条常识就够用了——节点守恒:节点不存水,任一时刻"流进 = 流出 + 该点用户用掉"。一条公式一条常识,就是全部水力学。

§7/28基线工况:13 个未知数,手算解出与仿真对账

没漏水时全网什么状态?未知数 = 6 个节点水头 + 7 根管流量 = 13 个。三步吃掉:

试 q (m³/s)上路合计 (m)下路合计 (m)判断
0.0080.1370.694上路损失小太多 → 水还会往上路挤 → q 应更大
0.0120.5630.101挤过头 → q 应更小
0.0100.2970.297两路相等 ✓(精确根 0.0099975,手算取 0.010)

流量全知道了,从水库 40 m 沿管逐段减损失(每行就是 §6 的三步):

求谁路径h 代入式手算 H (m)仿真值 (m)
J140 − h([email protected])111.4×0.001000 = 0.11139.88939.8885
J2J1 − h([email protected])451.5×0.000198 = 0.08939.80039.7993
J3J2 − h([email protected])2141.8×0.0000768 = 0.16439.63639.6350
J6J1 − h([email protected])325.0×0.000198 = 0.06439.82539.8242
J5J6 − h([email protected])1606.4×0.0000768 = 0.12339.70239.7008
J4J5 − h([email protected])10871×0.0000100 = 0.10939.59339.5915

手算与仿真最大差 0.002 m,全部来自展示舍入(q 取 0.010 而非 0.0099975、每行 h 只留 3 位);取满精度重走这条链,六个节点四位小数逐位等于仿真值——手算和仿真解的是同一套方程,模型没有黑箱。带走一行数,三块表(J1/J3/J5)看到的基线:

基线 = [ 39.889, 39.635, 39.701 ] m(后文全部用仿真精确值。漏水检测的全部游戏 = 拿新读数跟这行数相减)

§8/28漏损怎么建模:劈管开洞,漏量是解出来的

模型里的管是一条线,线上没法直接开洞,所以做小手术(代码里叫 split_pipe):把管从中点劈成两半,劈点生成一个虚拟节点 LEAK,洞开在它身上。以 P5(J5–J6,300 m)为例:

改造前:J6 ────P5(300 m)──── J5 ⇒ 改造后:J6 ──P5_B(150 m)── LEAK ──P5(150 m)── J5 (劈管连带 R 减半:1606.4 ÷ 2 = 803.2 每段。洞的参数只有两个:面积 A = 0.001 m²(孔径 ≈3.6 cm)、流量系数 Cd = 0.75)

洞往外喷多少水?托里拆利结论——孔口喷速 = 从"压力水头那么高"自由落体的末速度 v = √(2gp),流量 = 速度 × 面积 × 折减系数:

Qleak = Cd · A · √(2 g pLEAK) (高中物理即可导出。关键:pLEAK 是未知数——洞开了之后那点压力多少,得解出来才知道,所以 Qleak 也是未知数)
这里有个常被问的点:不需要告诉模型"漏多少水"。你给的只有洞的几何(A、Cd),漏量由漏点压力经孔口方程在联立求解中自己算出来。同时,因为漏量、用水量都随压力变化,仿真必须用压力驱动(PDA)模式:漏水压降 → 压降反过来抑制漏量和出水量 → 再影响压力,这个反馈闭环只有 PDA 能表达(需水按 Wagner 三段式:压力 ≥21 m 足额、≤3.5 m 断流、中间按 ((p−3.5)/17.5)0.55 折减;本网压力全程 38 m 以上,折减不激活,但方程始终在系统里)。

§9/28漏损工况解:16 条方程联立,验证后得到压降 Δp

P5 开洞后,未知数变 16 个:7 个节点水头(含 HLEAK)+ 8 根管流量(P5 劈成两段)+ 1 个漏量。方程恰好 16 条:7 条节点守恒 + 8 条管道能量(§6 公式)+ 1 条漏口方程(§8),恰好封闭。非线性来自 1.852 次方和开根号,没有解析解——仿真里用 Newton 迭代(跟 §7 的"试算逼近"是同一件事的机器版)。收敛解的关键数字:

读出什么
漏量 Qleak0.02063 m³/s≈ 全网正常用水 0.024 的 86%——教学上故意开的大洞,信号明显
漏点压力 HLEAK38.5529 m代回洞方程验证:√(19.62×38.5529)=27.50 m/s(喷速≈99 km/h),0.75×0.001×27.50=0.02063 ✓ 漏量确实是从压力算出来的
总管流量 QP00.04463 m³/s= 0.024 + 0.02063:水厂多供出漏掉的份;总管损失从 0.111 涨到 0.352 m
P5 段流向0.00178(J5→LEAK)远路的水掉头倒流反向给洞送水(基线里本是 J6→J5)——流向不是设定的,是解出来的

16 条方程逐条代回全部闭合(能量方程 ±0.0003 m 零头为表值舍入)。把漏后压力与 §7 基线逐节点相减,得到本章的最终产物——压降向量 Δp

J1J2J3J4J5J6
基线 (m)39.88939.79939.63539.59239.70139.824
P5 漏后 (m)39.64839.47739.03638.67938.54639.260
Δp (m)0.2400.3220.5990.9131.1540.564

规律一眼可见:离洞越近降得越多(洞在 J5–J6 之间,J5 降 1.154 m 最狠;J1 挨着水厂只降 0.240 m)。压降的这种空间分布模式,就是下一章说的"指纹"。

C
指纹库
§10–§12 · 每根管漏水长什么样,先仿真存档

§10/28指纹库:把"每根管漏水的样子"离线算好存档

§9 对 P5 干的事——注漏、解方程、跟基线相减得 Δp 行——对每根候选管重复一遍,把 7 行 Δp 摞成一张矩阵,就是指纹库:

S ∈ ℝN×M, Sij = 第 i 根管漏水时,第 j 个节点的压降 (m) (本网 N=7 候选 × 全部 6 节点先算满;装几块表 = 匹配时给矩阵遮住几列,§22 的实验设计正基于此)

三个工程属性值得强调:

§11/287×6 指纹表全览:三条读表规律

指纹库 S(7 管 × 6 节点,每格 = 该管漏时该节点压降 Δp,单位 m · 机算)

读这张表读出三条规律,后面全部结论都从它长出来:

  1. 每行一个"地形":P3 漏时 J4 降 2.509 m 最狠(紧挨着),J1 只降 0.234 m——距离衰减在每行都成立。行与行"地形"不同,这就是可区分性的来源。
  2. 有些行长得像:P5 行与 P6 行都是"J5/J6 一侧多降、J1 一侧少降"的地形,只差幅度——§18 的平局已在这张表里埋下伏笔。
  3. P0 行是平的:总管漏水让六个节点均匀各降 0.123 m。均匀 = 没有空间模式 = 后续任何匹配都无从下手(§21 专门讲这个结构性盲区)。

§12/28指纹的物理:压降模式是流量重分配的"影子"

§3 从分工角度回答了"为什么只用压力";这里给物理层面的答案,质询时更硬。

漏水这件事在管网里的完整因果链是:洞出现 → 管段流量重新分配(水厂多供、各管流量按阻力重新分摊、有的管甚至倒流,§9 的流量列全看到了)→ 每根管流量变了,沿程损失 h=R·Q1.852 就变了 → 各节点水头跟着变。也就是说:

压降的空间模式 = 流量重分配经能量方程投影出来的"影子"。拿压力做匹配,不是放弃了流量信息,而是流量变化的空间信息已经被能量方程编码进压力场——用便宜的压力表读到了贵的流量计才能直接测的东西。

反过来问:直接测流量不是更直接吗?两个现实障碍——流量计贵一个量级以上,密布不经济;而装在边界的流量计只有总量(§3 表),总量只回答"漏多少",永远回答不了"漏在哪"。压力表便宜、可密布,密布才有空间分辨率。

所以本法的信息路径是:流量重分配(真相)→ 压力场变化(影子)→ 指纹匹配(从影子反推真相的位置)。D 章讲怎么从影子反推。

D
匹配算法
§13–§18 · 残差 → 去均值 Pearson → softmax,全链手算 + live 演示

§13/28在线第一步:残差 r,三个减法

现在切换到在线时刻:P5 真的漏了(我们假装不知道),三块表传回读数。第一步把读数变成残差——基线减实测:

基线 (m)(§7)实测 (m)(§9 收敛解)残差 r = 基线 − 实测 (m)
J139.88939.6480.240
J339.63539.0360.599
J539.70138.5461.154
r = [ 0.240, 0.599, 1.154 ] m(教学口径用零噪声"完美实测"= §9 收敛解直取三表位置;真实工程中实测来自在线压力表,带噪声——噪声的影响 §22 的实验会量化)

接下来的问题就一句话:指纹库 7 行里,哪行长得最像 r?注意 r 恰好就是 §11 表里 P5 那行的 J1/J3/J5 三列——零噪声下真值行跟残差是同一个向量,这是自洽性的基本检验;匹配算法的任务是把这个"最像"量化成分数,并给其余 6 行也打出分。

§14/28为什么不能直接比:共模淹没差异,先去均值

最朴素的想法是拿 r 跟每行算夹角余弦(cosine 相似度),谁大谁像。这样做会失败:漏水让三块表全都在降(r 三个分量全正),指纹库每行也全正——所有向量都朝着"全降"这个大方向,谁跟谁的余弦都 >0.95,全体"很像",等于没比。信号处理里这叫共模分量淹没差模分量

解法是先去均值:把"大家都在降"的公共部分减掉,只留"谁比平均多降、谁比平均少降"的相对模式:

r 的均值 = (0.240 + 0.599 + 1.154) / 3 = 0.664 ⇒ r̃ = r − 0.664 = [ −0.424, −0.066, +0.490 ] (读出来就一句话:"J1 比平均少降 0.42,J5 比平均多降 0.49"——这才是位置的签名,跟漏多大无关)

去均值的第二重红利是尺度不变:漏口变大,r 整体近似等比放大,去均值再归一后方向不变——所以匹配不需要预知漏口大小,一套指纹库对付各种规模的漏(§10 第二条工程属性的算法侧保障)。代价也在这一步埋下:去均值吃掉一个自由度,M 块表只剩 M−1 维(§19 细算这笔账)。

§15/28去均值后的余弦 = Pearson 相关,手算一行给你看

指纹库每行 Si 同样去均值(记 S̃i),跟 r̃ 算夹角余弦——这个量在统计里就叫 Pearson 相关系数:

scorei = · i ‖ ‖i ∈ [−1, +1] (分子 m²、分母 m×m,单位约掉 → score 无量纲——量纲层面再次印证:匹配只看模式方向,不看漏多大)

拿 P6 这行完整手算一遍(挑它是因为结果最出人意料,计算器可全程跟):

算式结果
P6 指纹(J1/J3/J5 列)= [0.243, 0.306, 0.420],均值 0.323,去均值P6 = [−0.080, −0.017, +0.097]
点积 = (−0.080)(−0.424) + (−0.017)(−0.066) + (0.097)(0.490) = 0.0339 + 0.0011 + 0.04750.0826
‖S̃P6‖ = √(0.080²+0.017²+0.097²) = 0.1267;‖r̃‖ = √(0.424²+0.066²+0.490²) = 0.65140.1267 × 0.6514
score = 0.0826 ÷ (0.1267 × 0.6514)≈ 0.999

注意这个 0.999:P6 根本没漏,它跟残差的相关竟然接近满分。原因是 P6 的去均值方向("J1 少降、J5 多降")跟真凶 P5 几乎同款,只差幅度——而幅度恰恰被尺度不变性抹掉了。这不是算错,是三块表视角下两根管物理上就长一样,§18、§19 把这件事的后果和根源讲透。

§16/28softmax:把 7 个分数变成 7 个概率,全表摆出

Pi = eβ·scorei Σj eβ·scorej ,β = 8 (β 是把"分数差"放大成"概率差"的显示旋钮:单调变换不改排序,只改置信度的显示对比度。本例 P5 与 P4 分差 0.23,经 e8×0.23≈6.3 倍放大后呈现 46% : 7.5%。工程上若要输出校准概率,β 应由历史验证数据标定)

七根管全部算完(去均值指纹、Pearson、e8·score、softmax 概率,一列不落——05 卡手算口径,中间量保留 3 位小数):

去均值指纹 S̃ (m)Pearsone8·scoresoftmax 概率
P0[0, 0, 0] ← 平指纹归零~0 ⁽*⁾1.10.0%
P1[−0.097, +0.134, −0.037]+0.1262.70.0%
P2[−0.495, +0.712, −0.217]+0.0982.20.0%
P3[−0.689, +0.855, −0.166]+0.2155.60.1%
P4[−0.624, +0.335, +0.289]+0.772479.77.5%
P5[−0.424, −0.066, +0.490]+1.0002981.046.4%
P6[−0.080, −0.017, +0.097]+0.9992958.746.0%
Σ = 6431100%

三个读表点:P5 满分 1.000——零噪声下真值行跟残差就是同一向量,理所应当;P2/P3 直接出局——它们的签名是"J3 比平均多降",跟 r 的"J3 略少降"方向拧着,匹配真的在看模式方向;⁽*⁾P0 的 Pearson 严格说无定义(零向量没有方向),代码分母加 1e-12 除零保护后输出浮点残渣,工程上当 0——总管漏对本方法彻底隐身。

§17/28live 演示一 · 单次定位:点哪根管漏,看概率条怎么指认

下面把 §13–§16 的整条链做成活的:左图点任意管道 = 该管漏水(零噪声理想工况),右侧实时跑完整匹配(残差 → 去均值 Pearson → softmax)。切装表方案,看同一处漏、不同表数下"指认能力"的差别——每次点击,右边概率条都是当场重算的,不是预存的图片。

管网(点管道设漏点 · 节点标注该工况压降 Δp)

装表方案:
■ 蓝方块 = 水厂(水库 40 m 水头) ▼ 黄三角 = 在线压力表 红管 = 当前漏损管 节点色深 = 压降大

反演输出:7 根管概率排名(实时计算)

汇报演示脚本(照此点三下):
  1. 3 表方案下点 P5 → P5/P6 打成 46.3% : 46.0% 平局(两指纹 Pearson 0.999,名义命中、实际掷硬币)※
  2. 4 表(+J6) → P5 独占 83.4%,一块表拆开一对混淆
  3. P0(总管) → 任何表数下概率条全趴平:结构性盲区要靠流量对账兜底
※ §16 手算口径为 46.4% : 46.0%(中间量保留 3 位小数所致);本页 live 为全程机算 46.3%,两者互证。

§18/28平局怎么读:名义命中 = 掷硬币,置信度就是产品

3 表下 P5 真漏,输出 46.3% : 46.0%。两种读法,差别巨大:

把两根管的去均值指纹并排放(06 卡 §1),平局的物理一目了然:

去均值指纹(J1/J3/J5,m)方向读出来
P5[−0.424, −0.066, +0.490]"J1 少降、J5 多降"
P6[−0.080, −0.017, +0.097]"J1 少降、J5 多降"——同款方向,只差幅度

两方向 Pearson = 0.9991。物理原因:P5(J5–J6)和 P6(J6–J1)都挂在环的左下角,从三块表的视角看,它俩漏水激起的相对模式几乎一样,而幅度差异恰被尺度不变性抹掉。三块表物理上就分不开它俩,46:46 是诚实的输出——这正是 §4 说"输出必须带置信度"的活例证:概率排名把"我不确定"如实说了出来,一个只报坐标的黑箱在这里会假装自信。为什么恰恰是三块表分不开、加哪块表能分开?这是下一章自由度的账。

E
精度与自由度
§19–§21 · M 块表只有 M−1 维;哪些候选天生分不开

§19/28自由度的账:M 块表,只有 M−1 维分辨空间

§14 的去均值不是免费的:M 个读数减掉公共均值后,分量之和恒等于 0——向量被压进一个 M−1 维子空间。这笔账决定了方法的信息上限:

表数 M去均值后维度 M−1几何图景
327 根管的指纹方向挤在一张 2 维平面上——必然有人挤在一起
21只剩一条数轴,每个指纹退化成一个比值("J1 和 J5 谁多降")
10一个数减自身均值恒为 0,残差成零向量——数学上恒失明,不是"更模糊"

本网 3 表 = 2 维平面要摆 7 个方向,挤出的重合不止一对(§20 的明细表会看到是两组)。撞上的 P5/P6 就是 §18 的平局。这个账同时给出破局思路:加表 = 升维,把挤在一起的方向撑开。§18 平局里 P5、P6 的差异藏在 J6 列(指纹表 §11:0.564 vs 0.452 m),而 J6 恰好没装表——装上,指纹从 3 维变 4 维,新维度上两根管一个 −0.075、一个 +0.096(一负一正,方向劈开),Pearson 从 0.9991 掉到 0.657,输出从 46:46 变成 P5 独占 83.4%。维度不够,算法再花哨也分不开共线的候选;这是信息论限制,不是算法缺陷。

§20/28逐工况明细:3 表的盲区比"P5/P6"更大

把 7 根管逐一设为真漏,零噪声下看 top-1 置信度和领先幅度(3 表 vs 6 表全装,07 卡 §4):

真漏3 表基准(J1/J3/J5)6 表全装
P014.3%(0.0 pp,失明)14.3%(0.0 pp,失明)
P132.5%(0.1 pp85.9%(74.9 pp)
P232.9%(0.1 pp53.1%(22.6 pp)
P332.3%(1.1 pp44.8%(17.3 pp)
P459.4%(48.6 pp)52.5%(20.2 pp)
P546.3%(0.3 pp83.3%(74.6 pp)
P647.0%(0.3 pp92.6%(85.4 pp)

重要发现:3 表下打平的不止 P5/P6——上路 P1/P2/P3 是三胞胎,彼此领先只有 0.1 pp。2 维平面挤 7 个方向,挤出的重合同时发生在两组候选身上。这张明细表也是 §25"第 4 块表加哪"的决策输入:加表方案的取舍,本质是在"拆 P5/P6"和"拆上路三胞胎"之间分配一个新维度。另外注意 6 表下 P4 的置信反而比 3 表低(52.5 < 59.4)——置信度是相对量,加表改变的是所有候选间的相对几何,个别工况的显示置信可以降,但命中能力(§23 的噪声命中率)不降。

§21/28P0 盲区:信息论上的必然,用流量对账兜底

指纹表里 P0(总管)那行是平的:六个节点均匀各降 0.123 m。均匀降压去均值后成零向量——没有空间模式可供任何匹配算法区分。这不是算法缺陷,是信息论上的必然:总管站在水源与全网之间,它漏水等于"全网水源水头集体下移",每个节点感受完全一样,装多少块压力表都一样失明。

兜底手段回到漏斗第①级:总管漏水虽然在压力"模式"上隐身,在流量"总账"上却无处遁形——水厂供水量激增而各分区计量没有对应增长,DMA 夜间最小流量分析立刻暴露。所以完整的漏损监测方案必然是两条腿:

漏损类型压力指纹法流量对账(DMA)
支管/环内管漏(有空间模式)✔ 定位到管✔ 发现有漏,定不了位
总管类均匀降压漏✘ 结构性失明✔ 总账立刻暴露

两法覆盖的盲区恰好互补——这也是"压力定位 + 流量发现"作为组合拳而非二选一的根本理由(结论 §27 第 4 条)。

F
装表决策
§22–§25 · 装几块、装在哪:现场 Monte Carlo 给出整条阶梯

§22/28装表阶梯的实验设计:指纹库不变,只遮列

前面所有分析都指向同一个工程问题:装几块表够用?回答它需要一个干净的对照实验。设计如下(每个要素都有明确理由):

实验要素设定为什么这么设
指纹库§11 的 7×6 表,全程不变仿真时 6 个节点压降全算出来了;"装几块表"= 匹配时遮住几列。变量唯一,归因干净
匹配算法去均值 Pearson + softmax β=8,与 §15–16 一字不差算法不变,性能差异全部归因于表数/表位
噪声每个监测值叠 N(0, σ=0.02 m)±2 cm 是常规在线压力表的精度量级;不加噪声的命中率会虚高(平局也算"命中")
试验量每工况 500 次独立加噪500 次的二项波动约 ±2 pp,足以分辨档位间的真差异
加表序列嵌套:J5 ⊂ J1/J5 ⊂ J1/J3/J5(基准) ⊂ +J6 ⊂ +J2 ⊂ +J4逐档只动一块表,曲线上每一段落差都能归因到"这一块"
统计口径top-1 / top-3 命中率,除 P0(真漏取 P1–P6)P0 任何表数下恒失明(§21),混进来只会给所有档位垫一个常数损失,模糊对比

指标读法:top-1 = 第一嫌疑就是真凶的比例;top-3 = 真凶进前三的比例——对应漏斗第③级"沿前三根管听漏"的实际工作量。pp = 百分点,两个百分数相减的绝对差。

§23/28live 演示二 · 装表数量 vs 定位准确度(现场 Monte Carlo)

下面的数字不是预存的:点"现场跑",浏览器当场对 6 档表数 × 6 个真漏工况 × 500 次加噪试验做完整匹配统计(共 18 000 次反演),随机数种子显示在旁边,换一批随机数重跑,结果应在参考值 ±3 pp 内复现——这就是"数字不是编的"的现场证据

阶梯结果表(现场值 vs 原理卡参考值)

参考值 = 原理卡《07_装表数量阶梯》§1(numpy 独立实现,seed=42);现场值 = 本页 JS 引擎(mulberry32 PRNG,种子见上)。 两套实现随机数流不同,命中率应在参考值 ±3 个百分点内相互印证(500 次试验的二项波动)——差值列绿色即达标。 零噪声 P5 置信列为确定性计算,与参考值逐位一致。1–2 表档的 top-1 ≈ 16.7% = 1/6 纯猜水平(并列候选里怎么挑都一样,本页并列打破规则与参考实现对齐:取索引大者)。

阶梯曲线(实线 = 现场 · 虚线 = 参考)

读图:绿线(top-3)在 3 表处已到 100%——三块表对"缩小到三根管排查"已经够用;蓝线(top-1)到 5 表才封顶。两线之间的落差,就是"要不要精确到一根管"的装表成本。

§24/28阶梯上的三个拐点:选表数的全部要点

  1. 3 → 2 是悬崖,不是缓坡。3 表还有 2 维可用(除 P0 top-1 70.5%,top-3 兜底 100%);2 表只剩 1 维——去均值后每个指纹退化成"J1 和 J5 谁多降"一个比值,top-1 直接塌到 16.7%(≈1/6 纯猜),top-3 都只剩 50%。往下减表不是渐进降级,是断崖失能。
  2. 1 表 = 数学上恒失明,不是"更模糊"。一个数减自身均值恒等于 0,残差成零向量,跟任何指纹都算不出相似度——概率条永远平分 1/7。单表能做的只有"压力比平时低了"的告警,定位能力严格为零。这条给出压力监测点数的绝对下限:想参与定位,至少两块,想有实用精度,至少三块。
  3. 第 6 块表(J4)白装。5 表和 6 表的噪声命中率一模一样(除 P0 均 100%)——J4 的信息被 J3/J5 两侧夹着,基本冗余。表不是越多越好,够拆开所有混淆对就到顶了,之后每块都是纯成本。
把三个拐点连起来读,就是装表数量的决策法则:从下限往上加,每加一块问一句"它拆开了哪对混淆"——拆得开就加,拆不开就停。本演示网的答案是 4 块(top-1 81.6%、top-3 100%);答案的具体数值随管网变,但"边际收益递减 + 明确到顶点"的曲线形状是普适的,这条曲线本身就是装表数量论证的方法论。

§25/28第 4 块表加哪:位置 > 数量,且"最优"取决于你怕混哪对

固定 3 表基准,第 4 块表的三种加法(全部机算;07 卡 §3):

方案真漏 P5:置信 / 领先噪声 top-1(除P0)拆开了谁没拆开谁
+J683.4% / 72.6 pp81.6%P5/P6(0.3 pp → 72.6 pp)上路 P1/P2/P3 仍挤
+J245.0% / 0.3 pp88.5%上路三胞胎P5/P6 仍掷硬币
+J450.3% / 4.6 pp87.5%上路三胞胎(部分)P5/P6 基本仍混

三个方案给出三种截然不同的性格:+J6 专治 P5/P6(§19 讲过的那个新维度),但对上路三胞胎帮不上;+J2 的平均命中率反而最高(88.5%),可 P5/P6 照样掷硬币;+J4 居中両不沾。没有免费的万能第 4 块——同样花一块表的钱,加对位置与加错位置,对目标混淆对是 72.6 pp 与 4.6 pp 的天壤之别。

这就把装表点位优化的正确顺序钉死了:先仿真找出易混淆管对(§20 那张明细表)→ 按"要拆开谁"定点位,而不是按几何均匀撒点。目标函数必须先想清楚:全网平均命中优先选 +J2,重点保护某片区(比如那里管材老化、漏损高发)选拆开该片区混淆对的点位。

附一个反直觉细节:5 表的 P5 置信 78.7% 反而低于 4 表的 83.4%——加一块对该工况没信息的表(J2)会稀释置信度的显示对比度,但不降命中(§23 表里 5 表 top-1 100%)。置信度是相对量,别拿它单独当性能指标;决策看命中率。

G
边界与结论
§26–§28 · 方法的诚实边界、四条结论、备查问答

§26/28诚实边界:这套数字覆盖什么、不覆盖什么

四条边界,主动声明:
  1. 教学演示网:全部数字来自 6 节点网的零噪声/加噪合成实验,展示的是方法机理和规律形状,不是实战成绩。管网参数(糙率统一 C=100 等)为教学设定。
  2. 单漏点假设:多点同漏时残差是几个指纹的叠加,单指纹匹配可能指到中间某根无辜管;需扩展组合匹配。
  3. 零模型误差假设:指纹库是模型算的,糙率/管径不准 → 指纹失真 → 排序被带偏。工程上指纹库可信的前提是管网模型经实测压力标定
  4. 需水波动未建模:实验里基线是完美已知的;实际中用户用水时刻在波动,残差里混着需水噪声——工程对策是在夜间最小流量时段测(需水最稳),并用多时刻读数平均压噪声。

方法什么时候失效,判据是信噪比。本演示的漏很大(0.02063 m³/s ≈ 全网正常用水的 86%),最大压降信号 1.15 m ≫ 噪声 σ=0.02 m,所以 3 表也有 70% 命中。漏口越小、离监测点越远,信号越弱;当指纹幅值跌到与噪声同量级,分数整体坍平、top-1 退向纯猜。这不改变方法的定位——它本来就是漏斗中段的缩小范围工具(top-K 清单 + 现场确认),不是一锤定音的仪器。

§27/28结论:四条

  1. 方法定位:压力指纹法输出 top-K 概率清单,把"全网排查"缩小到"两三根管",再由听漏仪定桩——它是排查漏斗的中段,不替代人工确认;概率里的置信度信息(领先幅度)本身就是行动依据(§18)。
  2. 装表数量:不是越多越好。本演示网上 4 块表即拆开目标混淆对(top-1 81.6%,top-3 100%),第 6 块完全白装;3→2 是悬崖,2 块以下方法失效。表数论证应给出整条边际收益曲线(§23 的阶梯),而不是拍一个数。
  3. 装表位置 > 数量:同样加 1 块表,加对位置(+J6)与加错位置对目标混淆对是 72.6 pp 与 4.6 pp 的差距。正确流程 = 先仿真找易混淆管对,再按混淆对定点位(§25)。
  4. 盲区与兜底:总管类"均匀降压"漏损对压力模式法结构性免疫(§21),必须与流量对账(DMA 夜间最小流量)互补成完整方案——压力定位、流量发现,两条腿缺一不可。

§28/28备查问答(质询预置)

Q1 · β=8 是怎么定的?换个 β 结论会变吗?

β 是把"分数差"放大成"概率差"的显示旋钮,单调变换不改排序——top-1 是谁、命中率多少与 β 无关。本例 P5 与 P4 分差 0.23,经 e8×0.23 ≈ 6.3 倍放大呈现 46% : 7.5%;β 取 2 会显得"大家都差不多",取 20 会假装斩钉截铁。8 是演示的展示取值;工程上若要输出校准概率,β 应由历史验证数据标定。

Q2 · 指纹库用固定 0.001 m² 漏口建库,实际漏口大小不同怎么办?

匹配用去均值 Pearson,只看压降空间形状不看幅值(§14 尺度不变);漏口变大,各监测点压降近似等比放大,形状不变,一套库通吃。这个近似在大漏显著激活 PDA 折减区时开始失真,属已知边界(§26)。

Q3 · 为什么仿真必须 PDA(压力驱动)?漏量要不要作为输入给定?

漏损是耦合问题:漏水压降 → 压降抑制漏量和用水量 → 反过来又影响压力,直到平衡。PDA 把实际出水量写成压力的函数(Wagner 三段式,§8),这个反馈闭环只有 PDA 能表达。漏量不是输入——你给的只有漏口几何(A、Cd),漏多少由漏点压力经孔口方程在联立求解中自己出来(§9 的 0.02063 m³/s 代回洞方程逐位闭合)。

Q4 · 模型要给"初始条件"吗?

分两层。系统层面不需要:本网无水池/水塔,没有储存性状态量,描述它的是代数方程组不是微分方程,不存在"t=0 状态"。求解器层面需要但自带:Newton 迭代的出发点由软件内置(水头=高程、管流量=0.001 m³/s 等),只影响收敛快慢、不影响收敛到哪——解由方程组本身唯一确定,§7/§9 的手工验证就是证明。

Q5 · top-3 兜底 100% 是什么含义?为什么它比 top-1 更工程相关?

漏斗第③级的实际动作是"沿嫌疑管逐根听漏"。top-3 = 100% 意味着按清单前三根排查必然抓到真凶——排查工作量从 7 根封顶到 3 根。3 表方案 top-1 只有 70.5% 但 top-3 已 100%(§23),所以"3 块表够不够"的答案取决于你接受的排查工作量:接受查三根,够;要求一击即中,上 4 块。

Q6 · 这套流程搬到更大的管网,哪些环节变、哪些不变?

不变的:四步链条(建库→残差→去均值 Pearson→softmax)、自由度账(M 块表 M−1 维)、"先找混淆对再定表位"的点位逻辑、P0 型盲区与流量对账互补的结构。变的:候选集从 7 根管变成按管段/分区划分的 N 个候选(矩阵变大);指纹库须在标定过的管网模型上重建;混淆对结构由实际拓扑决定,须重新仿真识别;噪声口径按实际表精度与需水波动标定。方法论完整迁移,数字全部重算。

汇报完毕。两处 live 演示(§17、§23)可在质询环节当场重跑;全部中间数字可拿计算器抽验(§6、§7、§15 的算式都在页面上)。

📋 复制为引用