Add more code from WMH

This commit is contained in:
DingZQ
2025-02-08 20:11:27 +08:00
parent f6f37d012b
commit e360540989
6 changed files with 382 additions and 61 deletions

View File

@@ -791,7 +791,7 @@ def run_simulation(name: str, simulation_type: str, modify_pattern_start_time: s
fixed_pump_dict = {key: fixed_pump_SCADA_data_dict[value] for key, value in globals.fixed_pumps_id.items()}
for fixed_pump_name, value in fixed_pump_dict.items():
if value and float(value) != 0:
if value:
pump_pattern = get_pattern(name_c, get_pump(name_c, fixed_pump_name)['pattern'])
pump_pattern['factors'][modify_index] = float(value)
cs = ChangeSet()
@@ -802,11 +802,13 @@ def run_simulation(name: str, simulation_type: str, modify_pattern_start_time: s
# 修改变频泵的pattern
variable_pump_SCADA_data_dict = influxdb_api.query_SCADA_data_by_device_ID_and_time(
query_ids_list=list(globals.variable_pumps_id.values()), query_time=modify_pattern_start_time)
# print(variable_pump_SCADA_data_dict)
variable_pump_dict = {key: variable_pump_SCADA_data_dict[value] for key, value in globals.variable_pumps_id.items()}
# print(variable_pump_dict)
for variable_pump_name, value in variable_pump_dict.items():
if value and float(value) != 0:
if value:
pump_pattern = get_pattern(name_c, get_pump(name_c, fixed_pump_name)['pattern'])
pump_pattern['factors'][modify_index] = float(value) / 50
cs = ChangeSet()
@@ -821,7 +823,7 @@ def run_simulation(name: str, simulation_type: str, modify_pattern_start_time: s
demand_dict = {key: demand_SCADA_data_dict[value] for key, value in globals.demand_id.items()}
for demand_name, value in demand_dict.items():
if value and float(value) != 0:
if value:
demand_pattern = get_pattern(name_c, get_demand(name_c, demand_name)['pattern'])
if get_option(name_c)['UNITS'] == 'LPS':
demand_pattern['factors'][modify_index] = float(value) / 3.6 # m3/h 转换为 L/s
@@ -838,25 +840,26 @@ def run_simulation(name: str, simulation_type: str, modify_pattern_start_time: s
# 基于实时的出厂流量计数据修改出厂流量计绑定的pattern
source_outflow_SCADA_data_dict = influxdb_api.query_SCADA_data_by_device_ID_and_time(
query_ids_list=list(globals.source_outflow_pattern_id.values()), query_time=modify_pattern_start_time)
print(source_outflow_SCADA_data_dict)
# print(source_outflow_SCADA_data_dict)
source_outflow_dict = {key: source_outflow_SCADA_data_dict[value] for key, value in globals.source_outflow_pattern_id.items()}
print(source_outflow_dict)
# print(source_outflow_dict)
for pattern_name in source_outflow_dict.keys():
print(pattern_name)
# print(pattern_name)
history_source_outflow_list = get_history_pattern_info(name_c, pattern_name)
history_source_outflow = history_source_outflow_list[modify_index]
print(source_outflow_dict[pattern_name])
realtime_source_outflow = float(source_outflow_dict[pattern_name])
# print(source_outflow_dict[pattern_name])
if source_outflow_dict[pattern_name]:
realtime_source_outflow = float(source_outflow_dict[pattern_name])
multiply_factor = realtime_source_outflow / history_source_outflow
multiply_factor = realtime_source_outflow / history_source_outflow
pattern = get_pattern(name_c, pattern_name)
pattern['factors'][modify_index] *= multiply_factor
cs = ChangeSet()
cs.append(pattern)
set_pattern(name_c, cs)
pattern = get_pattern(name_c, pattern_name)
pattern['factors'][modify_index] *= multiply_factor
cs = ChangeSet()
cs.append(pattern)
set_pattern(name_c, cs)
if globals.realtime_pipe_flow_pattern_id:
# 基于实时的pipe_flow类数据修改pipe_flow类绑定的pattern
@@ -868,16 +871,16 @@ def run_simulation(name: str, simulation_type: str, modify_pattern_start_time: s
for pattern_name in realtime_pipe_flow_dict.keys():
history_pipe_flow_list = get_history_pattern_info(name_c, pattern_name)
history_pipe_flow = history_pipe_flow_list[modify_index]
if realtime_pipe_flow_dict[pattern_name]:
realtime_pipe_flow = float(realtime_pipe_flow_dict[pattern_name])
realtime_pipe_flow = float(realtime_pipe_flow_dict[pattern_name])
multiply_factor = realtime_pipe_flow / history_pipe_flow
multiply_factor = realtime_pipe_flow / history_pipe_flow
pattern = get_pattern(name_c, pattern_name)
pattern['factors'][modify_index] *= multiply_factor
cs = ChangeSet()
cs.append(pattern)
set_pattern(name_c, cs)
pattern = get_pattern(name_c, pattern_name)
pattern['factors'][modify_index] *= multiply_factor
cs = ChangeSet()
cs.append(pattern)
set_pattern(name_c, cs)
if globals.pipe_flow_region_patterns:
# 基于实时的pipe_flow类数据修改pipe_flow分区流量计范围内的non_realtime的demand绑定的pattern
@@ -896,18 +899,18 @@ def run_simulation(name: str, simulation_type: str, modify_pattern_start_time: s
for pattern_name in temp_realtime_pipe_flow_dict.keys():
temp_history_pipe_flow_list = get_history_pattern_info(name_c, pattern_name)
temp_history_pipe_flow = temp_history_pipe_flow_list[modify_index]
if temp_realtime_pipe_flow_dict[pattern_name]:
temp_realtime_pipe_flow = float(temp_realtime_pipe_flow_dict[pattern_name])
temp_realtime_pipe_flow = float(temp_realtime_pipe_flow_dict[pattern_name])
temp_multiply_factor = temp_realtime_pipe_flow / temp_history_pipe_flow
temp_multiply_factor = temp_realtime_pipe_flow / temp_history_pipe_flow
temp_non_realtime_demand_pattern_list = globals.pipe_flow_region_patterns[pattern_name]
for demand_pattern_name in temp_non_realtime_demand_pattern_list:
pattern = get_pattern(name_c, demand_pattern_name)
pattern['factors'][modify_index] *= temp_multiply_factor
cs = ChangeSet()
cs.append(pattern)
set_pattern(name_c, cs)
temp_non_realtime_demand_pattern_list = globals.pipe_flow_region_patterns[pattern_name]
for demand_pattern_name in temp_non_realtime_demand_pattern_list:
pattern = get_pattern(name_c, demand_pattern_name)
pattern['factors'][modify_index] *= temp_multiply_factor
cs = ChangeSet()
cs.append(pattern)
set_pattern(name_c, cs)
if globals.source_outflow_region:
# 根据associated_source_outflow_id进行分区各分区用出厂的流量计 - 实时的pipe_flow和demand进行数据更新
@@ -936,13 +939,14 @@ def run_simulation(name: str, simulation_type: str, modify_pattern_start_time: s
temp_history_pipe_flow_and_demand_list = get_history_pattern_info(name_c, pipe_flow_and_demand_pattern_name)
history_region_total_realtime_region_pipe_flow_and_demand += temp_history_pipe_flow_and_demand_list[modify_index]
temp_multiply_factor = (region_total_source_outflow - region_total_realtime_region_pipe_flow_and_demand) / (history_region_total_source_outflow - history_region_total_realtime_region_pipe_flow_and_demand)
for non_realtime_region_pattern_name in temp_non_realtime_region_patterns:
pattern = get_pattern(name_c, non_realtime_region_pattern_name)
pattern['factors'][modify_index] *= temp_multiply_factor
cs = ChangeSet()
cs.append(pattern)
set_pattern(name_c, cs)
if (region_total_source_outflow - region_total_realtime_region_pipe_flow_and_demand):
temp_multiply_factor = (region_total_source_outflow - region_total_realtime_region_pipe_flow_and_demand) / (history_region_total_source_outflow - history_region_total_realtime_region_pipe_flow_and_demand)
for non_realtime_region_pattern_name in temp_non_realtime_region_patterns:
pattern = get_pattern(name_c, non_realtime_region_pattern_name)
pattern['factors'][modify_index] *= temp_multiply_factor
cs = ChangeSet()
cs.append(pattern)
set_pattern(name_c, cs)
# 根据高压出厂流量,更改高压用水模式
# hp_flow_SCADA_data_dict = influxdb_api.query_SCADA_data_by_device_ID_and_time(
@@ -1047,7 +1051,7 @@ if __name__ == "__main__":
# print("Realtime Region Pipe Flow And Demand ID:", globals.realtime_region_pipe_flow_and_demand_id)
# print("Realtime Region Pipe Flow And Demand Patterns:", globals.realtime_region_pipe_flow_and_demand_patterns)
run_simulation(name='bb', simulation_type="realtime", modify_pattern_start_time='2025-02-07T22:15:00+08:00')
run_simulation(name='bb', simulation_type="realtime", modify_pattern_start_time='2025-02-08T10:30:00+08:00')