optimize.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import os
  2. from datetime import datetime
  3. from pathlib import Path
  4. import pandas as pd
  5. from ...model.DHU.DHU_A import DHU_A
  6. from ...model.DHU.DHU_B import DHU_B
  7. from ...tools.config_reader import ConfigReader
  8. from ...tools.data_loader import DataLoader
  9. def optimize(*inputs,config=None):
  10. config = {} if config is None else config
  11. if '__LOCAL' in config.keys():
  12. config_reader_path = config['__LOCAL']
  13. data_URL = config['__URL']
  14. else:
  15. config_reader_path = '/mnt/workflow_data'
  16. data_URL = 'http://basedataportal-svc:8080/data/getpointsdata'
  17. config_reader = ConfigReader(path=f'{config_reader_path}/DHU_A配置.xlsx')
  18. if config_reader.meta['设备类型'] == 'DHU_A':
  19. MODEL = DHU_A
  20. elif config_reader.meta['设备类型'] == 'DHU_B':
  21. MODEL = DHU_B
  22. else:
  23. raise NotImplementedError(config_reader.meta['设备类型'])
  24. ALL_RESULT = {
  25. 'EXCEPTION':{
  26. 'Data': {},
  27. 'Fit' : {},
  28. 'Save': {}
  29. }
  30. }
  31. for each_eaup_name in config_reader.all_equp_names:
  32. # 加载数据
  33. # 运行判断
  34. # 稳态判断:房间露点设定值与反馈值是否接近
  35. # 模型判断:模型精度是否满足要求
  36. # 模式判断:
  37. # 1. 基于当前露点优化模式:基于房间露点设定值减偏差
  38. # 2. 快速提升送风露点模式:约束送风露点保持不变
  39. # 获取数据
  40. try:
  41. data_loader = DataLoader(
  42. path = f'{config_reader_path}/data/train/data_his/',
  43. start_time = config_reader.get_app_info(each_eaup_name,app_type='模型训练',key='开始时间',info_type='datetime'),
  44. end_time = config_reader.get_app_info(each_eaup_name,app_type='模型训练',key='结束时间',info_type='datetime')
  45. )
  46. data_loader.dowload_equp_data(
  47. equp_name = each_eaup_name,
  48. point = config_reader.get_equp_point(each_eaup_name,equp_class=['A','B']),
  49. url = data_URL,
  50. clean_cache = False
  51. )
  52. equp_data = data_loader.get_equp_data(each_eaup_name)
  53. equp_data = clean_data(equp_data)
  54. save_data(f'{config_reader_path}/data/train/data_his_clean',f'{each_eaup_name}.pkl',equp_data)
  55. except Exception as E:
  56. ALL_RESULT['EXCEPTION']['Data'][each_eaup_name] = E
  57. continue