David 1 miesiąc temu
rodzic
commit
93cec85988
1 zmienionych plików z 19 dodań i 22 usunięć
  1. 19 22
      post_processing/cdq_coe_gen.py

+ 19 - 22
post_processing/cdq_coe_gen.py

@@ -75,11 +75,7 @@ def iterate_coe(pre_data, point, config, coe):
     """使用贝叶斯优化进行系数寻优"""
     T = 'T' + str(point + 1)
     col_pre = config['col_pre']
-
-    # 初始化最优解存储变量
-    best_acc, best_score = 0, 999
-    best_coe_m, best_coe_n = 0, 0
-    best_score_m, best_score_n = 0, 0
+    col_time = config['col_time']
 
     # 历史数据处理(保持原逻辑)
     pre_data = history_error(pre_data, config['col_power'], config['col_pre'], int(coe[T]['hour'] // 0.25))
@@ -95,6 +91,7 @@ def iterate_coe(pre_data, point, config, coe):
         """评估函数返回准确率和考核分的元组"""
         local_data = pre_data.copy()
         local_data["new"] = round(m * local_data[col_pre] + n * local_data['his_fix'], 3)
+        local_data = curve_limited(local_data, config, 'new')
         req_new = prepare_request_body(local_data, config, 'new')
         acc, score = calculate_acc(API_URL, req_new)
         return acc, score
@@ -131,18 +128,15 @@ def iterate_coe(pre_data, point, config, coe):
 
     # 应用最优系数(保持原处理逻辑)
     pre_data["coe-acc"] = round(best_coe_m * pre_data[col_pre] + best_coe_n * pre_data['his_fix'], 3)
-    pre_data["coe-ass"] = round(best_score_m * pre_data[col_pre] + best_score_n * pre_data['his_fix'], 3)
+    # pre_data["coe-ass"] = round(best_score_m * pre_data[col_pre] + best_score_n * pre_data['his_fix'], 3)
 
     # 记录日志(保持原格式)
-    logger.info("1.过去{} - {}的短期的准确率:{:.4f},自动确认系数后,{} 超短期的准确率:{:.4f},历史功率:{:.4f}".format(
-        pre_data['C_TIME'][0], pre_data['C_TIME'].iloc[-1], dq_acc, T, best_acc, his_fix_acc))
-    logger.info("2.过去{} - {}的短期的考核分:{:.4f},自动确认系数后,{} 超短期的考核分:{:.4f},历史功率:{:.4f}".format(
-        pre_data['C_TIME'][0], pre_data['C_TIME'].iloc[-1], dq_score, T, best_score, his_fix_score))
+    logger.info("过去{} - {}的短期的准确率:{:.4f},自动确认系数后,{} 超短期的准确率:{:.4f},历史功率:{:.4f}".format(pre_data[col_time][0], pre_data[col_time].iloc[-1], dq_acc, T, best_acc, his_fix_acc))
 
     # 更新系数表(保持原逻辑)
     coe[T].update({
-        'score_m': round(best_score_m, 3),
-        'score_n': round(best_score_n, 3),
+        # 'score_m': round(best_score_m, 3),
+        # 'score_n': round(best_score_n, 3),
         'acc_m': round(best_coe_m, 3),
         'acc_n': round(best_coe_n, 3)
     })
@@ -225,12 +219,9 @@ def calculate_acc(api_url, request_body):
             # ass = np.average([res['accuracyAssessment'] for res in result])
             return acc, 0
         else:
-            logger.info(f"失败:{result['status']},{result['error']}")
-            print(f"失败:{result['status']},{result['error']}")
-            print("22222222")
+            logger.info(f"{response.status_code}失败:{result['status']},{result['error']}")
     except requests.exceptions.RequestException as e:
-        print(f"API调用失败: {e}")
-        print("333333333")
+        logger.info(f"准确率接口调用失败: {e}")
         return None
 
 def history_error(data, col_power, col_pre, his_window):
@@ -247,13 +238,19 @@ def history_error(data, col_power, col_pre, his_window):
     data['his_fix'] = data[col_pre] + pad_data_error
     data = data.iloc[his_window:, :].reset_index(drop=True)
 
-    data.loc[data[col_pre] <= 0, ['his_fix']] = 0
-    data['dateTime'] = pd.to_datetime(data['dateTime'])
-    data = data.loc[:, ['dateTime', col_power, col_pre, 'his_fix']]
-
-    # data.to_csv('J01080原始数据.csv', index=False)
+    data = curve_limited(data, config, 'his_fix')
     return data
 
+def curve_limited(pre_data, config, predict):
+    """
+    plant_type: 0 风 1 光
+    """
+    col_pre, col_time, cap = config['col_pre'], config['col_time'], config['openCapacityName']
+    pre_data[col_time] = pd.to_datetime(pre_data[col_time])
+    pre_data.loc[pre_data[predict] < 0, [predict]] = 0
+    pre_data.loc[pre_data[predict] > cap, [predict]] = cap
+    return pre_data
+
 @app.route('/cdq_coe_gen', methods=['POST'])
 def get_station_cdq_coe():
     # 获取程序开始时间