#Script python import numpy as np import pandas as pd import glob import time import csv #Cesta k měněným souborům df1 = pd.read_csv(r'C:\Users\dbehal\Desktop\Testing facility\Zpracovani\20210912-0700-F316-FNL_AMRLTAINCL_LTNBAL_PRES_NPMINMAX_CSV-v1.csv', sep = ',')#cesta k souboru df2 = pd.read_csv(r'C:\Users\dbehal\Desktop\Testing facility\Zpracovani\20210912-0800-F316-FNL_AMRLTAINCL_LTNBAL_PRES_NPMINMAX_CSV-v1.csv', sep = ',') df3 = pd.read_csv(r'C:\Users\dbehal\Desktop\Testing facility\Zpracovani\20210912-1700-F316-FNL_AMRLTAINCL_LTNBAL_PRES_NPMINMAX_CSV-v1.csv', sep = ',') df4 = pd.read_csv(r'C:\Users\dbehal\Desktop\Testing facility\Zpracovani\20210912-1800-F316-FNL_AMRLTAINCL_LTNBAL_PRES_NPMINMAX_CSV-v1.csv', sep = ',') #Odstranění nepotřebných/chybných záznamů df1=df1[(df1["PresolvedRegion"]==True)] df2=df2[(df2["PresolvedRegion"]==True)] df3=df3[(df3["PresolvedRegion"]==True)] df4=df4[(df4["PresolvedRegion"]==True)] #Definice promněných Poc_mer=40 #Počet provedených měření Krok=160/Poc_mer #Krok změny přeshraniční kapacity cesta=r'C:\Users\dbehal\Desktop\Testing facility\Zpracovani\CZ-DE' #Cesta pro výstupy date=r'20210912' #Zpracovávaný den ModelHranice=r'CZ-DE' #Upravovaná hranice #Úprava datového typu na float u všech souborů df1['RAM'] = df1['RAM'].astype(float) df1['PTDF_CZ'] = df1['PTDF_CZ'].astype(float) df1['PTDF_DE'] = df1['PTDF_DE'].astype(float) df2['RAM'] = df2['RAM'].astype(float) #2 df2['PTDF_CZ'] = df2['PTDF_CZ'].astype(float) df2['PTDF_DE'] = df2['PTDF_DE'].astype(float) df3['RAM'] = df3['RAM'].astype(float) #3 df3['PTDF_CZ'] = df3['PTDF_CZ'].astype(float) df3['PTDF_DE'] = df3['PTDF_DE'].astype(float) df4['RAM'] = df4['RAM'].astype(float) #4 df4['PTDF_CZ'] = df4['PTDF_CZ'].astype(float) df4['PTDF_DE'] = df4['PTDF_DE'].astype(float) #Proměné rozdílu RAM Puvodni_RAM1=df1['RAM'] Rozdil_PTDF1=abs(df1["PTDF_CZ"] - df1["PTDF_DE"]) #rozdíl Puvodni_RAM2=df2['RAM'] Rozdil_PTDF2=abs(df2["PTDF_CZ"] - df2["PTDF_DE"]) #rozdíl Puvodni_RAM3=df3['RAM'] Rozdil_PTDF3=abs(df3["PTDF_CZ"] - df3["PTDF_DE"]) #rozdíl Puvodni_RAM4=df4['RAM'] Rozdil_PTDF4=abs(df4["PTDF_CZ"] - df4["PTDF_DE"]) #rozdíl #Automatizace procesu úpravy vstupních a výstupních dat for i in range(1,Poc_mer+1,1): #Ponížení dostupné kapacity df1['RAM']=Puvodni_RAM1-i*Krok*Rozdil_PTDF1 df2['RAM']=Puvodni_RAM2-i*Krok*Rozdil_PTDF2 df3['RAM']=Puvodni_RAM3-i*Krok*Rozdil_PTDF3 df4['RAM']=Puvodni_RAM4-i*Krok*Rozdil_PTDF4 #Uložení změněných sešitů df1.to_csv(f'{cesta}\\20210912-0700-F316-FNL_CZ-DE.csv', index=False) df2.to_csv(f'{cesta}\\20210912-0800-F316-FNL_CZ-DE.csv', index=False) df3.to_csv(f'{cesta}\\20210912-1700-F316-FNL_CZ-DE.csv', index=False) df4.to_csv(f'{cesta}\\20210912-1800-F316-FNL_CZ-DE.csv', index=False) #Příprava pro vstupů pro simulation facility all_csv = glob.glob(cesta+"/*F316*"+"*.csv") input = [] input = pd.concat(pd.read_csv(f) for f in all_csv) input = input[input.PresolvedRegion].reset_index(drop=True) #Definice datata frame pro PTDF a domenu ptdf = pd.DataFrame({ 'AT': input.PTDF_AT, 'BE': input.PTDF_BE, 'CZ': input.PTDF_CZ, 'DE': input.PTDF_DE, 'FR': input.PTDF_FR, 'HR': input.PTDF_HR, 'HU': input.PTDF_HU, 'NL': input.PTDF_NL, 'PL': input.PTDF_PL, 'RO': input.PTDF_RO, 'SI': input.PTDF_SI, 'SK': input.PTDF_SK, 'BE_AL': input.PTDF_BE_AL, 'DE_AL': input.PTDF_DE_AL}) cb = input.NE_Name co = input.Contingency_Name cbco = cb + " / " + co domainout = pd.DataFrame({'Hour': input.Period, 'AT': input.PTDF_AT, 'BE': input.PTDF_BE, 'CZ': input.PTDF_CZ, 'DE': input.PTDF_DE, 'FR': input.PTDF_FR, 'HR': input.PTDF_HR, 'HU': input.PTDF_HU, 'NL': input.PTDF_NL, 'PL': input.PTDF_PL, 'RO': input.PTDF_RO, 'SI': input.PTDF_SI, 'SK': input.PTDF_SK, 'BE_AL': input.PTDF_BE_AL, 'DE_AL': input.PTDF_DE_AL, 'RAM': input.RAM, 'FMAX': input.F_max, 'TieLine': 0, 'RAMRef': 0, 'RAMZero': 0, 'RAMTh': 0, 'RAMLTN': 0, 'RAMLTN0': 0}) #Definice hubů hubs = pd.Series([23, 90, 95, 22, 20, 59, 97, 92, 41, 98, 83, 96, 24, 25]) hubs = hubs.T ones = pd.Series([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]) #Tvorba header souboru a jeho export period = pd.Series(np.linspace(1,24,24)) headers = pd.DataFrame({'SESSION_ID': date, 'MATRIX_ID': period, 'BALANCINGAREA_ID': 99, 'PERIOD': period}) headers.to_csv(f'{cesta}\CZ-DE_Header_{i}.csv', float_format='%.0f', index=False) #Tvorba constraint souboru a jeho export rowid = pd.Series(np.linspace(1,domainout.shape[0],domainout.shape[0])) constraints = pd.DataFrame({'SESSION_ID': date, 'MATRIX_ID': domainout.Hour, 'ROW_ID': rowid, 'REMAININGAVAILABLEMARGIN': domainout.RAM}) constraints.to_csv(f'{cesta}\CZ-DE_Constraint_{i}.csv', float_format='%.0f', index=False) #Tvorba domena souboru a jeho export cbcoout = pd.DataFrame({'CBCO': cbco}) domainid = pd.DataFrame({'SESSION_ID': date, 'ROW_ID':rowid}) cbcotable = pd.concat([domainid, domainout, cbcoout], axis=1, sort = False) cbcotable.to_csv(f'{cesta}\CZ-DE_Domain_{i}.csv', float_format='%.5f', index=False) #Tvorba factor souboru a jeho export matrixid = pd.Series([]) rowid = pd.Series([]) biddingarea = pd.Series([]) factor = pd.Series([]) factor = ptdf.T factor = ptdf factor = ptdf.to_numpy() factor = np.concatenate(factor) factor = pd.Series(factor) biddingarea = np.tile(hubs,(1,len(ptdf))).T biddingarea = pd.Series(list(biddingarea)).str[0] rowid = list(range(1,len(ptdf)+1)) rowid = pd.Series(list(np.repeat(rowid,14))) matrixid = pd.Series(list(np.repeat(domainout.Hour,14))) factor = factor.reset_index(drop=True) biddingarea = biddingarea.reset_index(drop=True) rowid = rowid.reset_index(drop=True) matrixid = matrixid.reset_index(drop=True) factors = pd.DataFrame({'SESSION_ID': date, 'MATRIX_ID': matrixid, 'ROW_ID': rowid, 'BIDDINGAREA_ID': biddingarea, 'FACTOR': factor}) factors.to_csv(f'{cesta}\CZ-DE_Factor_{i}.csv', float_format='%.5f', index=False) print("Hotovo")