Explorar o código

(Modify) reconstruction data

Kanggu Park %!s(int64=4) %!d(string=hai) anos
pai
achega
32b40ff222
Modificáronse 1 ficheiros con 21 adicións e 18 borrados
  1. 21 18
      RealTimeSimulator_HeatStorageSystem.py

+ 21 - 18
RealTimeSimulator_HeatStorageSystem.py

@@ -23,7 +23,6 @@ def MBE(y_observed, y_pred):
 def CVRMSE(y_observed, y_pred):
     return (np.sqrt(np.mean((y_observed - y_pred)*(y_observed - y_pred)))/np.mean(y_observed))*100
 
-
 def Check_AlivedTimeStamp(RawData, ComparedData, idx_raw, idx_comp, unit):
     if unit == 'daily':
         if datetime.date(RawData[idx_raw].year, RawData[idx_raw].month, RawData[idx_raw].day) == datetime.date(ComparedData[idx_comp].year, ComparedData[idx_comp].month, ComparedData[idx_comp].day):
@@ -53,7 +52,6 @@ def detect_unknown_duplicated_zero_data_for_faciilty(raw_Data, startday, lastday
 			for idx_time in range(OrgDataRes):
 				CumTime += datetime.timedelta(minutes = 15)
 				StandardTimeStamp_QuarterUnit.append(CumTime)
-							
 			
 	### Extract data within day period
 	Raw_Date=[]     # raw data (date)
@@ -66,7 +64,7 @@ def detect_unknown_duplicated_zero_data_for_faciilty(raw_Data, startday, lastday
 			if datetime.date(raw_Data[i][4].year,raw_Data[i][4].month,raw_Data[i][4].day) > lastday:
 				break
 				
-	Data_len=len(Raw_Date)
+	Data_len = len(Raw_Date)
 	if isRecent:
 		DataAct_len = (Day_Period-1)*OrgDataRes + now.hour*4 + int(now.minute/15)+1
 	else:
@@ -111,19 +109,25 @@ def detect_unknown_duplicated_zero_data_for_faciilty(raw_Data, startday, lastday
 	return StandardTimeStamp_QuarterUnit, data_w_nan, DataCountMat
 
 
-### 예보데이터는 내일 데이터까지 확보해야하기때문에 리스트 수가 설비 데이터에 비해 하루 치가 더 많다
+### 21시 후에는 예보데이터는 내일 데이터를 기반으로 하기에 설비 데이터보다 하루 뒤 시점 데이터를 가져온다.
+### 21시 전에는 오늘 데이터를 가져오면 된다. (예보 데이터가 21시를 기점으로 업데이트되기 때문)
 def detect_unknown_duplicated_zero_data_for_WeatherForecast3h(raw_Data, startday, lastday, Day_Period):
+	now = datetime.datetime.now().now()
+	if now.hour > 21:
+		Day_Period += 1
+		lastday += datetime.timedelta(days=1)
+		
 	StandardTimeStamp_DayUnit = []
 	# Create intact time stamp 
-	for idx_day in range(Day_Period+1):
+	for idx_day in range(Day_Period):
 		StandardTimeStamp_DayUnit.append(startday + datetime.timedelta(days=idx_day))
-		
+	
 	### Extract data within day period
-	Raw_Value_max=[]    # raw data (value)
-	Raw_Value_min=[]
-	Raw_Value_mean=[]
-	Raw_Date=[]     # raw data (date)
-	tmp_data=[raw_Data[0][5]]
+	Raw_Value_max = []    # raw data (value)
+	Raw_Value_min = []
+	Raw_Value_mean = []
+	Raw_Date = []     # raw data (date)
+	tmp_data = [raw_Data[0][5]]
 	for i in range(len(raw_Data)):        
 		if i == len(raw_Data)-1:
 			Raw_Date.append(raw_Data[i][4])
@@ -131,7 +135,7 @@ def detect_unknown_duplicated_zero_data_for_WeatherForecast3h(raw_Data, startday
 			Raw_Value_min.append(min(tmp_data))
 			Raw_Value_mean.append(np.mean(tmp_data))
 		elif datetime.date(raw_Data[i][4].year,raw_Data[i][4].month,raw_Data[i][4].day) >= startday:
-			if datetime.date(raw_Data[i][4].year,raw_Data[i][4].month,raw_Data[i][4].day) <= lastday + datetime.timedelta(days=1):
+			if datetime.date(raw_Data[i][4].year,raw_Data[i][4].month,raw_Data[i][4].day) <= lastday:
 				if datetime.date(raw_Data[i][4].year,raw_Data[i][4].month,raw_Data[i][4].day) != datetime.date(raw_Data[i+1][4].year,raw_Data[i+1][4].month,raw_Data[i+1][4].day):
 					Raw_Date.append(raw_Data[i][4])
 					Raw_Value_max.append(max(tmp_data))
@@ -139,10 +143,10 @@ def detect_unknown_duplicated_zero_data_for_WeatherForecast3h(raw_Data, startday
 					Raw_Value_mean.append(np.mean(tmp_data))
 					tmp_data=[]
 				tmp_data.append(raw_Data[i+1][5])
-			if datetime.date(raw_Data[i][4].year,raw_Data[i][4].month,raw_Data[i][4].day) > lastday + datetime.timedelta(days=1):
+			if datetime.date(raw_Data[i][4].year,raw_Data[i][4].month,raw_Data[i][4].day) > lastday:
 				break
-
-	Data_len=len(Raw_Date)
+				
+	Data_len = len(Raw_Date)
 	### Unknown/duplicated data counts
 	DataCount=[]
 	for i in range(len(StandardTimeStamp_DayUnit)):
@@ -688,15 +692,14 @@ if __name__ == "__main__" :
 						Y_tmp2.append(yTrain2[i][j])
 
 			mean_RefConsume1=np.mean(Y_tmp1)      # 냉동기1 전력량 평균
-			mean_RefConsume2=np.mean(Y_tmp2)      # 냉동기2 전력량 평균
-			
+			mean_RefConsume2=np.mean(Y_tmp2)      # 냉동기2 전력량 평균			
 			##############################################################################################
 			##############################################################################################
 
 			WFTemperature_Date, WFTemperatureMax_w_nan, WFTemperatureMin_w_nan, WFTemperatureMean_w_nan, DataCountMat_WFTemperature = detect_unknown_duplicated_zero_data_for_WeatherForecast3h(rawWFTemperature, startday, lastday, DayPeriod)
 			WFHumidity_Date, WFHumidityMax_w_nan, WFHumidityMin_w_nan, WFHumidityMean_w_nan, DataCountMat_WFHumidity = detect_unknown_duplicated_zero_data_for_WeatherForecast3h(rawWFHumidity, startday, lastday, DayPeriod)
 
-			RawDate = ChillerCalAmount_Date
+			RawDate = ChStatusIcing_Date
 			
 			## 축열조 상태 변수 - 제빙운전:10, 축단운전:20, 병렬운전:30, 냉단운전:40, OFF:0
 			Icing=10