|
@@ -75,11 +75,7 @@ def iterate_coe(pre_data, point, config, coe):
|
|
"""使用贝叶斯优化进行系数寻优"""
|
|
"""使用贝叶斯优化进行系数寻优"""
|
|
T = 'T' + str(point + 1)
|
|
T = 'T' + str(point + 1)
|
|
col_pre = config['col_pre']
|
|
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))
|
|
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 = pre_data.copy()
|
|
local_data["new"] = round(m * local_data[col_pre] + n * local_data['his_fix'], 3)
|
|
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')
|
|
req_new = prepare_request_body(local_data, config, 'new')
|
|
acc, score = calculate_acc(API_URL, req_new)
|
|
acc, score = calculate_acc(API_URL, req_new)
|
|
return acc, score
|
|
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-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({
|
|
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_m': round(best_coe_m, 3),
|
|
'acc_n': round(best_coe_n, 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])
|
|
# ass = np.average([res['accuracyAssessment'] for res in result])
|
|
return acc, 0
|
|
return acc, 0
|
|
else:
|
|
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:
|
|
except requests.exceptions.RequestException as e:
|
|
- print(f"API调用失败: {e}")
|
|
|
|
- print("333333333")
|
|
|
|
|
|
+ logger.info(f"准确率接口调用失败: {e}")
|
|
return None
|
|
return None
|
|
|
|
|
|
def history_error(data, col_power, col_pre, his_window):
|
|
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['his_fix'] = data[col_pre] + pad_data_error
|
|
data = data.iloc[his_window:, :].reset_index(drop=True)
|
|
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
|
|
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'])
|
|
@app.route('/cdq_coe_gen', methods=['POST'])
|
|
def get_station_cdq_coe():
|
|
def get_station_cdq_coe():
|
|
# 获取程序开始时间
|
|
# 获取程序开始时间
|