完善区域漏损识别

This commit is contained in:
2026-03-04 15:21:31 +08:00
parent d0abad3c65
commit 61f6975296
5 changed files with 732 additions and 34 deletions
+15 -2
View File
@@ -425,10 +425,14 @@ class LeakageProblem(Problem):
demand_obj.base_value = original_val + per_node_leak
modifications.append((demand_obj, original_val))
# 结果保存在根目录的temp/leakage文件夹中
temp_dir = os.path.abspath(os.path.join("temp", "leakage"))
os.makedirs(temp_dir, exist_ok=True)
prefix = os.path.join(temp_dir, f"temp_{os.getpid()}")
try:
sim = wntr.sim.EpanetSimulator(self.wn)
results = sim.run_sim()
results = sim.run_sim(file_prefix=prefix)
sim_pressure = results.node["pressure"].loc[:, self.sensor_nodes]
n_steps = min(sim_pressure.shape[0], self.obs_matrix.shape[0])
@@ -453,6 +457,15 @@ class LeakageProblem(Problem):
for demand_obj, original_val in modifications:
demand_obj.base_value = original_val
# 操作完成后删除临时文件
for ext in [".inp", ".rpt", ".bin", ".out"]:
temp_file = prefix + ext
if os.path.exists(temp_file):
try:
os.remove(temp_file)
except OSError:
pass
def main() -> int:
parser = argparse.ArgumentParser(description="漏损区域识别")