Skip to content
Snippets Groups Projects
Commit b18abecd authored by Christoph von Oy's avatar Christoph von Oy
Browse files

Refactored handling of prices and emissions

parent 426703b5
Branches
Tags
No related merge requests found
Showing
with 135 additions and 48 deletions
Subproject commit 2a5dc03f968990ce3169bca7ffa73ab173f537d2
Subproject commit cc8296ce60fe4abd297efe60bd3f2ee4711ef136
......@@ -40,6 +40,14 @@ def get_connected_components(matrix, components, comp):
def get_connection(matrix, components, comp_from, comp_to):
return matrix[components[comp_from]][components[comp_to]]
def read_config(config_path):
config_df = pd.read_csv(config_path)
config_dict = config_df.to_dict(orient='list')
for k in config_dict:
config_dict[k] = config_dict[k][0]
return config_dict
changed_topologies = []
invalid_topologies = []
renamed_components = {'StandardElectricalConsumption': 'ElectricalConsumption',
......@@ -91,7 +99,85 @@ for dirpath, dirnames, filenames in os.walk(".\\input_files"):
raise KeyError
for connected_component in get_connected_components(matrix, components, component):
all_connections = pd.concat([all_connections, pd.Series({'sector': sector, 'comp_from': component, 'comp_to': connected_component}).to_frame().T], ignore_index = True)
config = read_config(os.path.join(dirpath, "config.csv"))
changed_topologies.append(dirpath)
new_config = dict()
for name, value in config.items():
# configs to delete
if name in ['injection/pvpeak', 'elec_price_cap_low', 'elec_price_cap_high']:
pass
# configs to keep
elif name in ['yearly_interest', 'planning_horizon']:
new_config[name] = value
# configs that are handled by other configs
elif name in ['elec_price_variable', 'injection_price_variable', 'gas_price_variable', 'injection_price_gas_variable', 'heat_price_variable', 'injection_price_heat_variable', 'cooling_price_variable', 'injection_price_cooling_variable']:
pass
elif name == 'elec_price':
if config['elec_price_variable'] == 1:
print(f"Config of topology {dirpath} has a variable electricity price, so be sure to add a price profile!")
else:
for i in all_components.index:
if all_components['comp_type'][i] == 'ElectricalGrid':
new_config[all_components['comp_name'][i] + '_price'] = value
elif name == 'injection_price':
if config['injection_price_variable'] == 1:
print(f"Config of topology {dirpath} has a variable electricity injection price, so be sure to add a price profile!")
else:
for i in all_components.index:
if all_components['comp_type'][i] == 'ElectricalGrid':
new_config[all_components['comp_name'][i] + '_injection_price'] = value
elif name == 'gas_price':
if config['gas_price_variable'] == 1:
print(f"Config of topology {dirpath} has a variable gas price, so be sure to add a price profile!")
else:
for i in all_components.index:
if all_components['comp_type'][i] == 'GasGrid':
new_config[all_components['comp_name'][i] + '_price'] = value
elif name == 'injection_price_gas':
if config['injection_price_gas_variable'] == 1:
print(f"Config of topology {dirpath} has a variable gas injection price, so be sure to add a price profile!")
else:
for i in all_components.index:
if all_components['comp_type'][i] == 'GasGrid':
new_config[all_components['comp_name'][i] + '_injection_price'] = value
elif name == 'heat_price':
if config['heat_price_variable'] == 1:
print(f"Config of topology {dirpath} has a variable heat price, so be sure to add a price profile!")
else:
for i in all_components.index:
if all_components['comp_type'][i] == 'HeatGrid':
new_config[all_components['comp_name'][i] + '_price'] = value
elif name == 'injection_price_heat':
if config['injection_price_heat_variable'] == 1:
print(f"Config of topology {dirpath} has a variable heat injection price, so be sure to add a price profile!")
else:
for i in all_components.index:
if all_components['comp_type'][i] == 'HeatGrid':
new_config[all_components['comp_name'][i] + '_injection_price'] = value
elif name == 'cooling_price':
if config['cooling_price_variable'] == 1:
print(f"Config of topology {dirpath} has a variable cooling price, so be sure to add a price profile!")
else:
for i in all_components.index:
if all_components['comp_type'][i] == 'CoolingGrid':
new_config[all_components['comp_name'][i] + '_price'] = value
elif name == 'injection_price_cooling':
if config['injection_price_cooling_variable'] == 1:
print(f"Config of topology {dirpath} has a variable cooling injection price, so be sure to add a price profile!")
else:
for i in all_components.index:
if all_components['comp_type'][i] == 'CoolingGrid':
new_config[all_components['comp_name'][i] + '_injection_price'] = value
elif name == 'elec_emission':
for i in all_components.index:
if all_components['comp_type'][i] == 'ElectricalGrid':
new_config[all_components['comp_name'][i] + '_emission'] = value
elif name == 'gas_emission':
for i in all_components.index:
if all_components['comp_type'][i] == 'GasGrid':
new_config[all_components['comp_name'][i] + '_emission'] = value
else:
new_config[name] = value
all_components.to_csv(os.path.join(dirpath, "temp.csv"), index = False)
df_str = pd.read_csv(os.path.join(dirpath, "temp.csv"), dtype = str, keep_default_na = False)
for i in all_components.columns:
......@@ -106,7 +192,16 @@ for dirpath, dirnames, filenames in os.walk(".\\input_files"):
all_connections.to_csv(os.path.join(dirpath, "connections.csv"), index = False)
for matrix_file, sector in matrix_files:
os.remove(os.path.join(dirpath, matrix_file))
except KeyError:
os.remove(os.path.join(dirpath, "config.csv"))
new_config_df = pd.DataFrame(columns = list(new_config.keys()), index = [0])
for key, value in new_config.items():
string = str(value)
if issubclass(type(value), float):
if len(string) != 0 and string.endswith(".0"):
string = f"{value:.0f}"
new_config_df.loc[0, key] = string
new_config_df.to_csv(os.path.join(dirpath, "config.csv"), index = False)
except:
invalid_topologies.append(dirpath)
for directory in changed_topologies:
print(f"Modified topology {directory}!")
......
injection_price,injection_price_variable,injection/pvpeak,gas_price,gas_price_variable,elec_price,elec_price_variable,heat_price,heat_price_variable,cooling_price,cooling_price_variable,injection_price_gas,injection_price_gas_variable,injection_price_heat,injection_price_heat_variable,injection_price_cooling,injection_price_cooling_variable,elec_emission,gas_emission,yearly_interest,planning_horizon
0.0793,0,0.7,0.0606,0,0.3046,0,0,0,0,0,0,0,0,0,0,0,0.401,0.21,0.03,20
grd_injection_price,grd_price,grd_emission,yearly_interest,planning_horizon
0.0793,0.3046,0.401,0.03,20
injection_price,injection_price_variable,injection/pvpeak,gas_price,gas_price_variable,elec_price,elec_price_variable,network_usage_capacity_fee,network_usage_energy_fee,heat_price,levies_int,levies_ext,concession,electricity_tax_int,electricity_tax_ext,VAT,heat_price_variable,cooling_price,cooling_price_variable,injection_price_gas,injection_price_gas_variable,injection_price_heat,injection_price_heat_variable,injection_price_cooling,injection_price_cooling_variable,elec_emission,gas_emission,yearly_interest,planning_horizon
0.0793,0,0.7,0.0606,0,0.3046,0,14.79,0.0506,0,0.0276,0.0496,0.0199,0,0.0205,0.190,0,0,0,0,0,0,0,0,0,0.401,0.21,0.03,20
grd_injection_price,grd_price,network_usage_capacity_fee,network_usage_energy_fee,levies_int,levies_ext,concession,electricity_tax_int,electricity_tax_ext,VAT,grd_emission,yearly_interest,planning_horizon
0.0793,0.3046,14.79,0.0506,0.0276,0.0496,0.0199,0,0.0205,0.19,0.401,0.03,20
injection_price,injection_price_variable,injection/pvpeak,gas_price,gas_price_variable,elec_price,elec_price_variable,heat_price,heat_price_variable,cooling_price,cooling_price_variable,injection_price_gas,injection_price_gas_variable,injection_price_heat,injection_price_heat_variable,injection_price_cooling,injection_price_cooling_variable,elec_emission,gas_emission,yearly_interest,planning_horizon
0.0793,0,0.7,0.0606,0,0.3046,0,0,0,0,0,0,0,0,0,0,0,0.401,0.21,0.03,20
grd_injection_price,grd_price,grd_emission,yearly_interest,planning_horizon
0.0793,0.3046,0.401,0.03,20
injection_price,injection_price_variable,injection/pvpeak,gas_price,gas_price_variable,elec_price,elec_price_variable,heat_price,heat_price_variable,cooling_price,cooling_price_variable,injection_price_gas,injection_price_gas_variable,injection_price_heat,injection_price_heat_variable,injection_price_cooling,injection_price_cooling_variable,elec_emission,gas_emission,yearly_interest,planning_horizon
0.0793,0,0.7,0.0606,0,0.3046,0,0,0,0,0,0,0,0,0,0,0,0.401,0.21,0.03,20
grd_injection_price,grd_price,grd_emission,yearly_interest,planning_horizon
0.0793,0.3046,0.401,0.03,20
injection_price,injection_price_variable,injection/pvpeak,gas_price,gas_price_variable,elec_price,elec_price_variable,heat_price,heat_price_variable,cooling_price,cooling_price_variable,injection_price_gas,injection_price_gas_variable,injection_price_heat,injection_price_heat_variable,injection_price_cooling,injection_price_cooling_variable,elec_emission,gas_emission,yearly_interest,planning_horizon,elec_price_cap_low,elec_price_cap_high
0.0793,0,0.7,0.0606,0,0.3046,0,0,0,0,0,0,0,0,0,0,0,0.401,0.21,0.03,20,15,107
grd_injection_price,gas_grd_price,grd_price,gas_grd_injection_price,grd_emission,gas_grd_emission,yearly_interest,planning_horizon
0.0793,0.0606,0.3046,0,0.401,0.21,0.03,20
comp_name,comp_type,model,min_size,max_size,current_size
pv_roof,PVGenerator,PV2,30,30,0
inv_pv_bat,Inverter,STP-7000TL-20,30,30,0
grd,ElectricalGrid,GRD1,1000,1000,0
elec_cns,ElectricalConsumption,,,,
sector,comp_from,comp_to
electricity,pv_roof,inv_pv_bat
electricity,inv_pv_bat,grd
electricity,inv_pv_bat,elec_cns
electricity,grd,elec_cns
electricity,pv_roof,grd
electricity,pv_roof,elec_cns
electricity,grd,elec_cns
comp_name,comp_type,model,min_size,max_size,current_size,pv_roof,inv_pv_bat,grd,elec_cns
pv_roof,StandardPVGenerator,PV2,30,30,0,0,1,0,0
inv_pv_bat,Inverter,STP-7000TL-20,30,30,0,0,0,1,1
grd,StandardACGrid,GRD1,1000,1000,0,0,0,0,1
elec_cns,StandardElectricalConsumption,CNS1,0,1000,0,0,0,0,0
comp_name,comp_type,model,min_size,max_size,current_size,pv_roof,grd,elec_cns
pv_roof,StandardPVGenerator,PV2,30,30,0,0,1,1
grd,StandardACGrid,GRD1,1000,1000,0,0,0,1
elec_cns,StandardElectricalConsumption,CNS1,1000,1000,0,0,0,0
injection_price,injection_price_variable,injection/pvpeak,gas_price,gas_price_variable,elec_price,elec_price_variable,heat_price,heat_price_variable,cooling_price,cooling_price_variable,injection_price_gas,injection_price_gas_variable,injection_price_heat,injection_price_heat_variable,injection_price_cooling,injection_price_cooling_variable,elec_emission,gas_emission,yearly_interest,planning_horizon,elec_price_cap_low,elec_price_cap_high
0.0793,0,0.7,0.0606,0,0.3046,0,0,0,0,0,0,0,0,0,0,0,0.401,0.21,0.03,20,15,107
grd_injection_price,gas_grd_price,grd_price,gas_grd_injection_price,grd_emission,gas_grd_emission,yearly_interest,planning_horizon
0.0793,0.0606,0.3046,0,0.401,0.21,0.03,20
injection_price,injection_price_variable,injection/pvpeak,gas_price,gas_price_variable,elec_price,elec_price_variable,heat_price,heat_price_variable,cooling_price,cooling_price_variable,injection_price_gas,injection_price_gas_variable,injection_price_heat,injection_price_heat_variable,injection_price_cooling,injection_price_cooling_variable,elec_emission,gas_emission,yearly_interest,planning_horizon,elec_price_cap_low,elec_price_cap_high
0.0793,0,0.7,0.0606,0,0.3046,0,0,0,0,0,0,0,0,0,0,0,0.401,0.21,0.03,20,15,107
grd_injection_price,gas_grd_price,grd_price,gas_grd_injection_price,grd_emission,gas_grd_emission,yearly_interest,planning_horizon
0.0793,0.0606,0.3046,0,0.401,0.21,0.03,20
injection_price,injection_price_variable,injection/pvpeak,gas_price,gas_price_variable,elec_price,elec_price_variable,heat_price,heat_price_variable,cooling_price,cooling_price_variable,injection_price_gas,injection_price_gas_variable,injection_price_heat,injection_price_heat_variable,injection_price_cooling,injection_price_cooling_variable,elec_emission,gas_emission,yearly_interest,planning_horizon,elec_price_cap_low,elec_price_cap_high
0.0793,0,0.7,0.0606,0,0.3046,0,0,0,0,0,0,0,0,0,0,0,0.401,0.21,0.03,20,15,107
grd_injection_price,gas_grd_price,grd_price,gas_grd_injection_price,grd_emission,gas_grd_emission,yearly_interest,planning_horizon
0.0793,0.0606,0.3046,0,0.401,0.21,0.03,20
injection_price,injection_price_variable,injection/pvpeak,gas_price,gas_price_variable,elec_price,elec_price_variable,heat_price,heat_price_variable,cooling_price,cooling_price_variable,injection_price_gas,injection_price_gas_variable,injection_price_heat,injection_price_heat_variable,injection_price_cooling,injection_price_cooling_variable,elec_emission,gas_emission,yearly_interest,planning_horizon,elec_price_cap_low,elec_price_cap_high
0.0793,0,0.7,0.0606,0,0.3046,0,0,0,0,0,0,0,0,0,0,0,0.401,0.21,0.03,20,15,107
grd_injection_price,gas_grd_price,grd_price,gas_grd_injection_price,grd_emission,gas_grd_emission,yearly_interest,planning_horizon
0.0793,0.0606,0.3046,0,0.401,0.21,0.03,20
comp_name,comp_type,model,min_size,max_size,current_size
pv_roof,PVGenerator,PV2,30,30,0
inv_pv_bat,Inverter,STP-7000TL-20,30,30,0
grd,ElectricalGrid,GRD1,1000,1000,0
elec_cns,ElectricalConsumption,,,,
sector,comp_from,comp_to
electricity,pv_roof,inv_pv_bat
electricity,inv_pv_bat,grd
electricity,inv_pv_bat,elec_cns
electricity,grd,elec_cns
electricity,pv_roof,grd
electricity,pv_roof,elec_cns
electricity,grd,elec_cns
comp_name,comp_type,model,min_size,max_size,current_size,pv_roof,inv_pv_bat,grd,elec_cns
pv_roof,StandardPVGenerator,PV2,30,30,0,0,1,0,0
inv_pv_bat,Inverter,STP-7000TL-20,30,30,0,0,0,1,1
grd,StandardACGrid,GRD1,1000,1000,0,0,0,0,1
elec_cns,StandardElectricalConsumption,CNS1,0,1000,0,0,0,0,0
comp_name,comp_type,model,min_size,max_size,current_size,pv_roof,grd,elec_cns
pv_roof,StandardPVGenerator,PV2,30,30,0,0,1,1
grd,StandardACGrid,GRD1,1000,1000,0,0,0,1
elec_cns,StandardElectricalConsumption,CNS1,1000,1000,0,0,0,0
injection_price,injection_price_variable,injection/pvpeak,gas_price,gas_price_variable,elec_price,elec_price_variable,heat_price,heat_price_variable,cooling_price,cooling_price_variable,injection_price_gas,injection_price_gas_variable,injection_price_heat,injection_price_heat_variable,injection_price_cooling,injection_price_cooling_variable,elec_emission,gas_emission,yearly_interest,planning_horizon,elec_price_cap_low,elec_price_cap_high
0.0793,0,0.7,0.0606,0,0.3046,0,0,0,0,0,0,0,0,0,0,0,0.401,0.21,0.03,20,15,107
grd_injection_price,gas_grd_price,grd_price,gas_grd_injection_price,grd_emission,gas_grd_emission,yearly_interest,planning_horizon
0.0793,0.0606,0.3046,0,0.401,0.21,0.03,20
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment