Skip to content
Snippets Groups Projects
Commit f8081a02 authored by Mauricio Eduardo Celi Cortés's avatar Mauricio Eduardo Celi Cortés
Browse files

several scripts for result evaluation

parent 618d5c05
No related branches found
No related tags found
No related merge requests found
Showing
with 309 additions and 23 deletions
...@@ -99,3 +99,8 @@ output_files ...@@ -99,3 +99,8 @@ output_files
*.orig *.orig
runme_test_runtime.py runme_test_runtime.py
*.iml *.iml
sensitivity_results_berlin
sensitivity_results_cologne
sensitivity_results_hamburg
sensitivity_results_frankfurt
sensitivity_results_munich
import pandas as pd
path = '/home/mce/l2t_results/sensitivity_results_'
mfhs = ['mfh_4'] # 'mfh_1', 'mfh_2', 'mfh_3',#'mfh_4'
cities = ['cologne', 'munich', 'berlin', 'hamburg', 'frankfurt'] # 'frankfurt',
years = ['2020', '2023', '2030']
for city in cities:
for mfh in mfhs:
be_dict = {'aux_price_2020': [],
'aux_price_2023': [],
'aux_price_2030': []}
for year in years:
df_bat = pd.read_csv(path + city + '/' + mfh + '_' + year + '/data_frame_size_bat.csv').iloc[::-1]
#df_bat = df_bat.iloc[::-1]
for i in range(len(df_bat['0.10'])):
if df_bat['0.10'].iloc[i] > 0:
price = df_bat.iloc[i, 0]
be_dict['aux_price_'+year].append(df_bat.iloc[i, 0])
break
be_df = pd.DataFrame(be_dict)
be_df.to_csv('/home/mce/l2t_results/bat_break_even/'+mfh+'_'+city+'.csv', index=False)
import pandas as pd
path = '/home/mce/l2t_results/sensitivity_results_'
mfhs = ['mfh_1', 'mfh_2', 'mfh_3'] # 'mfh_1', 'mfh_2', 'mfh_3',#'mfh_4'
cities = ['cologne']#, 'munich', 'berlin', 'hamburg', 'frankfurt'] # 'frankfurt',
years = ['2020', '2023', '2030']
prices = ['0.27', '0.31', '0.36', '0.40', '0.45', '0.49', '0.54']
for city in cities:
for mfh in mfhs:
eq_dict = {'base_price': [0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6],
'l2t_price': [float(item) for item in prices],
'aux_price_2020': [],
'aux_price_2023': [],
'aux_price_2030': [],
'pv_2020': [],
'pv_2023': [],
'pv_2030': [],
'bat_2020': [],
'bat_2023': [],
'bat_2030': []}
for year in years:
df_cost = pd.read_csv(path + city + '/' + mfh + '_' + year + '/data_frame_cost.csv')
df_pv = pd.read_csv(path + city + '/' + mfh + '_' + year + '/data_frame_size_pv.csv')
df_bat = pd.read_csv(path + city + '/' + mfh + '_' + year + '/data_frame_size_bat.csv')
for price in prices:
for i in range(len(df_cost[price])):
if df_cost[price].iloc[i] >= 0:
eq_dict['aux_price_'+year].append(df_cost.iloc[i, 0])
eq_dict['pv_' + year].append(df_pv.loc[i, price])
eq_dict['bat_' + year].append(df_bat.loc[i, price])
break
eq_df = pd.DataFrame(eq_dict)
eq_df.to_csv('/home/mce/l2t_results/equilibria/'+mfh+'_'+city+'.csv', index=False)
\ No newline at end of file
import pandas as pd
path = '/home/mce/l2t_results/sensitivity_results_frankfurt/'
mfhs = ['mfh_1', 'mfh_2', 'mfh_3', 'mfh_4'] #['mfh_'+str(i+1) for i in range(4,8)] # 'mfh_1', 'mfh_2', 'mfh_3',
years = [2020, 2023, 2030]
for mfh in mfhs:
for y in years:
year=str(y)
try:
df_cost = pd.read_pickle(path+mfh+'_'+year+'/data_frame_cost.pkl').iloc[::-1]
df_pv = pd.read_pickle(path + mfh + '_' + year + '/data_frame_size_pv.pkl').iloc[::-1]
df_bat = pd.read_pickle(path + mfh + '_' + year + '/data_frame_size_bat.pkl').iloc[::-1]
df_cost.to_csv(path+mfh+'_'+year+'/data_frame_cost.csv')
df_pv.to_csv(path+mfh+'_'+year+'/data_frame_size_pv.csv')
df_bat.to_csv(path+mfh+'_'+year+'/data_frame_size_bat.csv')
except:
print('no results found for '+mfh+' '+year)
\ No newline at end of file
import pandas as pd
import matplotlib.pyplot as plt
years = ['2020', '2023', '2030']
cities = ['hamburg', 'cologne', 'berlin', 'frankfurt', 'munich']
mfhs = ['mfh_1', 'mfh_2', 'mfh_3', 'mfh_4']
colors = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2']
fig, ax1 = plt.subplots(figsize=(20*0.7, 15*0.7))
df_list_mfhs = [pd.read_csv('/home/mce/l2t_results/bat_break_even/'+mfh+'_'+ 'cologne' +'.csv') for mfh in mfhs]
#fig, ax1 = plt.subplots(figsize=(20*0.7, 15*0.7))
#plt.rcParams.update({'font.size': 10})
plt.subplot(1, 2, 1)
for i in range(len(mfhs)):
if mfhs[i] == 'mfh_4':
plt.plot(years, [df_list_mfhs[i].loc[0, 'aux_price_'+year] for year in years], marker='o', color=colors[i], label=str(mfhs[i]))
else:
plt.plot(years, [df_list_mfhs[i].loc[0, 'aux_price_' + year] for year in years], marker='o', color=colors[i], label=str(mfhs[i]), linestyle='dashed')
#ax1.set_xticklabels(years_3)
plt.ylabel('Auxiliary electricity price [€/kWh]')
plt.xlabel('Different MFH scenarios for reference city Berlin')
plt.legend(['MFH 1', 'MFH 2', 'MFH 3', 'MFH 4'])
#plt.xlabel('MFH 4')
#ax1.legend()
df_list_cities = [pd.read_csv('/home/mce/l2t_results/bat_break_even/'+'mfh_4'+'_'+ city +'.csv') for city in cities]
#plt.rcParams.update({'font.size': 10})
plt.subplot(1, 2, 2)
for i in range(len(cities)):
if cities[i] == 'berlin':
plt.plot(years, [df_list_cities[i].loc[0, 'aux_price_'+year] for year in years], marker='o', color=colors[i], label=str(cities[i]))
else:
plt.plot(years, [df_list_cities[i].loc[0, 'aux_price_' + year] for year in years], marker='o', color=colors[i], label=str(cities[i]), linestyle='dashed')
plt.xlabel('Reference scenario MFH 4 for different cities')
plt.legend(['Hamburg', 'Cologne', 'Berlin', 'Frankfurt', 'Munich'])
plt.tight_layout()
plt.savefig('/home/mce/l2t_results/bat_break_even/bat_break_even_cities.jpeg', dpi=500)
\ No newline at end of file
import pandas as pd
import matplotlib.pyplot as plt
years = ['2020', '2023', '2030']
cities = ['hamburg', 'cologne', 'berlin', 'frankfurt', 'munich']
mfhs = ['mfh_1', 'mfh_2', 'mfh_3', 'mfh_4']
colors = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2']
df_list_mfhs = [pd.read_csv('/home/mce/l2t_results/bat_break_even/'+mfh+'_'+ 'cologne' +'.csv') for mfh in mfhs]
fig, ax1 = plt.subplots(figsize=(20*0.7, 15*0.7))
#plt.rcParams.update({'font.size': 10})
for i in range(len(mfhs)):
if mfhs[i] == 'mfh_4':
plt.plot(years, [df_list_mfhs[i].loc[0, 'aux_price_'+year] for year in years], marker='o', color=colors[i], label=str(mfhs[i]))
else:
plt.plot(years, [df_list_mfhs[i].loc[0, 'aux_price_' + year] for year in years], marker='o', color=colors[i], label=str(mfhs[i]), linestyle='dashed')
#ax1.set_xticklabels(years_3)
ax1.set_ylabel('Auxiliary electricity price [€/kWh]')
#plt.xlabel('MFH 4')
ax1.legend()
plt.tight_layout()
plt.savefig('/home/mce/l2t_results/bat_break_even/bat_break_even_mfhs.jpeg', dpi=500)
\ No newline at end of file
import pandas as pd
import matplotlib.pyplot as plt
years = ['2020', '2023', '2030']
cities = ['hamburg', 'cologne', 'berlin', 'frankfurt', 'munich']
years_2 = [year+'_'+city for year in years for city in cities]
years_3 = years + years + years + years + years
base_price=['0.30', '0.35', '0.40', '0.45', '0.50', '0.55', '0.60']
colors = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2']
df_list = [pd.read_csv('/home/mce/l2t_results/equilibria/'+'mfh_4'+'_'+ city +'.csv') for city in cities]
fig, ax1 = plt.subplots(figsize=(20*0.7, 15*0.7))
#plt.rcParams.update({'font.size': 10})
for i in range(len(base_price)):
label = True
for j in range(len(cities)):
if label:
plt.plot([year+'_'+cities[j] for year in years], [df_list[j].loc[i, 'aux_price_'+year] for year in years], marker='o', color=colors[i], label=str(base_price[i])+' €/kWh base price')
label = False
else:
plt.plot([year + '_' + cities[j] for year in years], [df_list[j].loc[i, 'aux_price_' + year] for year in years], marker='o', color=colors[i])
ax1.set_xticklabels(years_3)
ax2 = ax1.twiny()
fig.subplots_adjust(bottom=0.2)
# Move twinned axis ticks and label from top to bottom
ax2.xaxis.set_ticks_position("bottom")
ax2.xaxis.set_label_position("bottom")
# Offset the twin axis below the host
ax2.spines["bottom"].set_position(("axes", -0.025))
# Turn on the frame for the twin axis, but then hide all
# but the bottom spine
ax2.set_frame_on(True)
ax2.patch.set_visible(False)
for sp in ax2.spines.values():
sp.set_visible(False)
ax2.spines["bottom"].set_visible(True)
ax2.set_xticks([0.11, 0.305, 0.5, 1-0.305, 1-0.11]) #0.1*(i+1) for i in range(len(cities))
ax2.set_xticklabels(['Hamburg', 'Cologne', 'Berlin', 'Frankfurt', 'Munich'])
#ax2.tick_params(axis='x', direction='in', pad=-15)
#ax2.spines['bottom'].set_position(('outward', 40))
#ax2.spines['top'].set_color('none')
ax2.spines['bottom'].set_color('none')
#ax2.xaxis.set_ticks_position('none')
#plt.legend()
#plt.ylabel('Auxiliary electricity price [€/kWh]')
ax1.set_ylabel('Auxiliary electricity price [€/kWh]')
#plt.xlabel('MFH 4')
ax1.legend()
plt.tight_layout()
plt.savefig('/home/mce/l2t_results/equilibria/eq_cities.jpeg', dpi=500)
#plt.show()
\ No newline at end of file
import pandas as pd
import matplotlib.pyplot as plt
years = ['2020', '2023', '2030']
mfhs = ['mfh_1', 'mfh_2', 'mfh_3', 'mfh_4']
years_2 = [year+'_'+mfh for year in years for mfh in mfhs]
years_3 = years + years + years + years + years
base_price=['0.30', '0.35', '0.40', '0.45', '0.50', '0.55', '0.60']
colors = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2']
df_list = [pd.read_csv('/home/mce/l2t_results/equilibria/'+mfh+'_'+ 'berlin' +'.csv') for mfh in mfhs]
fig, ax1 = plt.subplots(figsize=(20*0.7, 15*0.7))
#plt.rcParams.update({'font.size': 10})
for i in range(len(base_price)):
label = True
for j in range(len(mfhs)):
if label:
plt.plot([year+'_'+mfhs[j] for year in years], [df_list[j].loc[i, 'aux_price_'+year] for year in years], marker='o', color=colors[i], label=str(base_price[i])+' €/kWh base price')
label = False
else:
plt.plot([year + '_' + mfhs[j] for year in years], [df_list[j].loc[i, 'aux_price_' + year] for year in years], marker='o', color=colors[i])
ax1.set_xticklabels(years_3)
ax2 = ax1.twiny()
fig.subplots_adjust(bottom=0.2)
# Move twinned axis ticks and label from top to bottom
ax2.xaxis.set_ticks_position("bottom")
ax2.xaxis.set_label_position("bottom")
# Offset the twin axis below the host
ax2.spines["bottom"].set_position(("axes", -0.025))
# Turn on the frame for the twin axis, but then hide all
# but the bottom spine
ax2.set_frame_on(True)
ax2.patch.set_visible(False)
for sp in ax2.spines.values():
sp.set_visible(False)
ax2.spines["bottom"].set_visible(True)
ax2.set_xticks([0.128, 0.376, 1-0.376, 1-0.128]) #0.1*(i+1) for i in range(len(cities))
ax2.set_xticklabels(['MFH 1', 'MFH 2', 'MFH 3', 'MFH 4'])
#ax2.tick_params(axis='x', direction='in', pad=-15)
#ax2.spines['bottom'].set_position(('outward', 40))
#ax2.spines['top'].set_color('none')
ax2.spines['bottom'].set_color('none')
#ax2.xaxis.set_ticks_position('none')
#plt.legend()
#plt.ylabel('Auxiliary electricity price [€/kWh]')
ax1.set_ylabel('Auxiliary electricity price [€/kWh]')
#plt.xlabel('MFH 4')
ax1.legend()
plt.tight_layout()
plt.savefig('/home/mce/l2t_results/equilibria/eq_mfhs.jpeg', dpi=500)
#plt.show()
\ No newline at end of file
...@@ -47,13 +47,20 @@ t_start = pd.Timestamp("2019-01-01 00:00:00") # start time of simulation ...@@ -47,13 +47,20 @@ t_start = pd.Timestamp("2019-01-01 00:00:00") # start time of simulation
t_horizon = 365 * 24 * 4 # number of time steps to be simulated t_horizon = 365 * 24 * 4 # number of time steps to be simulated
t_step = 1 / 4 # length of a time step in hours t_step = 1 / 4 # length of a time step in hours
input_profile_dict = {'temperature_1': ['air_temperature', 'input_files/data/temperature/temperature_cologne.csv'], input_profile_dict = {'temperature_berlin': ['air_temperature', 'input_files/data/temperature/temperature_berlin.csv'],
'irradiance': ['irradiance', 'input_files/data/irradiance/irradiance_cologne.csv'], 'irradiance_berlin': ['irradiance', 'input_files/data/irradiance/irradiance_berlin.csv'],
'temperature_cologne': ['air_temperature', 'input_files/data/temperature/temperature_cologne.csv'],
'irradiance_cologne': ['irradiance', 'input_files/data/irradiance/irradiance_cologne.csv'],
'temperature_munich': ['air_temperature', 'input_files/data/temperature/temperature_munich.csv'],
'irradiance_munich': ['irradiance', 'input_files/data/irradiance/irradiance_munich.csv'],
'temperature_hamburg': ['air_temperature', 'input_files/data/temperature/temperature_hamburg.csv'],
'irradiance_hamburg': ['irradiance', 'input_files/data/irradiance/irradiance_hamburg.csv'],
'temperature_frankfurt': ['air_temperature', 'input_files/data/temperature/temperature_frankfurt.csv'],
'irradiance_frankfurt': ['irradiance', 'input_files/data/irradiance/irradiance_frankfurt.csv'],
'demand_mfh_1': ['elec_demand', 'input_files/data/demand/electricity/mfh_1.csv'], 'demand_mfh_1': ['elec_demand', 'input_files/data/demand/electricity/mfh_1.csv'],
'demand_mfh_2': ['elec_demand', 'input_files/data/demand/electricity/mfh_2.csv'], 'demand_mfh_2': ['elec_demand', 'input_files/data/demand/electricity/mfh_2.csv'],
'demand_mfh_3': ['elec_demand', 'input_files/data/demand/electricity/mfh_3.csv'], 'demand_mfh_3': ['elec_demand', 'input_files/data/demand/electricity/mfh_3.csv'],
'demand_mfh_4': ['elec_demand', 'input_files/data/demand/electricity/mfh_4.csv'], 'demand_mfh_4': ['elec_demand', 'input_files/data/demand/electricity/mfh_4.csv']}
'power_factors_1': ['power_factors', 'input_files/data/power_factors/pv_factors_ninja.csv']}
#'power_factors_1': ['power_factors', 'input_files/data/power_factors/pv_factors_ninja.csv'], #'power_factors_1': ['power_factors', 'input_files/data/power_factors/pv_factors_ninja.csv'],
# 'temperature_1': ['air_temperature', 'input_files/data/temperature/temperature_ninja.csv'], # 'temperature_1': ['air_temperature', 'input_files/data/temperature/temperature_ninja.csv'],
...@@ -82,8 +89,14 @@ prosumer_3 = {'lifetime_test': {'config_path': 'input_files/models/prosumer_mode ...@@ -82,8 +89,14 @@ prosumer_3 = {'lifetime_test': {'config_path': 'input_files/models/prosumer_mode
'elec_cns': ('demand_mfh_3', 'demand_electric', 'perfect_foresight')}} 'elec_cns': ('demand_mfh_3', 'demand_electric', 'perfect_foresight')}}
} }
prosumer_sankey = {'prosumer_sankey': {'config_path': 'input_files/models/prosumer_models/file_mfh_4_2023/0.50_0.27/config.csv',
'topology_path': 'input_files/models/prosumer_models/file_mfh_4_2023/0.50_0.27/',
'profiles': {'pv_roof': [('irradiance_berlin', 'irradiance', 'perfect_foresight'), ('temperature_berlin', 'air_temperature', 'perfect_foresight')],
'elec_cns': ('demand_mfh_4', 'demand_electric', 'perfect_foresight')}}
}
def create_scenario_list(mfh, year): def create_scenario_list(mfh, year, city):
scenario_list = [] scenario_list = []
for i in np.arange(0.1, 0.61, 0.01): # auxiliary power price in €/kWh for i in np.arange(0.1, 0.61, 0.01): # auxiliary power price in €/kWh
for j in np.arange(0.1, 0.61, 0.01): # l2t power price in €/kWh for j in np.arange(0.1, 0.61, 0.01): # l2t power price in €/kWh
...@@ -93,7 +106,7 @@ def create_scenario_list(mfh, year): ...@@ -93,7 +106,7 @@ def create_scenario_list(mfh, year):
format(i, '.2f')) + '_' + str(format(j, '.2f')), format(i, '.2f')) + '_' + str(format(j, '.2f')),
'config_path': 'input_files/models/prosumer_models/file_' + str(mfh) + '_' + str(year) + '/' + str( 'config_path': 'input_files/models/prosumer_models/file_' + str(mfh) + '_' + str(year) + '/' + str(
format(i, '.2f')) + '_' + str(format(j, '.2f')) + '/config.csv', format(i, '.2f')) + '_' + str(format(j, '.2f')) + '/config.csv',
'profiles': {'pv_roof': [('irradiance', 'irradiance', 'perfect_foresight'), ('temperature_1', 'air_temperature', 'perfect_foresight')], 'profiles': {'pv_roof': [('irradiance_'+city, 'irradiance', 'perfect_foresight'), ('temperature_'+city, 'air_temperature', 'perfect_foresight')],
'elec_cns': ('demand_' + str(mfh), 'demand_electric', 'perfect_foresight')}}}) 'elec_cns': ('demand_' + str(mfh), 'demand_electric', 'perfect_foresight')}}})
#scenario_list = [prosumer_1] #scenario_list = [prosumer_1]
...@@ -126,22 +139,26 @@ def run_parallel(scenario_list): ...@@ -126,22 +139,26 @@ def run_parallel(scenario_list):
pool.join() pool.join()
mfhs = ['mfh_1', 'mfh_2', 'mfh_3', 'mfh_4'] #['mfh_'+str(i+1) for i in range(4,8)] # mfhs = ['mfh_1', 'mfh_2', 'mfh_3', 'mfh_4'] #['mfh_'+str(i+1) for i in range(4,8)] # 'mfh_1', 'mfh_2', 'mfh_3',
years = [2020, 2023, 2030] years = [2020, 2023, 2030]
cities = ['berlin']#['hamburg', 'cologne', 'berlin', 'frankfurt', 'munich']
#optimize_prosumer(prosumer_sankey)
#optimize_prosumer(prosumer_2) for city in cities:
for mfh in mfhs: for mfh in mfhs:
for year in years: for year in years:
#run_parallel(create_scenario_list(mfh, year)) if mfh=='mfh_1' and year==2020:
#if not os.path.exists('sensitivity_results/'): break
# os.makedirs('sensitivity_results/') else:
#if not os.path.exists('sensitivity_results/'+str(mfh)+'_'+str(year)+'/'): run_parallel(create_scenario_list(mfh, year, city))
# os.makedirs('sensitivity_results/'+str(mfh)+'_'+str(year)+'/') if not os.path.exists('sensitivity_results_'+city+'/'):
#prepare_data(mfh, year, 'sensitivity_results/'+str(mfh)+'_'+str(year)+'/') os.makedirs('sensitivity_results_'+city+'/')
plot_all(mfh, year, 'sensitivity_results/'+str(mfh)+'_'+str(year)+'/') if not os.path.exists('sensitivity_results_'+city+'/'+str(mfh)+'_'+str(year)+'/'):
#try: os.makedirs('sensitivity_results_'+city+'/'+str(mfh)+'_'+str(year)+'/')
# shutil.rmtree('output_files') prepare_data(mfh, year, 'sensitivity_results_'+city+'/'+str(mfh)+'_'+str(year)+'/')
#except Exception as e: plot_all(mfh, year, 'sensitivity_results_'+city+'/'+str(mfh)+'_'+str(year)+'/')
# print(f"Error occurred while deleting folder output_files : {str(e)}") try:
shutil.rmtree('output_files')
except Exception as e:
print(f"Error occurred while deleting folder output_files : {str(e)}")
sensitivity_results/mfh_1_2020/annuity_heatmap_mfh_1_2020.jpeg

669 KiB

sensitivity_results/mfh_1_2020/bat_size_heatmap_mfh_1_2020.jpeg

590 KiB

File deleted
File deleted
File deleted
sensitivity_results/mfh_1_2020/pv_size_heatmap_mfh_1_2020.jpeg

562 KiB

sensitivity_results/mfh_1_2023/annuity_heatmap_mfh_1_2023.jpeg

650 KiB

sensitivity_results/mfh_1_2023/bat_size_heatmap_mfh_1_2023.jpeg

599 KiB

File deleted
File deleted
File deleted
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment