Exemplo n.º 1
0
 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;
Exemplo n.º 2
0
 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);
Exemplo n.º 3
0
 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);
Exemplo n.º 4
0
 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)
Exemplo n.º 5
0
 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)
Exemplo n.º 6
0
    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)
Exemplo n.º 7
0
 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)