|
|
@@ -31,7 +31,7 @@ from env.env_config_loader import EnvConfigLoader, create_env_params_from_yaml
|
|
|
from rl_model.DQN.uf_decide.dqn_decider import UFDQNDecider
|
|
|
|
|
|
|
|
|
-def build_physics(IS_TIMES, phys_params):
|
|
|
+def build_physics(IS_TIMES, phys_params,state_bounds):
|
|
|
"""
|
|
|
构造与训练一致的物理模型(只做一次)
|
|
|
"""
|
|
|
@@ -39,6 +39,7 @@ def build_physics(IS_TIMES, phys_params):
|
|
|
|
|
|
physics = UFPhysicsModel(
|
|
|
phys_params=phys_params,
|
|
|
+ state_bounds=state_bounds,
|
|
|
resistance_model_fp=res_fp,
|
|
|
resistance_model_bw=res_bw,
|
|
|
IS_TIMES = IS_TIMES
|
|
|
@@ -165,7 +166,8 @@ def calc_uf_cycle_metrics(current_state, max_tmp_during_filtration, min_tmp_duri
|
|
|
|
|
|
# 获得模型模拟周期信息
|
|
|
k_bw_per_ceb = info["k_bw_per_ceb"]
|
|
|
- ton_water_energy_kWh_per_m3 = info["ton_water_energy_kWh_per_m3"]
|
|
|
+ refer_ton_water_energy = info["refer_ton_water_energy"]
|
|
|
+ ton_water_energy = info["ton_water_energy"]
|
|
|
recovery = info["recovery"]
|
|
|
daily_prod_time_h = info["daily_prod_time_h"]
|
|
|
|
|
|
@@ -181,7 +183,8 @@ def calc_uf_cycle_metrics(current_state, max_tmp_during_filtration, min_tmp_duri
|
|
|
|
|
|
return {
|
|
|
"k_bw_per_ceb": k_bw_per_ceb,
|
|
|
- "ton_water_energy_kWh_per_m3": ton_water_energy_kWh_per_m3,
|
|
|
+ "refer_ton_water_energy": refer_ton_water_energy,
|
|
|
+ "ton_water_energy": ton_water_energy,
|
|
|
"recovery": recovery,
|
|
|
"daily_prod_time_h": daily_prod_time_h,
|
|
|
"max_permeability": max_permeability
|
|
|
@@ -224,8 +227,8 @@ def run_dqn_decide(
|
|
|
# ==============================
|
|
|
if __name__ == "__main__":
|
|
|
|
|
|
- MODEL_PATH = UF_RL_ROOT / "longting" / "48h_dqn_model.zip"
|
|
|
- ENV_CONFIG_PATH = UF_RL_ROOT / "longting" / "env_config.yaml"
|
|
|
+ MODEL_PATH = UF_RL_ROOT / "xishan" / "48h_dqn_model.zip"
|
|
|
+ ENV_CONFIG_PATH = UF_RL_ROOT / "xishan" / "env_config.yaml"
|
|
|
TMP0 = 0.019 # 原始 TMP0
|
|
|
q_UF = 300 # 进水流量
|
|
|
temp = 20.0 #进水温度
|
|
|
@@ -244,7 +247,7 @@ if __name__ == "__main__":
|
|
|
state_bounds # UFStateBounds
|
|
|
) = create_env_params_from_yaml(ENV_CONFIG_PATH)
|
|
|
|
|
|
- physics = build_physics(IS_TIMES, phys_params)
|
|
|
+ physics = build_physics(IS_TIMES, phys_params,state_bounds)
|
|
|
|
|
|
action_id, model_L_s, model_t_bw_s = run_dqn_decide(
|
|
|
model_path=MODEL_PATH,
|
|
|
@@ -272,7 +275,8 @@ if __name__ == "__main__":
|
|
|
print(f"模型选择的L_s: {model_L_s} 秒, 模型选择的t_bw_s: {model_t_bw_s} 秒")
|
|
|
print(f"指令下发的L_s: {L_s} 秒, 指令下发的t_bw_s: {t_bw_s} 秒")
|
|
|
print(f"指令对应的反洗次数: {execution_result['k_bw_per_ceb']}")
|
|
|
- print(f"指令对应的吨水电耗: {execution_result['ton_water_energy_kWh_per_m3']}")
|
|
|
+ print(f"指令对应的理论参考吨水电耗: {execution_result['refer_ton_water_energy']}")
|
|
|
+ print(f"指令对应的计算吨水电耗: {execution_result['ton_water_energy']}")
|
|
|
print(f"指令对应的回收率: {execution_result['recovery']}")
|
|
|
print(f"指令对应的日均产水时间: {execution_result['daily_prod_time_h']}")
|
|
|
print(f"指令对应的最高渗透率: {execution_result['max_permeability']}")
|