def perform_simulation(net, scaler_object, title, zad, reference=False): #Control simulation #Object identification iterations = 40 T1 = 5 T2 = 2 K = 1 TD = 0 D = 60 ###DMC Control # wektor odpowiedzi skokowych s_list = np.array(obiekt_regulacji.generate_s_vaules(D, T1, T2, K, TD)) #obiekt regulacji sim_object_dmc = obiekt_regulacji.SimObject(T1, T2, K, TD) dmc = obiekt_regulacji.DMC(D, D, s_list, 1, 1) u_value_dmc = 0.0 y_k_dmc = 0.0 #poczatkowa petla przy wartosci zadanej 0 y_zad = 0.0 u_value_dmc, y_k_dmc = obiekt_regulacji.simulation_loop( dmc, sim_object_dmc, 1, y_zad, u_value_dmc, y_k_dmc) #zmiana wartosci zadanej i regulacja y_zad = zad u_value_dmc, y_k_dmc = obiekt_regulacji.simulation_loop( dmc, sim_object_dmc, iterations, y_zad, u_value_dmc, y_k_dmc) ###Network Control sim_object_net = obiekt_regulacji.SimObject(T1, T2, K, TD) net_controller = obiekt_regulacji.NetController(net, scaler_object) u_value_net = 0.0 y_k_net = 0.0 #poczatkowa petla przy wartosci zadanej 0 y_zad = 0.0 u_value_net, y_k_net = obiekt_regulacji.simulation_loop_network( net_controller, sim_object_net, 1, y_zad, u_value_net, y_k_net) #poczatkowa petla przy wartosci zadanej i regulacja y_zad = zad u_value_net, y_k_net = obiekt_regulacji.simulation_loop_network( net_controller, sim_object_net, iterations, y_zad, u_value_net, y_k_net) #plot simulations if reference: obiekt_regulacji.plot_simulation(sim_object_dmc, "DMC") print("MSE dmc: {}".format(sim_object_dmc.get_mse())) obiekt_regulacji.plot_simulation(sim_object_net, title) print("MSE net: {}".format(sim_object_net.get_mse()))
def perform_simulation_comp(net, scaler_object, zad): #Control simulation #Object identification iterations = 40 T1 = 5 T2 = 2 K = 1 TD = 0 D = 60 ###DMC Control # wektor odpowiedzi skokowych s_list = np.array(obiekt_regulacji.generate_s_vaules(D, T1, T2, K, TD)) #obiekt regulacji sim_object_dmc = obiekt_regulacji.SimObject(T1, T2, K, TD) dmc = obiekt_regulacji.DMC(D, D, s_list, 1, 1) u_value_dmc = 0.0 y_k_dmc = 0.0 #poczatkowa petla przy wartosci zadanej 0 y_zad = 0.0 u_value_dmc, y_k_dmc = obiekt_regulacji.simulation_loop( dmc, sim_object_dmc, 1, y_zad, u_value_dmc, y_k_dmc) #zmiana wartosci zadanej i regulacja y_zad = zad u_value_dmc, y_k_dmc = obiekt_regulacji.simulation_loop( dmc, sim_object_dmc, iterations, y_zad, u_value_dmc, y_k_dmc) ###Network Control sim_object_net = obiekt_regulacji.SimObject(T1, T2, K, TD) net_controller = obiekt_regulacji.NetController(net, scaler_object) u_value_net = 0.0 y_k_net = 0.0 #poczatkowa petla przy wartosci zadanej 0 y_zad = 0.0 u_value_net, y_k_net = obiekt_regulacji.simulation_loop_network( net_controller, sim_object_net, 1, y_zad, u_value_net, y_k_net) #poczatkowa petla przy wartosci zadanej i regulacja y_zad = zad u_value_net, y_k_net = obiekt_regulacji.simulation_loop_network( net_controller, sim_object_net, iterations, y_zad, u_value_net, y_k_net) return sim_object_net.get_mse(), sim_object_dmc.get_mse()
def perform_simulation_2(net, scaler_object, title, zad, reference=False): #Control simulation #Object identification iterations = 30 T1 = 5 T2 = 3 K = 1 TD = 4 D = 60 ###DMC Control # wektor odpowiedzi skokowych s_list = np.array(obiekt_regulacji.generate_s_vaules(D, T1, T2, K, TD)) #obiekt regulacji sim_object_dmc = obiekt_regulacji.SimObject(T1, T2, K, TD) dmc = obiekt_regulacji.DMC(D, D, s_list, 1, 1) ###Network Control sim_object_net = obiekt_regulacji.SimObject(T1, T2, K, TD) net_controller = obiekt_regulacji.NetController(net, scaler_object) #DMC u_value_dmc = 0.0 y_k_dmc = 0.0 #poczatkowa petla przy wartosci zadanej 0 y_zad = 0.0 u_value_dmc, y_k_dmc = obiekt_regulacji.simulation_loop( dmc, sim_object_dmc, 1, y_zad, u_value_dmc, y_k_dmc) #NET u_value_net = 0.0 y_k_net = 0.0 #poczatkowa petla przy wartosci zadanej 0 u_value_net, y_k_net = obiekt_regulacji.simulation_loop_network( net_controller, sim_object_net, 1, y_zad, u_value_net, y_k_net) for y_zad in zad: #DMC u_value_dmc, y_k_dmc = obiekt_regulacji.simulation_loop( dmc, sim_object_dmc, iterations, y_zad, u_value_dmc, y_k_dmc) #NET u_value_net, y_k_net = obiekt_regulacji.simulation_loop_network( net_controller, sim_object_net, iterations, y_zad, u_value_net, y_k_net) #plot simulations if reference: obiekt_regulacji.plot_simulation(sim_object_dmc, "DMC") obiekt_regulacji.plot_simulation(sim_object_net, title)
print("Rozmiar: {:.5f} MB ".format(get_size_MB(object))) #lista przykladow uczacych train_data = [] test_data = [] # regulacja DMC iterations = 40 D = 60 K = 1 T1 = 5 T2 = 2 TD = 0 s_list = np.array(obiekt_regulacji.generate_s_vaules(D, T1, T2, K, TD)) #iteracja po wartosciach zadanych for idx, zad in np.ndenumerate(np.arange(1, 10.1, 0.1)): #obiekt regulacji sim_object = obiekt_regulacji.SimObject(T1, T2, K, TD) dmc = obiekt_regulacji.DMC(D, D, s_list, 1, 1) #poczatkowe wartosci sterowania u_value_dmc = 0.0 y_k_dmc = 0.0 #poczatkowa petla przy wartosci zadanej 0 y_zad = 0.0 u_value_dmc, y_k_dmc = obiekt_regulacji.simulation_loop( dmc, sim_object, 5, y_zad, u_value_dmc, y_k_dmc) #zmiana wartosci zadanej i regulacja
#lista przykladow uczacych learning_data = [] # regulacja DMC iterations = 40 D = 60 K = 1 #iteracja po T1 i T2 for T1 in np.arange(2, 9, 1): for T2 in np.arange(1, T1, 1): #iteracja po opoznieniu for TD in np.arange(1, 7, 1): # wektor odpowiedzi skokowych s_list = np.array( obiekt_regulacji.generate_s_vaules(D, T1, T2, K, TD)) #iteracja po wartosciach zadanych for zad in np.arange(1, 10, 0.1): #obiekt regulacji sim_object = obiekt_regulacji.SimObject(T1, T2, K, TD) dmc = obiekt_regulacji.DMC(D, D, s_list, 1, 1) #poczatkowe wartosci sterowania u_value_dmc = 0.0 y_k_dmc = 0.0 #poczatkowa petla przy wartosci zadanej 0 y_zad = 0.0 u_value_dmc, y_k_dmc = obiekt_regulacji.simulation_loop( dmc, sim_object, 5, y_zad, u_value_dmc, y_k_dmc) #zmiana wartosci zadanej i regulacja y_zad = zad
def perform_simulation_comp_TI(net, scaler_object): #Control simulation #Object identification iterations = 45 T1 = 5 T2 = 2 K = 1 TD = 0 D = 60 MSE_vector = [] # wektor odpowiedzi skokowych dla obiektu referencyjnego s_list = np.array(obiekt_regulacji.generate_s_vaules(D, T1, T2, K, TD)) TI_list = zip([6, 5, 7, 4, 7, 3, 8], [2, 3, 3, 1, 6, 2, 1]) y_zad_list = [round(x, 1) for x in np.arange(2, 9, 0.1)] for T1_temp, T2_temp in TI_list: #wketory MSE dla pojedynczych wart zad MSE_vector_net = [] MSE_vector_dmc = [] MSE_vector_ref = [] s_list_ref = np.array( obiekt_regulacji.generate_s_vaules(D, T1_temp, T2_temp, K, TD)) for zad in y_zad_list: ### Reference Control sim_object_dmc_ref = obiekt_regulacji.SimObject( T1_temp, T2_temp, K, TD) dmc_ref = obiekt_regulacji.DMC(D, D, s_list_ref, 1, 1) u_value_dmc = 0.0 y_k_dmc = 0.0 #poczatkowa petla przy wartosci zadanej 0 y_zad = 0.0 u_value_dmc, y_k_dmc = obiekt_regulacji.simulation_loop( dmc_ref, sim_object_dmc_ref, 1, y_zad, u_value_dmc, y_k_dmc) #zmiana wartosci zadanej i regulacja y_zad = zad u_value_dmc, y_k_dmc = obiekt_regulacji.simulation_loop( dmc_ref, sim_object_dmc_ref, iterations, y_zad, u_value_dmc, y_k_dmc) ###DMC Control sim_object_dmc = obiekt_regulacji.SimObject( T1_temp, T2_temp, K, TD) dmc = obiekt_regulacji.DMC(D, D, s_list, 1, 1) u_value_dmc = 0.0 y_k_dmc = 0.0 #poczatkowa petla przy wartosci zadanej 0 y_zad = 0.0 u_value_dmc, y_k_dmc = obiekt_regulacji.simulation_loop( dmc, sim_object_dmc, 1, y_zad, u_value_dmc, y_k_dmc) #zmiana wartosci zadanej i regulacja y_zad = zad u_value_dmc, y_k_dmc = obiekt_regulacji.simulation_loop( dmc, sim_object_dmc, iterations, y_zad, u_value_dmc, y_k_dmc) ###Network Control sim_object_net = obiekt_regulacji.SimObject( T1_temp, T2_temp, K, TD) net_controller = obiekt_regulacji.NetController(net, scaler_object) u_value_net = 0.0 y_k_net = 0.0 #poczatkowa petla przy wartosci zadanej 0 y_zad = 0.0 u_value_net, y_k_net = obiekt_regulacji.simulation_loop_network( net_controller, sim_object_net, 1, y_zad, u_value_net, y_k_net) #zmiana wartosci zadanej i regulacja y_zad = zad u_value_net, y_k_net = obiekt_regulacji.simulation_loop_network( net_controller, sim_object_net, iterations, y_zad, u_value_net, y_k_net) #zapisanie MSE dla pojedynczego przypadku y_zad MSE_vector_net.append(sim_object_net.get_mse()) MSE_vector_dmc.append(sim_object_dmc.get_mse()) MSE_vector_ref.append(sim_object_dmc_ref.get_mse()) #wyswietlenie wynikow dla kazdego TD dla y_zad 5 if zad == 5.0: obiekt_regulacji.plot_simulation( sim_object_net, 'sieć dla T1={} T2={}'.format(T1_temp, T2_temp)) obiekt_regulacji.plot_simulation( sim_object_dmc, 'DMC dla T1={} T2={}'.format(T1_temp, T2_temp)) #zapisanie MSE dla jednego Td MSE_vector.append((np.mean(MSE_vector_net), np.mean(MSE_vector_dmc), np.mean(MSE_vector_ref))) return MSE_vector