|
|
@@ -25,6 +25,7 @@ class SDHU_AB(BaseDevice):
|
|
|
self,
|
|
|
DHU_type = 'A',
|
|
|
exist_Fa_H = True,
|
|
|
+ exist_Fa_H0 = False,
|
|
|
wheel_1 = None,
|
|
|
coolingcoil_2 = 'CoolingCoil2',
|
|
|
heatingcoil_1 = 'SteamCoil',
|
|
|
@@ -49,11 +50,13 @@ class SDHU_AB(BaseDevice):
|
|
|
'mixed_2' : mixed_2
|
|
|
}
|
|
|
self.exist_Fa_H = exist_Fa_H
|
|
|
+ self.exist_Fa_H0 = exist_Fa_H0
|
|
|
self.other_info = other_info if other_info is not None else {}
|
|
|
self.record_load_info(
|
|
|
components_str = self.components_str,
|
|
|
DHU_type = self.DHU_type,
|
|
|
exist_Fa_H = self.exist_Fa_H,
|
|
|
+ exist_Fa_H0 = self.exist_Fa_H0,
|
|
|
other_info = self.other_info
|
|
|
)
|
|
|
|
|
|
@@ -79,8 +82,6 @@ class SDHU_AB(BaseDevice):
|
|
|
@property
|
|
|
def model_input_data_columns(self):
|
|
|
columns = {
|
|
|
- 'Tin_F' : 'coil_1_ToutA',
|
|
|
- 'Hin_F' : 'coil_1_HoutA',
|
|
|
'fan_1_Hz' : 'fan_1_Hz',
|
|
|
'fan_2_Hz' : 'fan_2_Hz',
|
|
|
'coil_2_TinW' : 'coil_2_TinW',
|
|
|
@@ -90,9 +91,21 @@ class SDHU_AB(BaseDevice):
|
|
|
if self.exist_Fa_H:
|
|
|
columns['mixed_1_TinM'] = 'mixed_1_TinM'
|
|
|
columns['mixed_1_HinM'] = 'mixed_1_HinM'
|
|
|
- if self.DHU_type == 'A':
|
|
|
+
|
|
|
+ if self.exist_Fa_H0:
|
|
|
+ columns['coil_1_ToutA'] = 'mixed_0_ToutA'
|
|
|
+ columns['coil_1_HoutA'] = 'mixed_0_HoutA'
|
|
|
+ else:
|
|
|
columns['coil_1_ToutA'] = 'coil_1_ToutA'
|
|
|
columns['coil_1_HoutA'] = 'coil_1_HoutA'
|
|
|
+
|
|
|
+ if self.DHU_type == 'A':
|
|
|
+ columns['Fa_TinA'] = 'Fa_TinA'
|
|
|
+ columns['Fa_HinA'] = 'Fa_HinA'
|
|
|
+ elif self.DHU_type == 'B':
|
|
|
+ columns['mixed_2_TinM'] = 'mixed_2_TinM'
|
|
|
+ columns['mixed_2_HinM'] = 'mixed_2_HinM'
|
|
|
+
|
|
|
return columns
|
|
|
|
|
|
@property
|
|
|
@@ -131,7 +144,12 @@ class SDHU_AB(BaseDevice):
|
|
|
|
|
|
with pm.Model() as self.MODEL_PYMC:
|
|
|
param_prior = {name:comp.prior() for name,comp in self.components.items()}
|
|
|
- param_prior['F_air'] = AirFlow_SDHU_A.prior(exist_Fa_H = self.exist_Fa_H)
|
|
|
+ if self.DHU_type == 'A':
|
|
|
+ param_prior['F_air'] = AirFlow_SDHU_A.prior(exist_Fa_H = self.exist_Fa_H)
|
|
|
+ elif self.DHU_type == 'B':
|
|
|
+ param_prior['F_air'] = AirFlow_SDHU_B.prior(exist_Fa_H = self.exist_Fa_H)
|
|
|
+ else:
|
|
|
+ raise NotImplementedError
|
|
|
|
|
|
res = self.model(
|
|
|
**{k:input_data.loc[:,v].values for k,v in self.model_input_data_columns.items()},
|
|
|
@@ -199,6 +217,7 @@ class SDHU_AB(BaseDevice):
|
|
|
.rm_rule('State != 1')
|
|
|
.rm_rule('fan_1_Hz < 10').rm_rule('fan_2_Hz < 10')
|
|
|
.rm_outrange(method='raw',upper=140,lower=20,include_cols=['wheel_1_TinR'])
|
|
|
+ .rm_outrange(method='raw',upper=15,lower=-60,include_cols=['coil_2_DoutA'])
|
|
|
)
|
|
|
if 'observed' in data_type:
|
|
|
filter_columns += list(self.model_observe_data_columns.values())
|
|
|
@@ -206,6 +225,7 @@ class SDHU_AB(BaseDevice):
|
|
|
fill = 0 if fill_zero else None,
|
|
|
save_log = save_log
|
|
|
)
|
|
|
+ clean_data = clean_data.loc[:,filter_columns]
|
|
|
return clean_data
|
|
|
|
|
|
|
|
|
@@ -319,8 +339,8 @@ class SDHU_AB(BaseDevice):
|
|
|
|
|
|
|
|
|
def model_A(
|
|
|
- Tin_F, # 前表冷后温度
|
|
|
- Hin_F, # 前表冷后湿度
|
|
|
+ Fa_TinA, # 前表冷后温度
|
|
|
+ Fa_HinA, # 前表冷后湿度
|
|
|
coil_1_ToutA,
|
|
|
coil_1_HoutA,
|
|
|
fan_1_Hz, # 处理侧风机频率
|
|
|
@@ -348,8 +368,8 @@ def model_A(
|
|
|
TinR = wheel_1_TinR,
|
|
|
HinR = 0,
|
|
|
FR = air_flow['wheel_1_FaR'],
|
|
|
- TinC = Tin_F,
|
|
|
- HinC = Hin_F,
|
|
|
+ TinC = Fa_TinA,
|
|
|
+ HinC = Fa_HinA,
|
|
|
FC = air_flow['wheel_1_FaC'],
|
|
|
engine = engine,
|
|
|
param = param['wheel_1']
|
|
|
@@ -385,8 +405,8 @@ def model_A(
|
|
|
TinR = wheel_1_TinR,
|
|
|
HinR = wheel_1_res['HoutC'],
|
|
|
FR = air_flow['wheel_1_FaR'],
|
|
|
- TinC = Tin_F,
|
|
|
- HinC = Hin_F,
|
|
|
+ TinC = Fa_TinA,
|
|
|
+ HinC = Fa_HinA,
|
|
|
FC = air_flow['wheel_1_FaC'],
|
|
|
engine = engine,
|
|
|
param = param['wheel_1']
|
|
|
@@ -420,8 +440,8 @@ def model_A(
|
|
|
}
|
|
|
|
|
|
def model_B(
|
|
|
- Tin_Fr, # 再生侧入口温度
|
|
|
- Hin_Fr, # 再生侧入口湿度
|
|
|
+ mixed_2_TinM, # 再生侧入口温度
|
|
|
+ mixed_2_HinM, # 再生侧入口湿度
|
|
|
coil_1_ToutA,
|
|
|
coil_1_HoutA,
|
|
|
fan_1_Hz, # 处理侧风机频率
|
|
|
@@ -446,7 +466,7 @@ def model_B(
|
|
|
HinP = coil_1_HoutA,
|
|
|
FP = air_flow['wheel_1_FaP'],
|
|
|
TinR = wheel_1_TinR,
|
|
|
- HinR = Hin_Fr,
|
|
|
+ HinR = mixed_2_HinM,
|
|
|
FR = air_flow['wheel_1_FaR'],
|
|
|
engine = engine,
|
|
|
param = param['wheel_1']
|
|
|
@@ -473,7 +493,7 @@ def model_B(
|
|
|
)
|
|
|
# 前再生加热盘管
|
|
|
heatingcoil_1_res = components['heatingcoil_1'].model(
|
|
|
- TinA = Tin_Fr,
|
|
|
+ TinA = mixed_2_TinM,
|
|
|
ToutA = wheel_1_TinR,
|
|
|
FA = air_flow['heatingcoil_1_Fa'],
|
|
|
param = param['heatingcoil_1'],
|
|
|
@@ -534,8 +554,32 @@ class AirFlow_SDHU_A:
|
|
|
class AirFlow_SDHU_B:
|
|
|
@classmethod
|
|
|
def model(cls,fan_1_Hz,fan_2_Hz,param):
|
|
|
- ...
|
|
|
-
|
|
|
+ F_air_X2_base = 1
|
|
|
+ F_air_H_base = param['F_air'].get('H_base',0)
|
|
|
+ F_air_P_base = param['F_air']['P_base']
|
|
|
+
|
|
|
+ Fa_H = F_air_H_base + (fan_1_Hz/50) * param['F_air'].get('HzP_H',0)
|
|
|
+ Fa_X2 = F_air_X2_base + (fan_1_Hz/50) * param['F_air']['HzP_X2']
|
|
|
+ Fa_S = Fa_H + Fa_X2
|
|
|
+ Fa_P = F_air_P_base + (fan_2_Hz/50) * param['F_air']['HzR_P']
|
|
|
+ return {
|
|
|
+ 'wheel_1_FaP' : Fa_X2,
|
|
|
+ 'wheel_1_FaR' : Fa_P,
|
|
|
+ 'coil_2_FaA' : Fa_S,
|
|
|
+ 'mixed_1_FaM' : Fa_H,
|
|
|
+ 'mixed_1_FaA' : Fa_X2,
|
|
|
+ 'heatingcoil_1_Fa': Fa_P
|
|
|
+ }
|
|
|
+ @classmethod
|
|
|
+ def prior(cls,exist_Fa_H):
|
|
|
+ param = {}
|
|
|
+ param['HzP_X2'] = pm.HalfNormal('F_air_HzP_X2',sigma=1,initval=0.5)
|
|
|
+ param['HzR_P'] = pm.HalfNormal('F_air_HzR_P',sigma=1,initval=0.5)
|
|
|
+ param['P_base'] = pm.TruncatedNormal('F_air_P_base',mu=1,sigma=0.2,lower=0,initval=1)
|
|
|
+ if exist_Fa_H:
|
|
|
+ param['H_base'] = pm.TruncatedNormal('F_air_H_base',mu=1,sigma=0.2,lower=0,initval=1)
|
|
|
+ param['HzP_H'] = pm.HalfNormal('F_air_HzP_H',sigma=1,initval=0.5)
|
|
|
+ return param
|
|
|
|
|
|
|
|
|
def cal_Q_waste(
|