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:
Beispiel #6
0
			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))
Beispiel #7
0
            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]