David 4 days ago
parent
commit
d31adab063

+ 82 - 0
app/common/config.yml

@@ -74,3 +74,85 @@ system:
 
 input_file: E:/compete/app/model/data/DQYC/qy/62/1002/2025-04-21/IN
 model_name: lstm
+
+coe:
+  T1:
+    m: 0.2
+    n: 0.8
+    score: false
+    update: true
+  T2:
+    m: 0.2
+    n: 0.8
+    score: false
+    update: true
+  T3:
+    m: 0.2
+    n: 0.8
+    score: false
+    update: true
+  T4:
+    m: 0.2
+    n: 0.8
+    score: false
+    update: true
+  T5:
+    m: 0.4
+    n: 0.6
+    score: false
+    update: true
+  T6:
+    m: 0.4
+    n: 0.6
+    score: false
+    update: true
+  T7:
+    m: 0.4
+    n: 0.6
+    score: false
+    update: true
+  T8:
+    m: 0.4
+    n: 0.6
+    score: false
+    update: true
+  T9:
+    m: 0.4
+    n: 0.6
+    score: false
+    update: true
+  T10:
+    m: 0.4
+    n: 0.6
+    score: false
+    update: true
+  T11:
+    m: 0.4
+    n: 0.6
+    score: false
+    update: true
+  T12:
+    m: 0.4
+    n: 0.6
+    score: false
+    update: true
+  T13:
+    m: 0.8
+    n: 0.2
+    score: false
+    update: true
+  T14:
+    m: 0.8
+    n: 0.2
+    score: false
+    update: true
+  T15:
+    m: 0.8
+    n: 0.2
+    score: false
+    update: true
+  T16:
+    m: 0.8
+    n: 0.2
+    score: false
+    update: true

+ 124 - 0
app/logs/2025-05-27/south-forecast.2025-05-27.0.log

@@ -111,3 +111,127 @@
 2025-05-27 13:06:32,675 - main.py - INFO - 输入文件目录: 1002/0/IN - main
 2025-05-27 13:06:55,880 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
  - _tfmw_add_deprecation_warning
+2025-05-27 13:16:58,845 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 13:17:03,158 - main.py - INFO - 输入文件目录: 1002/0/IN - main
+2025-05-27 13:17:26,452 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 14:14:40,847 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 14:14:55,619 - main.py - INFO - 输入文件目录: 1002/0/IN - main
+2025-05-27 14:15:18,906 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 14:16:58,995 - task_worker.py - ERROR - Station -99 failed: 'DataFrame' object has no attribute 'grouby' - cdq_task
+2025-05-27 14:17:32,866 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 14:17:37,635 - main.py - INFO - 输入文件目录: 1002/0/IN - main
+2025-05-27 14:18:00,975 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 14:18:16,126 - task_worker.py - ERROR - Station -99 failed: 'plantId' - cdq_task
+2025-05-27 14:19:23,896 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 14:19:27,556 - main.py - INFO - 输入文件目录: 1002/0/IN - main
+2025-05-27 14:19:50,917 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 14:20:32,455 - task_worker.py - ERROR - Station -99 failed: 'plantID' - cdq_task
+2025-05-27 14:21:08,053 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 14:21:10,487 - main.py - INFO - 输入文件目录: 1002/0/IN - main
+2025-05-27 14:21:33,807 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 14:22:22,070 - task_worker.py - ERROR - Station -99 failed: Can only merge Series or DataFrame objects, a <class 'int'> was passed - cdq_task
+2025-05-27 14:23:05,320 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 14:23:07,518 - main.py - INFO - 输入文件目录: 1002/0/IN - main
+2025-05-27 14:23:31,058 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 14:32:04,497 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 14:32:07,602 - main.py - INFO - 输入文件目录: 1002/0/IN - main
+2025-05-27 14:32:30,762 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 14:38:58,602 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 14:39:22,598 - main.py - INFO - 输入文件目录: 1002/0/IN - main
+2025-05-27 14:39:45,822 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 14:40:58,316 - data_cleaning.py - INFO - 行清洗:清洗的行数有:2,缺失的列有: - key_field_row_cleaning
+2025-05-27 14:43:51,365 - task_worker.py - ERROR - Station -99 failed: cannot reindex on an axis with duplicate labels - cdq_task
+2025-05-27 14:47:08,510 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 14:47:51,694 - main.py - INFO - 输入文件目录: 1002/0/IN - main
+2025-05-27 14:48:14,996 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 14:48:38,681 - data_cleaning.py - INFO - 行清洗:清洗的行数有:2,缺失的列有: - key_field_row_cleaning
+2025-05-27 14:49:10,529 - task_worker.py - ERROR - Station -99 failed: cannot reindex on an axis with duplicate labels - cdq_task
+2025-05-27 15:02:34,796 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 15:03:33,641 - main.py - INFO - 输入文件目录: 1002/0/IN - main
+2025-05-27 15:03:57,086 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 15:05:06,468 - task_worker.py - ERROR - Station -99 failed: You are trying to merge on datetime64[ns] and object columns for key 'moment'. If you wish to proceed you should use pd.concat - cdq_task
+2025-05-27 15:10:25,112 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 15:10:28,809 - main.py - INFO - 输入文件目录: 1002/0/IN - main
+2025-05-27 15:10:51,945 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 15:11:18,018 - task_worker.py - ERROR - Station -99 failed: You are trying to merge on datetime64[ns] and object columns for key 'moment'. If you wish to proceed you should use pd.concat - cdq_task
+2025-05-27 15:11:49,828 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 15:11:52,964 - main.py - INFO - 输入文件目录: 1002/0/IN - main
+2025-05-27 15:12:16,341 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 15:20:50,381 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 15:20:53,243 - main.py - INFO - 输入文件目录: 1002/0/IN - main
+2025-05-27 15:21:16,646 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 15:23:33,339 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 15:23:36,377 - main.py - INFO - 输入文件目录: 1002/0/IN - main
+2025-05-27 15:23:59,628 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 15:24:16,641 - data_cleaning.py - INFO - 行清洗:清洗的行数有:2,缺失的列有: - key_field_row_cleaning
+2025-05-27 15:26:15,121 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 15:32:30,820 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 15:32:52,236 - main.py - INFO - 输入文件目录: 1002/0/IN - main
+2025-05-27 15:33:15,553 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 15:33:27,967 - data_cleaning.py - INFO - 行清洗:清洗的行数有:2,缺失的列有: - key_field_row_cleaning
+2025-05-27 15:34:44,905 - data_cleaning.py - INFO - 行清洗:清洗的行数有:2,缺失的列有: - key_field_row_cleaning
+2025-05-27 15:36:09,357 - data_cleaning.py - INFO - 行清洗:清洗的行数有:2,缺失的列有: - key_field_row_cleaning
+2025-05-27 15:36:11,234 - task_worker.py - ERROR - Station -99 failed: 20 columns passed, passed data had 1 columns - cdq_task
+2025-05-27 15:36:48,673 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 15:36:50,674 - main.py - INFO - 输入文件目录: 1002/0/IN - main
+2025-05-27 15:37:13,952 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 15:37:32,332 - data_cleaning.py - INFO - 行清洗:清洗的行数有:2,缺失的列有: - key_field_row_cleaning
+2025-05-27 15:38:38,425 - data_cleaning.py - INFO - 行清洗:清洗的行数有:2,缺失的列有: - key_field_row_cleaning
+2025-05-27 15:39:32,951 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 15:39:36,104 - main.py - INFO - 输入文件目录: 1002/0/IN - main
+2025-05-27 15:39:59,471 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 15:40:13,615 - data_cleaning.py - INFO - 行清洗:清洗的行数有:2,缺失的列有: - key_field_row_cleaning
+2025-05-27 15:40:55,790 - data_cleaning.py - INFO - 行清洗:清洗的行数有:2,缺失的列有: - key_field_row_cleaning
+2025-05-27 15:40:59,686 - data_cleaning.py - INFO - 行清洗:清洗的行数有:2,缺失的列有: - key_field_row_cleaning
+2025-05-27 15:41:03,085 - task_worker.py - ERROR - Station -99 failed: 20 columns passed, passed data had 5 columns - cdq_task
+2025-05-27 15:44:49,894 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 15:44:52,333 - main.py - INFO - 输入文件目录: 1002/0/IN - main
+2025-05-27 15:45:16,070 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 15:46:08,429 - data_cleaning.py - INFO - 行清洗:清洗的行数有:2,缺失的列有: - key_field_row_cleaning
+2025-05-27 15:47:05,654 - data_cleaning.py - INFO - 行清洗:清洗的行数有:2,缺失的列有: - key_field_row_cleaning
+2025-05-27 15:47:56,018 - data_cleaning.py - INFO - 行清洗:清洗的行数有:2,缺失的列有: - key_field_row_cleaning
+2025-05-27 15:51:02,530 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 15:51:04,873 - main.py - INFO - 输入文件目录: 1002/0/IN - main
+2025-05-27 15:51:28,664 - module_wrapper.py - WARNING - From E:\compete\app\model\losses.py:10: The name tf.set_random_seed is deprecated. Please use tf.compat.v1.set_random_seed instead.
+ - _tfmw_add_deprecation_warning
+2025-05-27 15:51:42,351 - data_cleaning.py - INFO - 行清洗:清洗的行数有:2,缺失的列有: - key_field_row_cleaning
+2025-05-27 15:51:48,621 - data_cleaning.py - INFO - 行清洗:清洗的行数有:2,缺失的列有: - key_field_row_cleaning
+2025-05-27 15:51:55,114 - data_cleaning.py - INFO - 行清洗:清洗的行数有:2,缺失的列有: - key_field_row_cleaning

+ 7 - 6
app/model/material.py

@@ -30,7 +30,7 @@ class MaterialLoader:
 
     def _load_cdq_history_rp(self, area_id, plant_type):
         """
-        加载超短期历史实发功率
+        加载超短期历史实发功率:加载当前时刻和前2个时刻的历史实际功率
         """
         dt = datetime.strptime(self.opt.moment, '%Y%m%d_%H%M')
         dts = [x.strftime("%Y%m%d_%H%M") for x in [dt, dt-timedelta(minutes=15), dt-timedelta(minutes=30)]]
@@ -51,7 +51,7 @@ class MaterialLoader:
 
     def _load_dq_res(self, area_id, plant_type, begin_time):
         """
-        加载短期预测结果
+        加载短期预测结果:场站级短期和区域级短期
         """
         task_id = str(self.opt.dq_area_task_mapping[int(area_id)][int(plant_type)])
         # 找时间:超短期时间目录时间(当前时间),超短期预测起始时间,减去一天,是短期时间目录的时间(当前时间)
@@ -60,9 +60,9 @@ class MaterialLoader:
         dq_path_out = os.path.join(str(self.opt.dqyc_base_path), task_id, area_id, dt_str, 'OUT')
         all_stations = [str(child.parts[-1]) for child in Path(str(dq_path)).iterdir() if child.is_dir()]
         dqs = [pd.read_csv(os.path.join(str(dq_path), station, self.opt.doc_mapping['out']+'.txt'), sep=r'\s+', header=0) for station in all_stations]
-        dqs.append(pd.read_csv(os.path.join(str(dq_path_out), self.opt.doc_mapping['area_out']+'.txt'), sep=r'\s+', header=0))
         dq = pd.concat(dqs)
-        return dq
+        dq_area = pd.read_csv(os.path.join(str(dq_path_out), self.opt.doc_mapping['area_out']+'.txt'), sep=r'\s+', header=0)
+        return dq, dq_area
 
 
     def _load_material(self, station_id):
@@ -138,7 +138,7 @@ class MaterialLoader:
                 station_info_d = pd.read_csv(self.wrapper_path_cdq(self.opt.doc_cdq_mapping['station_info_d_w']), sep=r'\s+', header=0)
                 cap = float(station_info.loc[0, 'PlantCap'])
                 # 去短期预测结果中加载当日短期
-                dq = self._load_dq_res(area_id, plant_type, begin_time)
+                dq, dq_area = self._load_dq_res(area_id, plant_type, begin_time)
                 cdq_his_rp = self._load_cdq_history_rp(area_id, plant_type)
 
             # 如果是光伏
@@ -147,13 +147,14 @@ class MaterialLoader:
                 station_info_d = pd.read_csv(self.wrapper_path_cdq(self.opt.doc_cdq_mapping['station_info_d_s']), sep=r'\s+', header=0)
                 cap = float(station_info.loc[0, 'PlantCap'])
                 # 去短期预测结果中加载当日短期
-                dq = self._load_dq_res(area_id, plant_type)
+                dq, dq_area = self._load_dq_res(area_id, plant_type)
                 cdq_his_rp = self._load_cdq_history_rp()
 
             return types.SimpleNamespace(**{
                 'station_info': station_info,
                 'station_info_d': station_info_d,
                 'dq': dq,
+                'dq_area': dq_area,
                 'cdq_his_rp': cdq_his_rp,
                 'cap': cap,
                 'begin_time': begin_time,

+ 49 - 3
app/model/task_worker.py

@@ -7,8 +7,12 @@
 
 import logging
 import pandas as pd
+from scipy.cluster.hierarchy import weighted
+
 from app.model.tf_model_train import ModelTrainer
 from app.predict.tf_model_pre import ModelPre
+from app.common.data_cleaning import key_field_row_cleaning
+from app.common.config import logger
 from app.model.tf_region_train import RegionTrainer
 from app.model.material import MaterialLoader
 
@@ -129,11 +133,51 @@ class TaskPre(object):
             return {'status': 'failed', 'area_id': area_id}
 
 class CDQTaskPre(object):
-    def __init__(self, loader):
+    def __init__(self, loader, opt):
         self.loader = loader
+        self.opt = opt
+
+    def calculate_dq_fix_weighted(self, dq, dq_area, his_rp, begin_time, end_time):
+        """
+        1. 依次从场站编号、最后是区域编号进行遍历
+        2. 将遍历的历史功率和短期时间对齐,算出过去3个时刻的平均
+        3. 根据起止时间获取短期的16个点,根据偏差进行短期加权
+        """
+        def weighted_each_point(his_rp_term, dq_16, error):
+            weighted = list(his_rp_term.head(1)[['Grade', 'Type', 'ID', 'Value']].values[0])
+            dq_16['dq_fix'] = dq_16['Power'] + error
+            for point, row in dq_16.iterrows():
+                T = 'T'+str(point + 1)
+                cdq_value = row['dq_fix']*self.opt.coe[T]['n'] + row['Power']*self.opt.coe[T]['m']
+                weighted.append(cdq_value)
+            return weighted
+
+        def dq_fix_weighted(his_rp_term, dq_term):
+            his_rp_dq = pd.merge(his_rp_term, dq_term, left_on='moment', right_on='Datetime')
+            his_rp_dq_clean = key_field_row_cleaning(his_rp_dq, ['Value'], logger)
+            if not his_rp_dq_clean.empty:
+                his_rp_dq['error'] = his_rp_dq['Value'] - his_rp_dq['Power']
+                error = his_rp_dq['error'].mean()
+            else:
+                error = 0
+            dq_term = dq_term.set_index('Datetime')
+            dq_16 = dq_term.loc[begin_time: end_time].reset_index(drop=False)
+            cdq_16 = weighted_each_point(his_rp_term, dq_16, error)
+            return cdq_16
 
-    def calculate_dq_fix(self, dq, his_rp, begin_time, end_time):
-        pass
+        his_rp['moment'] = pd.to_datetime(his_rp['moment'])
+        dq['Datetime'] = pd.to_datetime(dq['Datetime'])
+        dq_area['Datetime'] = pd.to_datetime(dq_area['Datetime'])
+        his_rp_plant = his_rp[his_rp['Grade']==1]
+        his_rp_area = his_rp[his_rp['Grade']==0]
+        all = []
+        all.append(dq_fix_weighted(his_rp_area, dq_area))
+        for id, dq_id in dq.groupby('PlantID'):
+            his_rp_id = his_rp_plant[his_rp_plant['ID']==id]
+            all.append(dq_fix_weighted(his_rp_id, dq_id))
+        weighted_cols = ['Grade', 'Type', 'ID', 'Value'] + ['P'+str(x) for x in range(1, 17)]
+        weighted_cdq = pd.DataFrame(all, columns=weighted_cols)
+        return weighted_cdq
 
     def cdq_task(self, config):
         """场站级训练任务"""
@@ -146,8 +190,10 @@ class CDQTaskPre(object):
             data_objects = self.loader.get_material_cdq()
             print("333")
             dq = data_objects.dq
+            dq_area = data_objects.dq_area
             his_rp = data_objects.cdq_his_rp
             begin_time, end_time = data_objects.begin_time, data_objects.end_time
+            weighted_cdq = self.calculate_dq_fix_weighted(dq, dq_area, his_rp, begin_time, end_time)
             print("444")
             # 模型训练
             # model = ModelTrainer(station_id, train_data, capacity=data_objects.cap, gpu_id=config.get('gpu_assignment'))

+ 1 - 1
app/predict/main.py

@@ -127,7 +127,7 @@ def cdq_predict(opt):
     # 生成任务列表
     target_dir = os.path.join(opt.cdqyc_base_path, opt.moment, opt.input_file)
     loader = MaterialLoader(opt)
-    task = CDQTaskPre(loader)
+    task = CDQTaskPre(loader, opt)
     task.cdq_task(config)
     # ---------------------------- 监控任务,进度跟踪 ----------------------------
     # 场站级功率预测训练