save_uf_models.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import torch
  2. import numpy as np
  3. class TMPIncreaseModel(torch.nn.Module):
  4. """
  5. 跨膜压差上升模型
  6. 计算过滤阶段的TMP增长量
  7. """
  8. def __init__(self):
  9. super().__init__()
  10. def forward(self, p, L_h):
  11. """
  12. 计算TMP增长量
  13. 参数:
  14. p: 系统参数对象
  15. L_h: 过滤时长(小时)
  16. 返回:
  17. TMP增长量
  18. """
  19. return float(p.alpha * (p.q_UF ** p.belta) * L_h)
  20. class TMPDecreaseModel(torch.nn.Module):
  21. """
  22. 跨膜压差恢复模型
  23. 计算反洗阶段的TMP恢复比例
  24. """
  25. def __init__(self):
  26. super().__init__()
  27. def forward(self, p, L_s, t_bw_s):
  28. """
  29. 计算反洗恢复比例
  30. 参数:
  31. p: 系统参数对象
  32. L_s: 过滤时长(秒)
  33. t_bw_s: 反洗时长(秒)
  34. 返回:
  35. TMP恢复比例(0到1之间)
  36. """
  37. L = max(float(L_s), 1.0)
  38. t = max(float(t_bw_s), 1e-6)
  39. # 计算恢复比例上限(随过滤时长增加而降低)
  40. upper_L = p.phi_bw_min + (p.phi_bw_max - p.phi_bw_min) * np.exp(-L / p.L_ref_s)
  41. # 计算时间增益因子(反洗时间越长,恢复越好)
  42. time_gain = 1.0 - np.exp(-(t / p.tau_bw_s) ** p.gamma_t)
  43. # 综合计算恢复比例
  44. phi = upper_L * time_gain
  45. return float(np.clip(phi, 0.0, 0.999))
  46. if __name__ == "__main__":
  47. # 创建模型实例
  48. model_fp = TMPIncreaseModel()
  49. model_bw = TMPDecreaseModel()
  50. # 保存模型参数
  51. torch.save(model_fp.state_dict(), "uf_fp.pth")
  52. torch.save(model_bw.state_dict(), "uf_bw.pth")
  53. print("模型已保存 uf_fp.pth uf_bw.pth")