Bladeren bron

添加 UF 强化学习模型:
- 环境类文件 `uf_resistance_models.py`
- 对应参数文件 `resistance_model_fp.pth` 和 `resistance_model_bw.pth`

junc. 5 maanden geleden
bovenliggende
commit
d34f165c0c

BIN
models/uf-rl/resistance_model_bw.pth


BIN
models/uf-rl/resistance_model_fp.pth


+ 61 - 0
models/uf-rl/uf_resistance_models.py

@@ -0,0 +1,61 @@
+import torch
+import numpy as np
+
+# ===== 膜阻力上升模型 =====
+class ResistanceIncreaseModel(torch.nn.Module):
+    def __init__(self):
+        super().__init__()
+
+    def forward(self, p, L_s):
+        """
+        计算膜阻力上升量 ΔR
+        """
+        A = 128 * 40.0
+        J = p.q_UF / A / 3600
+        # 膜阻力上升模型(已缩放)
+        dR = p.nuK * J * L_s
+        return float(dR)
+
+
+# ===== 膜阻力下降模型 =====
+class ResistanceDecreaseModel(torch.nn.Module):
+    def __init__(self):
+        super().__init__()
+
+    def forward(self, p, R0, R_end, L_h_start, L_h_next_start, t_bw_s):
+        """
+        计算物理反冲洗污染去除比例(受反洗时间影响),最大可去除的可逆膜阻力(受过滤时间影响)
+        """
+
+        # 计算单次不可逆膜阻力(线性依赖于进水时间)
+        # 周期起点和下次起点的理论阻力
+        R_start = R0 + p.slope * (L_h_start ** p.power)
+        R_next_start = R0 + p.slope * (L_h_next_start ** p.power)
+
+        # 不可逆污染(反洗后残余增加量)
+        irreversible_R = max(R_next_start - R_start, 0.0)
+
+        # 本周期的总污染增长量
+        total_increase = max(R_end - R_start, 0.0)
+
+        # 可逆污染量 = 本周期总增长 - 不可逆残留
+        reversible_R = max(total_increase - irreversible_R, 0.0)
+
+        # 时间因子:反洗时间越长,效果越充分
+        time_gain = 1.0 - np.exp(- (t_bw_s / p.tau_bw_s))
+
+        # 实际去除的膜阻力(随机在可去除区间内,乘以时间因子)
+        dR_bw = reversible_R * time_gain
+
+        return float(np.clip(dR_bw, 0.0, reversible_R))
+
+
+# ===== 主程序 =====
+if __name__ == "__main__":
+    model_fp = ResistanceIncreaseModel()
+    model_bw = ResistanceDecreaseModel()
+
+    torch.save(model_fp.state_dict(), "resistance_model_fp.pth")
+    torch.save(model_bw.state_dict(), "resistance_model_bw.pth")
+
+    print("模型已安全保存为 resistance_model_fp.pth、resistance_model_bw.pth")