def emulate_opt(self,start,end): print("%%%---Emulating real system---%%%") self.emu.control_data = self.opt_controlseq emulate_jmod(self.emu, self.meas_vars_emu, self.meas_sampl, start, end) print("Updating measurements") self.mpc.measurements = self.emu.measurements store_namespace('optemu_'+self.building,self.emu.display_measurements('Measured'))
def emulate_opt(self, start, end): print("%%%---Emulating real system---%%%") self.emu.control_data = self.opt_controlseq emulate_jmod(self.emu, self.meas_vars_emu, self.meas_sampl, start, end) #print("Updating measurements") #self.mpc.measurements = self.emu.measurements #print("Validating") #self.mpc.validate(start, end, 'val_opt', plot=1) #print(emu_opt.display_measurements('Measured')['TAir']) store_namespace('optemu_' + self.building, self.emu.display_measurements('Measured'))
def run_reference(self, start, end): print("%%%---Running Reference Simulation---%%%") emulate_jmod(self.emuref,self.meas_vars_ref, self.meas_sampl_ref, start, end) #print(self.emuref.display_measurements('Measured')['TAir']) #print(self.emuref.display_measurements('Measured')['HeatInput']) store_namespace('ref_power_'+self.building, self.emuref.display_measurements('Measured')['PowerCompr']) store_namespace('ref_temp_'+self.building, self.emuref.display_measurements('Measured')['TAir'])
controlseq = {} power = {} opt_stats = {} emu_stats = {} refheat = [] reftemps = [] wall_temp = {} index = pd.date_range(start, opt_end_str, freq=meas_sampl + 'S') flex_cost_signal = pd.Series(0, index) for Sim in Sim_list: while True: try: emulate_jmod(Sim.emu, Sim.meas_vars_emu, Sim.meas_sampl, init_start_str, start) print(Sim.emu.display_measurements('Measured')) Sim.start_temp = Sim.emu.display_measurements( 'Measured').values[-1][-1] - 273.15 Sim.fmupath_emu = os.path.join( Sim.simu_path, 'fmus', community, 'Tutorial_' + model_id + '_test' + '_' + model_id + '_test' + '.fmu') Sim.meas_vars_emu = { 'TAir': {}, 'TAir1': {}, } Sim.meas_vars_emu['TAir']['Sample'] = variables.Static( 'sample_rate_Tzone', Sim.meas_sampl, # sample rate
Sim.parameters.data = load_namespace(os.path.join(SimAggr.simu_path, 'jmod sysid ResidentialCommunityUK results', 'est_params_'+Sim.building)) Sim.other_input = load_namespace(os.path.join(SimAggr.simu_path, 'mincost vs minene', 'minene_opt results', 'other_input_'+Sim.building)) Sim.constraints = load_namespace(os.path.join(SimAggr.simu_path, 'mincost vs minene', 'minene_opt results', 'constraints_'+Sim.building)) Sim.price = load_namespace('sim_price') Sim.init_models(use_ukf=0, use_fmu_emu = 1, use_fmu_mpc = 1) Emu_list.append(Sim) i = i+1 for Emu in Emu_list: # Needed to transfer the fmu to right place, it has its own weather processor emulate_jmod(Emu.emu, Emu.meas_vars, Emu.meas_sampl, '1/1/2017 00:00:00', start) Emu.start_temp = Emu.emu.display_measurements('Measured').values[1][-1]-273.15 start_temps = [] k = 0 for bldg in bldg_list: start_temps.append(Emu_list[k].start_temp) k=k+1 for simtime in sim_range: print('%%%%%%%%% IN SIMULATION LOOP: ' + str(i) + ' %%%%%%%%%%%%%%%%%') i = i + 1 if i == 1: #simtime_str = simtime.strftime('%m/%d/%Y %H:%M:%S') simtime_str = 'continue' else:
Sim.init_models(use_ukf=0, use_fmu_emu=1, use_fmu_mpc=0) # Use for initialising models else: Sim.init_models(use_ukf=0, use_fmu_emu=1, use_fmu_mpc=0) # Use for initialising models # Start the hourly loop i = 0 emutemps = {} mpctemps = {} controlseq = {} opt_stats = {} emu_stats = {} refheat = [] reftemps = [] for Sim in Sim_list: emulate_jmod(Sim.emu, Sim.meas_vars, Sim.meas_sampl, '1/1/2017 00:00:00', start) Sim.start_temp = Sim.emu.display_measurements('Measured').values[-1][0]-273.15 Sim.mpc.measurements = Sim.emu.measurements print(Sim.start_temp) for simtime in sim_range: print('%%%%%%%%% IN LOOP: ' + str(i) + ' %%%%%%%%%%%%%%%%%') i = i + 1 if i == 1: #simtime_str = simtime.strftime('%m/%d/%Y %H:%M:%S') simtime_str = 'continue' else: simtime_str = 'continue' opt_start_str = simtime.strftime('%m/%d/%Y %H:%M:%S') opt_end = simtime + datetime.timedelta(seconds = horizon*int(Sim.meas_sampl)) emu_end = simtime + datetime.timedelta(seconds = int(Sim.meas_sampl))
Sim.init_models(use_ukf=1, use_fmu_mpc=1, use_fmu_emu=1) # Use for initialising # Add to list of simulations Sim_list.append(Sim) index = pd.date_range(start, end, freq = meas_sampl+'S') train_dict = {} test_dict = {} results_dict = {} for Sim in Sim_list: if emulate == 1: # Emlate to get data emulate_jmod(Sim.emu, Sim.meas_vars_emu, Sim.meas_sampl, start, end) # Handle data print(Sim.emu.display_measurements('Measured')) measurements = Sim.emu.display_measurements('Measured') index = pd.to_datetime(measurements.index) measurements.index = index weather = Sim.weather.display_data().resample(meas_sampl+'S').ffill() #print(weather) weather.index = index df = pd.concat([measurements, weather],axis=1)[start:end]