David před 4 dny
rodič
revize
adbe19f5bb

+ 15 - 0
app/common/data_cleaning.py

@@ -5,8 +5,23 @@
 # author: David
 # company: shenyang JY
 import numpy as np
+import pandas as pd
+from app.common.logs import params, logger
 np.random.seed(42)
 
+def clean_power(power, env, plant_id):
+    env_power = pd.merge(env, power, on=params['col_time'])
+    if 'HubSpeed' in env.columns.tolist():
+        from app.common.limited_power_wind import LimitPower
+        lp = LimitPower(logger, params, env_power)
+        power = lp.clean_limited_power(plant_id, True)
+    elif 'Irradiance' in env.columns.tolist():
+        from app.common.limited_power_solar import LimitPower
+        lp = LimitPower(logger, params, env_power)
+        power = lp.clean_limited_power(plant_id, True)
+    return power
+
+
 def cleaning(df, name, logger, cols=None, dup=True, col_time='Datetime'):
     logger.info("开始清洗:{}……".format(name))
     data = df.copy()

+ 4 - 0
app/logs/2025-05-19/south-forecast.2025-05-19.0.log

@@ -0,0 +1,4 @@
+2025-05-19 15:43:24,087 - 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-19 16:44:05,165 - 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

+ 24 - 0
app/logs/2025-05-20/south-forecast.2025-05-20.0.log

@@ -0,0 +1,24 @@
+2025-05-20 08:46:22,979 - 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-20 08:47:43,150 - 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-20 08:50:31,419 - 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-20 08:51:17,995 - 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-20 08:53:38,142 - 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-20 08:54:53,222 - 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-20 08:55:34,370 - 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-20 09:08:05,293 - 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-20 09:11:17,002 - 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-20 09:13:22,400 - 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-20 09:14:23,050 - 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-20 09:15:34,607 - 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

+ 0 - 0
app/model/config.yaml → app/model/config.yml


+ 5 - 51
app/model/main.py

@@ -33,55 +33,12 @@ from app.model.task_worker import station_task
 """
 
 
-def clean_power(power, env, plant_id):
-    env_power = pd.merge(env, power, on=params['col_time'])
-    if 'HubSpeed' in env.columns.tolist():
-        from app.common.limited_power_wind import LimitPower
-        lp = LimitPower(logger, params, env_power)
-        power = lp.clean_limited_power(plant_id, True)
-    elif 'Irradiance' in env.columns.tolist():
-        from app.common.limited_power_solar import LimitPower
-        lp = LimitPower(logger, params, env_power)
-        power = lp.clean_limited_power(plant_id, True)
-    return power
-
-
-def input_file_handler(input_file: str, model_name: str):
-    # DQYC:短期预测,qy:区域级
-    if 'dqyc' in input_file.lower():
-        station_info, station_info_d, nwp, nwp_h, power, nwp_v, nwp_v_h, env = material(input_file, True)
-        cap = round(float(station_info['PlantCap'][0]), 2)
-        plant_id = int(station_info['PlantID'][0])
-        # 含有model,训练
-        if 'model' in input_file.lower():
-            if env is not None and params['clean_power']:     # 进行限电清洗
-                power = clean_power(power, env, plant_id)
-            train_data = pd.merge(nwp_v_h, power, on=params['col_time'])
-            if model_name == 'fmi':
-                from app.model.tf_fmi_train import model_training
-            elif model_name == 'cnn':
-                from app.model.tf_cnn_train import model_training
-            else:
-                from app.model.tf_lstm_train import model_training
-            model_training(train_data, input_file, cap)
-        # 含有predict,预测
-        else:
-            logger.info("训练路径错误!")
-    else:
-        # 区域级预测:未完
-        basic_area = material(input_file, False)
-
-def get_station_list(input_file):
-    return [str(child) for child in Path(input_file).iterdir() if child.is_dir()]
-
 def main():
+    # ---------------------------- 解析参数 ----------------------------
     # 创建解析器对象
-    # parser = argparse.ArgumentParser(description="程序描述")
     parser = myargparse(description='算法', add_help=False)
-    # 创建
     # 添加参数
     parser.add_argument("input_file", help="输入文件路径")    # 第一个位置参数
-
     parser.add_argument("--model_name", default="lstm", help='选择短期模型')    # 第二个位置参数
     # 解析参数
     opt = parser.parse_args_and_yaml()
@@ -89,21 +46,18 @@ def main():
     # 使用参数
     print(f"文件: {opt.input_file}")
 
-    input_file_handler(opt.input_file, opt.model_name)
-
-
-    # ----------------------------
-
-        # 初始化资源管理器
+    # ---------------------------- 配置计算资源和任务 ----------------------------
+    # 初始化资源管理器
     rc = ResourceController(
         max_workers=opt.system['max_workers'],
         gpu_list=opt.system['gpu_devices']
     )
 
     # 生成任务列表
-    all_stations = get_station_list(opt.input_file)
+    all_stations = [str(child) for child in Path(opt.input_file).iterdir() if child.is_dir()]
     task_func = partial(station_task, config=config)
 
+    # ---------------------------- 监控任务 ----------------------------
     # 进度跟踪
     completed = 0
     with tqdm(total=len(all_stations)) as pbar:

+ 1 - 1
app/model/material.py

@@ -10,7 +10,7 @@ from concurrent.futures import ThreadPoolExecutor
 from functools import partial
 from app.model.config import myargparse
 
-args = myargparse(discription="算法批量修模", add_help=False)
+args = myargparse(description="算法批量修模", add_help=False)
 
 class MaterialLoader:
     def __init__(self, base_path, lazy_load=True):

+ 1 - 1
app/model/task_worker.py

@@ -9,7 +9,7 @@ import logging
 import pandas as pd
 from app.model.tf_model_train import ModelTrainer
 from app.model.material import MaterialLoader
-mate = MaterialLoader()
+mate = MaterialLoader(base_path='E:/compete/app/model/data/DQYC/qy/62/1002/2025-04-21/IN')
 
 def station_task(station_id, config):
     """单个场站训练任务"""

+ 2 - 1
app/model/tf_model_train.py

@@ -17,7 +17,8 @@ from app.common.tf_lstm import TSHandler
 from app.common.dbmg import MongoUtils
 from app.common.data_handler import DataHandler, write_number_to_file
 from app.model.config import myargparse
-args = myargparse(discription="算法批量修模", add_help=False)
+from app.common.logs import logger
+args = myargparse(description="算法批量修模", add_help=False)
 
 mgUtils = MongoUtils(logger)