def setUp(self): # Setup building self.building_source_file_path = os.path.join(self.get_unittest_path(), 'resources', 'building', \ 'LBNL71T_Emulation_JModelica_v2.fmu'); self.zone_names = ['wes', 'hal', 'eas']; weather_path = os.path.join(self.get_unittest_path(), 'resources', 'weather', \ 'USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw'); internal_path = os.path.join(self.get_unittest_path(), 'resources', 'internal', 'sampleCSV.csv'); internal_variable_map = {'intRad_wes' : ('wes', 'intRad', units.W_m2), \ 'intCon_wes' : ('wes', 'intCon', units.W_m2), \ 'intLat_wes' : ('wes', 'intLat', units.W_m2), \ 'intRad_hal' : ('hal', 'intRad', units.W_m2), \ 'intCon_hal' : ('hal', 'intCon', units.W_m2), \ 'intLat_hal' : ('hal', 'intLat', units.W_m2), \ 'intRad_eas' : ('eas', 'intRad', units.W_m2), \ 'intCon_eas' : ('eas', 'intCon', units.W_m2), \ 'intLat_eas' : ('eas', 'intLat', units.W_m2)}; control_path = os.path.join(self.get_unittest_path(), 'resources', 'building', 'ControlCSV_0.csv'); control_variable_map = {'conHeat_wes' : ('conHeat_wes', units.unit1), \ 'conHeat_hal' : ('conHeat_hal', units.unit1), \ 'conHeat_eas' : ('conHeat_eas', units.unit1)}; # Measurements self.measurements = {}; self.measurements['wesTdb'] = {'Sample' : variables.Static('wesTdb_sample', 600, units.s)}; self.measurements['halTdb'] = {'Sample' : variables.Static('halTdb_sample', 1200, units.s)}; self.measurements['easTdb'] = {'Sample' : variables.Static('easTdb_sample', 1200, units.s)}; # Exodata self.weather = exodata.WeatherFromEPW(weather_path); self.internal = exodata.InternalFromCSV(internal_path, internal_variable_map, tz_name = self.weather.tz_name); self.control = exodata.ControlFromCSV(control_path, control_variable_map, tz_name = self.weather.tz_name); # Parameters self.parameter_data = {}; self.parameter_data['lat'] = {}; self.parameter_data['lat']['Value'] = self.weather.lat;
def setUp(self): self.MPCPyPath = utility.get_MPCPy_path(); ## Setup building fmu emulation self.building_source_file_path = self.MPCPyPath + os.sep + 'resources' + os.sep + 'building' + os.sep + 'LBNL71T_Emulation_JModelica_v2.fmu'; self.zone_names = ['wes', 'hal', 'eas']; self.weather_path = self.MPCPyPath + os.sep + 'resources' + os.sep + 'weather' + os.sep + 'USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw'; self.internal_path = self.MPCPyPath + os.sep + 'resources' + os.sep + 'internal' + os.sep + 'sampleCSV.csv'; self.internal_variable_map = {'intRad_wes' : ('wes', 'intRad', units.W_m2), \ 'intCon_wes' : ('wes', 'intCon', units.W_m2), \ 'intLat_wes' : ('wes', 'intLat', units.W_m2), \ 'intRad_hal' : ('hal', 'intRad', units.W_m2), \ 'intCon_hal' : ('hal', 'intCon', units.W_m2), \ 'intLat_hal' : ('hal', 'intLat', units.W_m2), \ 'intRad_eas' : ('eas', 'intRad', units.W_m2), \ 'intCon_eas' : ('eas', 'intCon', units.W_m2), \ 'intLat_eas' : ('eas', 'intLat', units.W_m2)}; self.control_path = self.MPCPyPath + os.sep + 'resources' + os.sep + 'building' + os.sep + 'ControlCSV_0.csv'; self.control_variable_map = {'conHeat_wes' : ('conHeat_wes', units.unit1), \ 'conHeat_hal' : ('conHeat_hal', units.unit1), \ 'conHeat_eas' : ('conHeat_eas', units.unit1)}; # Measurements self.measurements = {}; self.measurements['wesTdb'] = {'Sample' : variables.Static('wesTdb_sample', 1800, units.s)}; self.measurements['halTdb'] = {'Sample' : variables.Static('halTdb_sample', 1800, units.s)}; self.measurements['easTdb'] = {'Sample' : variables.Static('easTdb_sample', 1800, units.s)}; self.measurements['wesPhvac'] = {'Sample' : variables.Static('easTdb_sample', 1800, units.s)}; self.measurements['halPhvac'] = {'Sample' : variables.Static('easTdb_sample', 1800, units.s)}; self.measurements['easPhvac'] = {'Sample' : variables.Static('easTdb_sample', 1800, units.s)}; self.measurements['Ptot'] = {'Sample' : variables.Static('easTdb_sample', 1800, units.s)}; ## Setup model self.mopath = self.MPCPyPath + os.sep + 'resources' + os.sep + 'model' + os.sep + 'LBNL71T_MPC.mo'; self.modelpath = 'LBNL71T_MPC.MPC'; self.libraries = os.environ.get('MODELICAPATH'); self.estimate_method = models.JModelica; self.validation_method = models.RMSE; # Instantiate exo data sources self.weather = exodata.WeatherFromEPW(self.weather_path); self.internal = exodata.InternalFromCSV(self.internal_path, self.internal_variable_map, tz_name = self.weather.tz_name); self.control = exodata.ControlFromCSV(self.control_path, self.control_variable_map, tz_name = self.weather.tz_name); # Parameters self.parameters = exodata.ParameterFromCSV(self.MPCPyPath + os.sep + 'resources' + os.sep + 'model' + os.sep + 'LBNL71T_Parameters.csv'); self.parameters.collect_data(); self.parameters.data['lat'] = {}; self.parameters.data['lat']['Value'] = self.weather.lat; # Instantiate building building_parameters_data = {}; building_parameters_data['lat'] = {}; building_parameters_data['lat']['Value'] = self.weather.lat; self.building = systems.EmulationFromFMU(self.measurements, \ fmupath = self.building_source_file_path, \ zone_names = self.zone_names, \ parameter_data = building_parameters_data);
def setUp(self): csv_filepath = os.path.join(self.get_unittest_path(), 'resources', 'internal', 'sampleCSV.csv'); variable_map = {'intRad_wes' : ('wes', 'intRad', units.W_m2), \ 'intCon_wes' : ('wes', 'intCon', units.W_m2), \ 'intLat_wes' : ('wes', 'intLat', units.W_m2), \ 'intRad_hal' : ('hal', 'intRad', units.W_m2), \ 'intCon_hal' : ('hal', 'intCon', units.W_m2), \ 'intLat_hal' : ('hal', 'intLat', units.W_m2), \ 'intRad_eas' : ('eas', 'intRad', units.W_m2), \ 'intCon_eas' : ('eas', 'intCon', units.W_m2), \ 'intLat_eas' : ('eas', 'intLat', units.W_m2)}; # Instantiate internal object self.internal = exodata.InternalFromCSV(csv_filepath, \ variable_map);
def setUp(self): self.csv_filepath = os.path.join(utility.get_MPCPy_path(), 'resources', 'internal', 'sampleCSV.csv') self.variable_map = {'intRad_wes' : ('wes', 'intRad', units.W_m2), \ 'intCon_wes' : ('wes', 'intCon', units.W_m2), \ 'intLat_wes' : ('wes', 'intLat', units.W_m2), \ 'intRad_hal' : ('hal', 'intRad', units.W_m2), \ 'intCon_hal' : ('hal', 'intCon', units.W_m2), \ 'intLat_hal' : ('hal', 'intLat', units.W_m2), \ 'intRad_eas' : ('eas', 'intRad', units.W_m2), \ 'intCon_eas' : ('eas', 'intCon', units.W_m2), \ 'intLat_eas' : ('eas', 'intLat', units.W_m2)} # Instantiate internal object self.internal = exodata.InternalFromCSV(self.csv_filepath, \ self.variable_map)
def setUp(self): ## Setup building fmu emulation self.building_source_file_path_est = os.path.join( self.get_unittest_path(), 'resources', 'building', 'RealMeasurements_est.csv') self.building_source_file_path_val = os.path.join( self.get_unittest_path(), 'resources', 'building', 'RealMeasurements_val.csv') self.building_source_file_path_val_missing = os.path.join( self.get_unittest_path(), 'resources', 'building', 'RealMeasurements_val_missing.csv') self.zone_names = ['wes', 'hal', 'eas'] self.weather_path = os.path.join( self.get_unittest_path(), 'resources', 'weather', 'USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw') self.internal_path = os.path.join(self.get_unittest_path(), 'resources', 'internal', 'sampleCSV.csv') self.internal_variable_map = {'intRad_wes' : ('wes', 'intRad', units.W_m2), \ 'intCon_wes' : ('wes', 'intCon', units.W_m2), \ 'intLat_wes' : ('wes', 'intLat', units.W_m2), \ 'intRad_hal' : ('hal', 'intRad', units.W_m2), \ 'intCon_hal' : ('hal', 'intCon', units.W_m2), \ 'intLat_hal' : ('hal', 'intLat', units.W_m2), \ 'intRad_eas' : ('eas', 'intRad', units.W_m2), \ 'intCon_eas' : ('eas', 'intCon', units.W_m2), \ 'intLat_eas' : ('eas', 'intLat', units.W_m2)} self.control_path = os.path.join(self.get_unittest_path(), 'resources', 'building', 'ControlCSV_0.csv') self.control_variable_map = {'conHeat_wes' : ('conHeat_wes', units.unit1), \ 'conHeat_hal' : ('conHeat_hal', units.unit1), \ 'conHeat_eas' : ('conHeat_eas', units.unit1)} # Measurements self.measurements = {} self.measurements['wesTdb'] = { 'Sample': variables.Static('wesTdb_sample', 1800, units.s) } self.measurements['halTdb'] = { 'Sample': variables.Static('halTdb_sample', 1800, units.s) } self.measurements['easTdb'] = { 'Sample': variables.Static('easTdb_sample', 1800, units.s) } self.measurements['wesPhvac'] = { 'Sample': variables.Static('easTdb_sample', 1800, units.s) } self.measurements['halPhvac'] = { 'Sample': variables.Static('easTdb_sample', 1800, units.s) } self.measurements['easPhvac'] = { 'Sample': variables.Static('easTdb_sample', 1800, units.s) } self.measurements['Ptot'] = { 'Sample': variables.Static('easTdb_sample', 1800, units.s) } self.measurement_variable_map = { 'wesTdb_mea': ('wesTdb', units.K), 'halTdb_mea': ('halTdb', units.K), 'easTdb_mea': ('easTdb', units.K), 'wesPhvac_mea': ('wesPhvac', units.W), 'halPhvac_mea': ('halPhvac', units.W), 'easPhvac_mea': ('easPhvac', units.W), 'Ptot_mea': ('Ptot', units.W) } ## Setup model self.mopath = os.path.join(self.get_unittest_path(), 'resources', 'model', 'LBNL71T_MPC.mo') self.modelpath = 'LBNL71T_MPC.MPC' self.libraries = os.environ.get('MODELICAPATH') self.estimate_method = models.JModelica self.validation_method = models.RMSE # Instantiate exo data sources self.weather = exodata.WeatherFromEPW(self.weather_path) self.internal = exodata.InternalFromCSV(self.internal_path, self.internal_variable_map, tz_name=self.weather.tz_name) self.control = exodata.ControlFromCSV(self.control_path, self.control_variable_map, tz_name=self.weather.tz_name) # Parameters self.parameters = exodata.ParameterFromCSV( os.path.join(self.get_unittest_path(), 'resources', 'model', 'LBNL71T_Parameters.csv')) self.parameters.collect_data() self.parameters.data['lat'] = {} self.parameters.data['lat']['Value'] = self.weather.lat # Instantiate test building self.building_est = systems.RealFromCSV( self.building_source_file_path_est, self.measurements, self.measurement_variable_map, tz_name=self.weather.tz_name) # Exogenous collection time self.start_time_exodata = '1/1/2015' self.final_time_exodata = '1/30/2015' # Estimation time self.start_time_estimation = '1/1/2015' self.final_time_estimation = '1/4/2015' # Validation time self.start_time_validation = '1/4/2015' self.final_time_validation = '1/5/2015' # Measurement variables for estimate self.measurement_variable_list = ['wesTdb', 'easTdb', 'halTdb'] # Exodata self.weather.collect_data(self.start_time_exodata, self.final_time_exodata) self.internal.collect_data(self.start_time_exodata, self.final_time_exodata) self.control.collect_data(self.start_time_exodata, self.final_time_exodata) # Collect measurement data self.building_est.collect_measurements(self.start_time_estimation, self.final_time_estimation) # Instantiate model self.model = models.Modelica(self.estimate_method, \ self.validation_method, \ self.building_est.measurements, \ moinfo = (self.mopath, self.modelpath, self.libraries), \ zone_names = self.zone_names, \ weather_data = self.weather.data, \ internal_data = self.internal.data, \ control_data = self.control.data, \ parameter_data = self.parameters.data, \ tz_name = self.weather.tz_name) # Simulate model with initial guess self.model.simulate(self.start_time_estimation, self.final_time_estimation)
def setUp(self): ## Setup model self.mopath = os.path.join(self.get_unittest_path(), 'resources', 'model', 'LBNL71T_MPC.mo') self.modelpath = 'LBNL71T_MPC.MPC' self.libraries = os.environ.get('MODELICAPATH') self.estimate_method = models.JModelica self.validation_method = models.RMSE self.zone_names = ['wes', 'hal', 'eas'] # Measurements self.measurements = {} self.measurements['wesTdb'] = { 'Sample': variables.Static('wesTdb_sample', 1800, units.s) } self.measurements['halTdb'] = { 'Sample': variables.Static('halTdb_sample', 1800, units.s) } self.measurements['easTdb'] = { 'Sample': variables.Static('easTdb_sample', 1800, units.s) } self.measurements['wesPhvac'] = { 'Sample': variables.Static('easTdb_sample', 1800, units.s) } self.measurements['halPhvac'] = { 'Sample': variables.Static('easTdb_sample', 1800, units.s) } self.measurements['easPhvac'] = { 'Sample': variables.Static('easTdb_sample', 1800, units.s) } self.measurements['Ptot'] = { 'Sample': variables.Static('easTdb_sample', 1800, units.s) } ## Exodata # Exogenous collection time self.start_time_exodata = '1/1/2015' self.final_time_exodata = '1/30/2015' # Optimization time self.start_time_optimization = '1/2/2015' self.final_time_optimization = '1/3/2015' # Weather self.weather_path = os.path.join( self.get_unittest_path(), 'resources', 'weather', 'USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw') self.weather = exodata.WeatherFromEPW(self.weather_path) self.weather.collect_data(self.start_time_exodata, self.final_time_exodata) # Internal self.internal_path = os.path.join(self.get_unittest_path(), 'resources', 'internal', 'sampleCSV.csv') self.internal_variable_map = {'intRad_wes' : ('wes', 'intRad', units.W_m2), \ 'intCon_wes' : ('wes', 'intCon', units.W_m2), \ 'intLat_wes' : ('wes', 'intLat', units.W_m2), \ 'intRad_hal' : ('hal', 'intRad', units.W_m2), \ 'intCon_hal' : ('hal', 'intCon', units.W_m2), \ 'intLat_hal' : ('hal', 'intLat', units.W_m2), \ 'intRad_eas' : ('eas', 'intRad', units.W_m2), \ 'intCon_eas' : ('eas', 'intCon', units.W_m2), \ 'intLat_eas' : ('eas', 'intLat', units.W_m2)} self.internal = exodata.InternalFromCSV(self.internal_path, self.internal_variable_map, tz_name=self.weather.tz_name) self.internal.collect_data(self.start_time_exodata, self.final_time_exodata) # Control (as initialization) self.control_path = os.path.join(self.get_unittest_path(), 'resources', 'optimization', 'ControlCSV.csv') self.control_variable_map = {'conHeat_wes' : ('conHeat_wes', units.unit1), \ 'conHeat_hal' : ('conHeat_hal', units.unit1), \ 'conHeat_eas' : ('conHeat_eas', units.unit1)} self.control = exodata.ControlFromCSV(self.control_path, self.control_variable_map, tz_name=self.weather.tz_name) self.control.collect_data(self.start_time_exodata, self.final_time_exodata) # Parameters self.parameters_path = os.path.join(self.get_unittest_path(), 'outputs', 'model_parameters.txt') self.parameters = exodata.ParameterFromCSV(self.parameters_path) self.parameters.collect_data() # Constraints self.constraints_path = os.path.join( self.get_unittest_path(), 'resources', 'optimization', 'sampleConstraintCSV_Constant.csv') self.constraints_variable_map = {'wesTdb_min' : ('wesTdb', 'GTE', units.degC), \ 'wesTdb_max' : ('wesTdb', 'LTE', units.degC), \ 'easTdb_min' : ('easTdb', 'GTE', units.degC), \ 'easTdb_max' : ('easTdb', 'LTE', units.degC), \ 'halTdb_min' : ('halTdb', 'GTE', units.degC), \ 'halTdb_max' : ('halTdb', 'LTE', units.degC), \ 'der_wesTdb_min' : ('wesTdb', 'dGTE', units.K), \ 'der_wesTdb_max' : ('wesTdb', 'dLTE', units.K), \ 'der_easTdb_min' : ('easTdb', 'dGTE', units.K), \ 'der_easTdb_max' : ('easTdb', 'dLTE', units.K), \ 'der_halTdb_min' : ('halTdb', 'dGTE', units.K), \ 'der_halTdb_max' : ('halTdb', 'dLTE', units.K), \ 'conHeat_wes_min' : ('conHeat_wes', 'GTE', units.unit1), \ 'conHeat_wes_max' : ('conHeat_wes', 'LTE', units.unit1), \ 'conHeat_hal_min' : ('conHeat_hal', 'GTE', units.unit1), \ 'conHeat_hal_max' : ('conHeat_hal', 'LTE', units.unit1), \ 'conHeat_eas_min' : ('conHeat_eas', 'GTE', units.unit1), \ 'conHeat_eas_max' : ('conHeat_eas', 'LTE', units.unit1)} self.constraints = exodata.ConstraintFromCSV( self.constraints_path, self.constraints_variable_map, tz_name=self.weather.tz_name) self.constraints.collect_data(self.start_time_exodata, self.final_time_exodata) self.constraints.data['wesTdb']['Cyclic'] = variables.Static( 'wesTdb_cyclic', 1, units.boolean_integer) self.constraints.data['easTdb']['Cyclic'] = variables.Static( 'easTdb_cyclic', 1, units.boolean_integer) self.constraints.data['halTdb']['Cyclic'] = variables.Static( 'halTdb_cyclic', 1, units.boolean_integer) # Prices self.prices_path = os.path.join(self.get_unittest_path(), 'resources', 'optimization', 'PriceCSV.csv') self.price_variable_map = { 'pi_e': ('pi_e', units.unit1) } self.prices = exodata.PriceFromCSV(self.prices_path, self.price_variable_map, tz_name=self.weather.tz_name) self.prices.collect_data(self.start_time_exodata, self.final_time_exodata) ## Parameters self.parameters.data['lat'] = {} self.parameters.data['lat']['Value'] = self.weather.lat ## Instantiate model self.model = models.Modelica(self.estimate_method, \ self.validation_method, \ self.measurements, \ moinfo = (self.mopath, self.modelpath, self.libraries), \ zone_names = self.zone_names, \ weather_data = self.weather.data, \ internal_data = self.internal.data, \ control_data = self.control.data, \ parameter_data = self.parameters.data, \ tz_name = self.weather.tz_name)
def setUp(self): ## Setup building fmu emulation self.building_source_file_path_est = os.path.join( self.get_unittest_path(), 'resources', 'building', 'RealMeasurements_est.csv') self.building_source_file_path_val = os.path.join( self.get_unittest_path(), 'resources', 'building', 'RealMeasurements_val.csv') self.zone_names = ['wes', 'hal', 'eas'] self.weather_path = os.path.join( self.get_unittest_path(), 'resources', 'weather', 'USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw') self.internal_path = os.path.join(self.get_unittest_path(), 'resources', 'internal', 'sampleCSV.csv') self.internal_variable_map = {'intRad_wes' : ('wes', 'intRad', units.W_m2), \ 'intCon_wes' : ('wes', 'intCon', units.W_m2), \ 'intLat_wes' : ('wes', 'intLat', units.W_m2), \ 'intRad_hal' : ('hal', 'intRad', units.W_m2), \ 'intCon_hal' : ('hal', 'intCon', units.W_m2), \ 'intLat_hal' : ('hal', 'intLat', units.W_m2), \ 'intRad_eas' : ('eas', 'intRad', units.W_m2), \ 'intCon_eas' : ('eas', 'intCon', units.W_m2), \ 'intLat_eas' : ('eas', 'intLat', units.W_m2)} self.control_path = os.path.join(self.get_unittest_path(), 'resources', 'building', 'ControlCSV_0.csv') self.control_variable_map = {'conHeat_wes' : ('conHeat_wes', units.unit1), \ 'conHeat_hal' : ('conHeat_hal', units.unit1), \ 'conHeat_eas' : ('conHeat_eas', units.unit1)} # Measurements self.measurements = {} self.measurements['wesTdb'] = { 'Sample': variables.Static('wesTdb_sample', 1800, units.s) } self.measurements['halTdb'] = { 'Sample': variables.Static('halTdb_sample', 1800, units.s) } self.measurements['easTdb'] = { 'Sample': variables.Static('easTdb_sample', 1800, units.s) } self.measurements['wesPhvac'] = { 'Sample': variables.Static('easTdb_sample', 1800, units.s) } self.measurements['halPhvac'] = { 'Sample': variables.Static('easTdb_sample', 1800, units.s) } self.measurements['easPhvac'] = { 'Sample': variables.Static('easTdb_sample', 1800, units.s) } self.measurements['Ptot'] = { 'Sample': variables.Static('easTdb_sample', 1800, units.s) } self.measurement_variable_map = { 'wesTdb_mea': ('wesTdb', units.K), 'halTdb_mea': ('halTdb', units.K), 'easTdb_mea': ('easTdb', units.K), 'wesPhvac_mea': ('wesPhvac', units.W), 'halPhvac_mea': ('halPhvac', units.W), 'easPhvac_mea': ('easPhvac', units.W), 'Ptot_mea': ('Ptot', units.W) } ## Setup model self.mopath = os.path.join(self.get_unittest_path(), 'resources', 'model', 'LBNL71T_MPC.mo') self.modelpath = 'LBNL71T_MPC.MPC' self.libraries = os.environ.get('MODELICAPATH') self.estimate_method = models.JModelica self.validation_method = models.RMSE # Instantiate exo data sources self.weather = exodata.WeatherFromEPW(self.weather_path) self.internal = exodata.InternalFromCSV(self.internal_path, self.internal_variable_map, tz_name=self.weather.tz_name) self.control = exodata.ControlFromCSV(self.control_path, self.control_variable_map, tz_name=self.weather.tz_name) # Parameters self.parameters = exodata.ParameterFromCSV( os.path.join(self.get_unittest_path(), 'resources', 'model', 'LBNL71T_Parameters.csv')) self.parameters.collect_data() self.parameters.data['lat'] = {} self.parameters.data['lat']['Value'] = self.weather.lat # Instantiate test building self.building_est = systems.RealFromCSV( self.building_source_file_path_est, self.measurements, self.measurement_variable_map, tz_name=self.weather.tz_name) # Instantiate validate building self.building_val = systems.RealFromCSV( self.building_source_file_path_val, self.measurements, self.measurement_variable_map, tz_name=self.weather.tz_name)