def set_simulation(self): # Carregando arquivos load_det = pd.read_csv(os.path.dirname(sys.argv[0]) + "/curve_load.csv", header=0, sep=';') # Previsão do mercado spot pld = pd.read_excel(os.path.dirname(sys.argv[0]) + '/pld_sombra_2020.xlsx', sheet_name='train', index_col='date', parse_dates=['date']) pld_day_ahead = Pldpredict(pld) ##pld_pred = pld_day_ahead.get_day_ahead() pld_pred = pld_day_ahead.get_pld_dummy() # Gerando amostras sample = Sample(load_det, self.mode, PV_LOAD_CONNECTION, EV_LOAD_CONNECTION, EV_BUS_MAX_NUMBER_LIST, pld_pred) # Gerando vetores para o PDF power_p = np.zeros(self.number) power_q = np.zeros(self.number) losses_p = np.zeros(self.number) losses_q = np.zeros(self.number) # Criando matrizes de tensão vmag1_matrix = np.zeros((24, self.number)) vmag2_matrix = np.zeros((24, self.number)) vmag3_matrix = np.zeros((24, self.number)) vphase1_matrix = np.zeros((24, self.number)) vphase2_matrix = np.zeros((24, self.number)) vphase3_matrix = np.zeros((24, self.number)) # Criando matriz para os medidores dss.text( "compile {}".format(os.path.dirname(sys.argv[0]) + "/ieee34.dss")) monitors_total_vmag1 = np.zeros( (len(dss.lines_allnames()), 24 * self.number)) monitors_total_vmag2 = np.zeros( (len(dss.lines_allnames()), 24 * self.number)) monitors_total_vmag3 = np.zeros( (len(dss.lines_allnames()), 24 * self.number)) # Criando matrizes de potência monitors_total_p1 = np.zeros( (len(dss.lines_allnames()), 24 * self.number)) monitors_total_q1 = np.zeros( (len(dss.lines_allnames()), 24 * self.number)) monitors_total_p2 = np.zeros( (len(dss.lines_allnames()), 24 * self.number)) monitors_total_q2 = np.zeros( (len(dss.lines_allnames()), 24 * self.number)) monitors_total_p3 = np.zeros( (len(dss.lines_allnames()), 24 * self.number)) monitors_total_q3 = np.zeros( (len(dss.lines_allnames()), 24 * self.number)) # Tempo de recarga dos veículos ev_parking_duration = [] # PDF da média horária do tempo de carregamento ev_charging_time = [] for n in range(self.number): # Compilando a rede dss.text("compile {}".format( os.path.dirname(sys.argv[0]) + "/ieee34.dss")) dss.text("New Energymeter.Feeder Line.L1 1") # Montando amostras de carga, pv e ev pv = sample.get_pv_sample(len(PV_BUS_LIST)) ev_curve, ev_power, ev_incoming, ev_t_duration, ev_battery_capacity = \ sample.get_ev_sample(len(EV_BUS_LIST), self.ev_mode) if self.rtp_mode == 0: load = sample.get_load_sample_nrtp(dss.loads_count(), pv, ev_curve) else: load = sample.get_load_sample_rtp(dss.loads_count(), pv, ev_curve) # Colocando curva de PEV get_daily_load(load) get_daily_pv(pv) get_daily_ev(self.ev_mode, ev_curve, ev_power, ev_battery_capacity) # Criando monitores para todas as barras get_all_monitors() # Solução ##dss.text("new monitor.storage_power element=storage.battery_890 terminal=1 mode=1 ppolar=no") ##dss.text("new monitor.storage_voltage element=storage.battery_890 terminal=1 mode=0") ##dss.text("new monitor.storage_variable element=storage.battery_890 terminal=1 mode=3") dss.text("Set Mode=daily") dss.text("Set stepsize=1h") dss.text("Set number=24") dss.solution_solve() ##dss.text("plot monitor object=storage_power channels=(1 3 5)") ##dss.text("plot monitor object=storage_voltage channels=(1 3 5)") ##dss.text("plot monitor object=storage_variable channels=(1)") # Recebendo Medidor power_p[n], power_q[n] = dss.meters_registervalues( )[0], dss.meters_registervalues()[1] losses_p[n], losses_q[n] = dss.meters_registervalues( )[12], dss.meters_registervalues()[13] # Recebendo Monitores Linha 19 (Barra 840) dss.monitors_saveall() for hour in range(24): dss.monitors_write_name("Ml19_voltage") vmag1_matrix[hour, n] = dss.monitors_channel(1)[hour] dss.monitors_write_name("Ml19_voltage") vphase1_matrix[hour, n] = dss.monitors_channel(2)[hour] dss.monitors_write_name("Ml19_voltage") vmag2_matrix[hour, n] = dss.monitors_channel(3)[hour] dss.monitors_write_name("Ml19_voltage") vphase2_matrix[hour, n] = dss.monitors_channel(4)[hour] dss.monitors_write_name("Ml19_voltage") vmag3_matrix[hour, n] = dss.monitors_channel(5)[hour] dss.monitors_write_name("Ml19_voltage") vphase3_matrix[hour, n] = dss.monitors_channel(6)[hour] # Análise global da rede para tensão monitors_name = dss.monitors_allnames() i = 0 num = 0 for item in monitors_name: if (i % 2) != 0: for hour in range(24): dss.monitors_write_name(item) monitors_total_vmag1[ num, n * 24 + hour] = dss.monitors_channel(1)[hour] dss.monitors_write_name(item) monitors_total_vmag2[ num, n * 24 + hour] = dss.monitors_channel(3)[hour] dss.monitors_write_name(item) monitors_total_vmag3[ num, n * 24 + hour] = dss.monitors_channel(5)[hour] num += 1 i += 1 # Análise global da rede para potências de saída monitors_name = dss.monitors_allnames() i = 0 num = 0 for item in monitors_name: if (i % 2) == 0: for hour in range(24): dss.monitors_write_name(item) monitors_total_p1[num, n * 24 + hour] = dss.monitors_channel(1)[hour] dss.monitors_write_name(item) monitors_total_q1[num, n * 24 + hour] = dss.monitors_channel(2)[hour] dss.monitors_write_name(item) monitors_total_p2[num, n * 24 + hour] = dss.monitors_channel(3)[hour] dss.monitors_write_name(item) monitors_total_q2[num, n * 24 + hour] = dss.monitors_channel(4)[hour] dss.monitors_write_name(item) monitors_total_p3[num, n * 24 + hour] = dss.monitors_channel(5)[hour] dss.monitors_write_name(item) monitors_total_q3[num, n * 24 + hour] = dss.monitors_channel(6)[hour] num += 1 i += 1 # Análise do tempo de recarga ev_parking_duration.extend(ev_t_duration) # Análise do carregamento ao longo do dia for ev_bus in range(len(EV_BUS_LIST)): ev_charging_time.extend(ev_curve[ev_bus]) # Aviso ao usuário print("Simulação ", str(n), " concluída!") # Construindo pdf das magnitudes totais pdf = Pdf(power_p, power_q, losses_p, losses_q) pdf.get_pdf_plot() pdf.get_pdf_csv() # Construindo boxplot das tensões monitors_name = dss.monitors_allnames() pdftotalvoltage = Pdftotalvoltage(self.number, monitors_name, monitors_total_vmag1, monitors_total_vmag2, monitors_total_vmag3) pdftotalvoltage.get_voltage_all_bus_plot() pdftotalvoltage.get_voltage_all_bus_csv() # Construindo curva média de tensão pdfvoltagebus = Pdfvoltagebus(vmag1_matrix, vphase1_matrix, vmag2_matrix, vphase2_matrix, vmag3_matrix, vphase3_matrix) pdfvoltagebus.get_mean_pdf_voltage_csv() pdfvoltagebus.get_pdf_voltage_plot() # Recebendo PDF das potências de todas as barras pdfoutputpower = Pdfoutputpower(self.number, monitors_name, monitors_total_p1, monitors_total_q1, monitors_total_p2, monitors_total_q2, monitors_total_p3, monitors_total_q3) pdfoutputpower.get_outputpower_ev_bus() pdfoutputpower.get_mean_outputpower_ev_bus() # Construindo curva de tempo de duração de recarga pdfoutputev = Pdfoutputev(self.number, ev_parking_duration, ev_charging_time) pdfoutputev.get_parking_duration() pdfoutputev.get_charging_time()