수리 모델 + 통계 · 상수도 사업자
야간 유량 누수 탐지기
공개 벤치마크 BattLeDIM의 관망에서 누수를 찾고, 누수 가능성이 가장 높은 관로의 순위를 매깁니다. 아무 관로나 클릭해 직접 누수를 만들어 보세요.
개요
L-Town은 공개 벤치마크 BattLeDIM의 관망으로, 관로 43 km, 시뮬레이션된 압력 센서 33개, 유량계 세 개, 스마트 미터 82개를 갖춘 시뮬레이션 도시입니다. 2019년 데이터에는 그해 시작된 누수 19건이 숨어 있습니다. 저희는 상수도 엔지니어가 이미 쓰는 도구, 즉 수리 모델, 야간 최소 유량을 활용한 물수지, 압력 잔차로 이 관망의 누수 탐지기를 만들었습니다. 모델은 2018년 데이터로 보정했고, 탐지 임계값은 2018년 데이터만으로 자동 탐색해 정했습니다.
누수를 찾는 일과 위치를 특정하는 일에는 서로 다른 시간대를 씁니다. 점진적 누수 검정은 01:00~05:00의 물수지를 읽습니다. 이 시간대에는 사용량이 가장 적어, 유입량에서 누수가 차지하는 비중이 커지기 때문입니다. 별도의 파열 검정은 매시간 감시합니다. 위치 추정에는 하루 전체의 압력을 사용합니다. 이 모델의 3월 어느 날을 보면, 19:00에 누수가 만드는 압력 변화는 04:00의 약 1.7배입니다. 경보마다 센서에서의 압력 변화를, 모든 절점에 모의 누수를 넣은 결과와 비교합니다(각 관로는 양 끝 절점의 평균값을 취함). 그 뒤 후보 관로 집합이 시간 단위로 좁혀집니다.
2019년 데이터에서 이 방법은 그해 시작된 누수 19건 중 14건을 찾았습니다. 오경보는 7건이었고, 이와 별도로 13건의 보고가 이미 알려진 누수에 해당했습니다. 7건은 이 방법이 앞서 보고한 누수, 6건은 2018년부터 이어진 누수 하나에 대한 것입니다. BattLeDIM 채점 규칙으로 평가하면, 누수 19건 전체로 손실되는 물의 가치 €355,472 가운데 찾아낸 14건의 가치는 작업 인력 비용을 빼고 €289,028입니다. 압력 센서 33개 중 10개만 쓰면(유량계는 그대로) 19건 중 10건을 찾았습니다. 또한 L-Town은 실제 도시보다 데이터가 깨끗합니다. 추정 가정 사용량에 일별 2 % 오차를 넣자, 같은 방법은 두 차례의 시험 실행에서 19건 중 8~12건을 찾았습니다. 임베드된 뷰에서는 수리 해석기가 브라우저에서 실행됩니다. 아무 관로나 클릭해 누수를 만들어 보세요.
검증 방법
- 모델은 2018년 데이터로 보정했습니다. 탐지 임계값은 2018년 데이터만으로 자동 탐색해 정했습니다.
- 2019년 정답은 2020년부터 공개되어 있었고, 방법을 개발하는 동안 저희도 볼 수 있었습니다. 따라서 이는 이미 풀린 벤치마크에 대한 풀이 결과이며, 블라인드 테스트가 아닙니다.
- 2018년에 같은 수준의 성적을 낸 다른 임계값 설정은 누수 19건 중 9~16건을 찾습니다(중앙값 13건).
- 2018년부터 이어진 누수가 네 건 더 있습니다. 공개된 2018년 누수 파일에 명시되어 있으므로 집계하지 않습니다.
- 점수는 BattLeDIM 채점 규칙을 따르며, 주최 측 채점 코드를 Python으로 이식해 저희가 직접 계산했습니다. 이식한 코드는 주최 측이 공개한 예시 보고서의 점수를 센트 단위까지 재현합니다.
구현 내용
- 누수가 없는 2018년 시간대로 보정한 L-Town 수리 모델(WNTR + EPANET). 보정에 쓰지 않은 시간대에서 압력 오차는 RMSE 3.7 cm이며, 보정 전에는 7.8 cm였습니다.
- 두 급수 구역의 물수지. 수요는 스마트 미터 82개로 추정했으며, 이 미터는 모두 한 구역에 있습니다. 이 물수지에 야간 최소 유량 변화 검정(CUSUM)과 파열 검정을 적용합니다.
- 압력 시그니처에 의한 누수 위치 추정: 모든 절점에 모의 누수를 넣고, 측정된 압력 잔차의 변화와 비교합니다. 결과는 매시간 갱신되는 후보 관로의 순위 집합입니다.
- 대회 자체 채점 규칙에 따른 평가. 대조군으로 센서 10개 시험과 무작위 센서 조합 다섯 가지를 사용했습니다.
- 보정된 모델을 브라우저에서 푸는 EPANET 해석기(WebAssembly). 관로를 클릭하고 누수 규모와 데이터 시간 수를 정하면, 후보 집합이 형성되는 과정을 볼 수 있습니다.
기술 스택
Python, WNTR, EPANET 2.2, NumPy, SciPy, pandas · epanet-js(WebAssembly로 컴파일한 EPANET), three.js
주요 수치
모든 수치는 공개 BattLeDIM 벤치마크 관망인 L-Town(시뮬레이션 도시)에서 저희가 직접 실행해 얻었습니다. "BattLeDIM 규칙"은 주최 측이 공개한 채점 방식을 저희가 직접 실행한 것을 뜻합니다. 관로를 따라 300 m 이내이고 누수의 시간 창 안에 있으면 발견으로 인정합니다. 물의 가치는 €0.80/m³로 계산하고, 오경보 한 건에는 €500의 비용이 듭니다. 발견 한 건에는 거리에 비례해 최대 €500까지 작업 인력 시간 비용을 부과하며, 반복 방문에는 비용을 부과하지 않습니다.
| 수치 | 측정 방법 |
|---|---|
| 2019년에 시작된 누수 19건 중 14건 발견 | 2018년부터 이어진 누수는 집계하지 않았습니다. |
| €355,472 중 €289,028 | BattLeDIM 규칙에 따라, 발견한 14건으로 절약한 물의 가치에서 작업 인력 비용을 뺀 값입니다. €355,472는 19건을 모두 시작 시점에 보고했을 때의 가치입니다. |
| 오경보 7건, 그리고 알려진 누수에 대한 보고 13건 | 총 34건을 보고했습니다. 오경보는 건당 €500의 비용이 듭니다. 13건은 이미 알려진 누수에 대한 보고였으며(7건은 이 방법이 앞서 보고한 누수, 6건은 2018년부터 이어진 누수 하나), BattLeDIM 점수에서는 비용을 부과하지 않습니다. |
| 파열부터 경보까지 약 3 h(1.6~24 h) | 발견한 급격한 누수 7건으로, 경보 판단에 쓴 한 시간 분량 데이터가 끝나는 시점까지를 쟀습니다. 위치는 경보 후 24 h에 보고하며, 이 지연은 2018년 데이터로 정했습니다. |
| 점진적 누수는 발생 후 5~53일에 경보(보고는 6~54일) | 발견한 점진적 누수 7건입니다. 유량이 거의 없는 상태에서 시작해 몇 주에 걸쳐 커집니다. |
| 저희가 지목한 관로에서 실제 누수 관로까지 중앙값 171 m(50~294 m) | 발견한 누수 14건 기준이며, 채점과 같은 방식으로 관로를 따라 중심에서 중심까지 쟀습니다. |
| 파열의 경우 보고 시점 후보 집합의 관로 17~77개 | 적합도가 최적값에서 일정한 여유 범위 안에 있는 관로입니다. 잔차 노이즈(측정 압력 − 모델 압력)는 2018년 데이터로 측정했습니다. 점진적 누수에서는 후보 집합이 구역 전체로 남는 경우가 많습니다. |
| 보정 모델의 압력 오차 3.7 cm | 보정에 쓰지 않은 2018년의 누수 없는 61시간 동안 센서 33개에서 구한 RMSE이며, 보정 전에는 7.8 cm입니다. |
| 센서 10개로 19건 중 10건, €181,058, 오경보 15건 | 압력 센서 33개 중 고정 간격 규칙으로 고른 10개를 사용했으며, 유량계와 스마트 미터는 그대로 두었습니다. 무작위로 고른 10개 조합 다섯 가지는 4~12건을 찾았습니다. |
| 수요 오차 2 %에서 19건 중 8~12건 | 추정 가정 사용량에 일별 2 % 오차를 더하고 나머지 설정은 그대로 둔 시험 실행 두 차례의 결과입니다. |
| 다른 임계값에서 19건 중 9~16건 | 2018년에 최고 점수의 5 % 이내를 기록한 임계값 설정 37가지를 각각 2019년에 실행한 결과입니다(중앙값 13건). |
| 브라우저에서 누수 시나리오당 0.5 ms | 임베드된 절점 782개 모델의 정상상태 EPANET 해석 시간 중앙값으로, M1 Pro 노트북의 Chromium에서 측정했습니다. 휴대폰에서는 더 느립니다. |
스틸 이미지
직접 실행해 보기
브라우저에서 실행되는 인터랙티브 뷰입니다. 열기 전에는 아무것도 불러오지 않습니다.