David 1 tháng trước cách đây
mục cha
commit
7d969350da

+ 4 - 4
app/common/limited_power_solar.py

@@ -25,7 +25,7 @@ class LimitPower(object):
         glob_rp = {}       # dict: key 辐照度分段中间点 value 分段内的实际功率
         for index, row in self.weather_power.iterrows():
             glob_ = row[self.opt.usable_power_s["env"]]
-            rp = row['C_REAL_VALUE']
+            rp = row[self.opt.target]
             for i, seg in enumerate(segs):
                 if glob_ <= seg and not (i > 0 and rp < 1):
                     glob_rp.setdefault(xs[i], []).append(rp)
@@ -104,7 +104,7 @@ class LimitPower(object):
         new_weather_power = []
         for index, row in self.weather_power.iterrows():
             zfs = row[self.opt.usable_power_s["env"]]
-            rp = row['C_REAL_VALUE']
+            rp = row[self.opt.target]
             if self.filter_unlimited_power(zfs, rp, self.opt.usable_power_s['k'], self.opt.usable_power_s['bias'] * self.opt.usable_power_s['coe']):
                 row['c'] = 'red'
                 new_weather_power.append(row)
@@ -112,13 +112,13 @@ class LimitPower(object):
                 row['c'] = 'blue'
                 new_weather_power.append(row)
         new_weather_power = pd.concat(new_weather_power, axis=1).T
-        new_weather_power.plot.scatter(x=self.opt.usable_power_s["env"], y='C_REAL_VALUE', c='c')
+        new_weather_power.plot.scatter(x=self.opt.usable_power_s["env"], y='Power', c='c')
         plt.savefig(current_path + '/figs/测光法{}.png'.format(name))
         new_weather_power = new_weather_power[new_weather_power['c'] == 'red']
         number = len(new_weather_power)
         self.logger.info("测光法-未清洗限电前,总共有:{}条数据".format(len(self.weather_power)))
         self.logger.info("测光法-清除限电后保留的点有:" + str(number) + " 占比:" + str(round(number / len(self.weather_power), 2)))
-        return new_weather_power.loc[:, ['C_TIME', 'C_REAL_VALUE', 'C_ABLE_VALUE']]
+        return new_weather_power.loc[:, ['C_TIME', self.opt.target]]
 
 
 

+ 4 - 4
app/common/limited_power_wind.py

@@ -29,7 +29,7 @@ class LimitPower(object):
         glob_rp = {}       # dict: key 辐照度分段中间点 value 分段内的实际功率
         for index, row in self.weather_power.iterrows():
             ws_ = row[self.opt.usable_power_w["env"]]
-            rp = row['C_REAL_VALUE']
+            rp = row[self.opt.target]
             for i, seg in enumerate(self.segs):
                 if ws_ <= seg:
                     glob_rp.setdefault(self.xs[i], []).append(rp)
@@ -126,7 +126,7 @@ class LimitPower(object):
         # fig, ax = plt.subplots()
         for index, row in self.weather_power.iterrows():
             zfs = row[self.opt.usable_power_w["env"]]
-            rp = row['C_REAL_VALUE']
+            rp = row[self.opt.target]
             if zfs < 0 or rp < 0:
                 continue
             if self.filter_unlimited_power(zfs, rp) and zfs <= self.max_ws:
@@ -136,13 +136,13 @@ class LimitPower(object):
                 row['c'] = 'blue'
                 new_weather_power.append(row)
         new_weather_power = pd.concat(new_weather_power, axis=1).T
-        new_weather_power.plot.scatter(x=self.opt.usable_power_w["env"], y='C_REAL_VALUE', c='c')
+        new_weather_power.plot.scatter(x=self.opt.usable_power_w["env"], y='Power', c='c')
         plt.savefig(current_path + '/figs/测风法{}.png'.format(name))
         new_weather_power = new_weather_power[new_weather_power['c'] == 'red']
         number = len(new_weather_power)
         self.logger.info("未清洗限电前,总共有:{}条数据".format(len(self.weather_power)))
         self.logger.info("清除限电后保留的点有:" + str(number) + " 占比:" + str(round(number / len(self.weather_power), 2)))
-        return new_weather_power.loc[:, ['C_TIME', 'C_REAL_VALUE', 'C_ABLE_VALUE', self.opt.usable_power_w['env']]]
+        return new_weather_power.loc[:, ['C_TIME', self.opt.tagert]]
 
 
 

+ 0 - 0
app/logs/2025-04-02/south-forecast.2025-04-02.0.log


+ 9 - 0
app/model/main.py

@@ -66,6 +66,12 @@ def material(input_file, isDq=True):
         basic_area = pd.read_csv(input_file / basi_area, sep='\s+', header=0)
         return basic_area
 
+def clean_limited_power1(power, env):
+    power['Datetime'] = pd.to_datetime(power['Datetime'])
+    env['Datetime'] = pd.to_datetime(env['Datetime'])
+    power_env = pd.merge(power, env, on='Datetime')
+
+
 def input_file_handler(input_file: str):
     # DQYC:短期预测,qy:区域级
     if 'dqyc' in input_file.lower():
@@ -73,6 +79,9 @@ def input_file_handler(input_file: str):
         cap = round(station_info['PlantCap'][0], 2)
         # 含有model,训练
         if 'model' in input_file.lower():
+            # 进行限电清洗
+            if env is not None:
+                pass
             train_data = pd.merge(nwp_v_h, power, on='Datetime')
             if args['model_name'] == 'fmi':
                 from app.model.tf_fmi_train import model_training