|
@@ -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
|