exporting additional costs, and compatibility adjustments (#261)

* added export for connection_cost adjustment

* removed lambda function from multiprocessing
changed true/false_values to lists

* removed double import of functools

* moved added costs to df column

* Update scripts/simplify_network.py

Co-authored-by: Leonie Plaga <leonie.plaga@ruhr-uni-bochum.de>
Co-authored-by: Fabian Neumann <fabian.neumann@outlook.de>
This commit is contained in:
huckebrink 2021-08-04 18:19:23 +02:00 committed by GitHub
parent e2c3118f08
commit 2aa59a3905
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 6 deletions

View File

@ -239,7 +239,8 @@ rule simplify_network:
network='networks/elec_s{simpl}.nc', network='networks/elec_s{simpl}.nc',
regions_onshore="resources/regions_onshore_elec_s{simpl}.geojson", regions_onshore="resources/regions_onshore_elec_s{simpl}.geojson",
regions_offshore="resources/regions_offshore_elec_s{simpl}.geojson", regions_offshore="resources/regions_offshore_elec_s{simpl}.geojson",
busmap='resources/busmap_elec_s{simpl}.csv' busmap='resources/busmap_elec_s{simpl}.csv',
connection_costs='resources/connection_costs_s{simpl}.csv'
log: "logs/simplify_network/elec_s{simpl}.log" log: "logs/simplify_network/elec_s{simpl}.log"
benchmark: "benchmarks/simplify_network/elec_s{simpl}" benchmark: "benchmarks/simplify_network/elec_s{simpl}"
threads: 1 threads: 1

View File

@ -114,7 +114,7 @@ def _find_closest_links(links, new_links, distance_upper_bound=1.5):
def _load_buses_from_eg(): def _load_buses_from_eg():
buses = (pd.read_csv(snakemake.input.eg_buses, quotechar="'", buses = (pd.read_csv(snakemake.input.eg_buses, quotechar="'",
true_values='t', false_values='f', true_values=['t'], false_values=['f'],
dtype=dict(bus_id="str")) dtype=dict(bus_id="str"))
.set_index("bus_id") .set_index("bus_id")
.drop(['station_id'], axis=1) .drop(['station_id'], axis=1)
@ -136,7 +136,7 @@ def _load_buses_from_eg():
def _load_transformers_from_eg(buses): def _load_transformers_from_eg(buses):
transformers = (pd.read_csv(snakemake.input.eg_transformers, quotechar="'", transformers = (pd.read_csv(snakemake.input.eg_transformers, quotechar="'",
true_values='t', false_values='f', true_values=['t'], false_values=['f'],
dtype=dict(transformer_id='str', bus0='str', bus1='str')) dtype=dict(transformer_id='str', bus0='str', bus1='str'))
.set_index('transformer_id')) .set_index('transformer_id'))
@ -147,7 +147,7 @@ def _load_transformers_from_eg(buses):
def _load_converters_from_eg(buses): def _load_converters_from_eg(buses):
converters = (pd.read_csv(snakemake.input.eg_converters, quotechar="'", converters = (pd.read_csv(snakemake.input.eg_converters, quotechar="'",
true_values='t', false_values='f', true_values=['t'], false_values=['f'],
dtype=dict(converter_id='str', bus0='str', bus1='str')) dtype=dict(converter_id='str', bus0='str', bus1='str'))
.set_index('converter_id')) .set_index('converter_id'))
@ -159,7 +159,7 @@ def _load_converters_from_eg(buses):
def _load_links_from_eg(buses): def _load_links_from_eg(buses):
links = (pd.read_csv(snakemake.input.eg_links, quotechar="'", true_values='t', false_values='f', links = (pd.read_csv(snakemake.input.eg_links, quotechar="'", true_values=['t'], false_values=['f'],
dtype=dict(link_id='str', bus0='str', bus1='str', under_construction="bool")) dtype=dict(link_id='str', bus0='str', bus1='str', under_construction="bool"))
.set_index('link_id')) .set_index('link_id'))
@ -249,7 +249,7 @@ def _add_links_from_tyndp(buses, links):
def _load_lines_from_eg(buses): def _load_lines_from_eg(buses):
lines = (pd.read_csv(snakemake.input.eg_lines, quotechar="'", true_values='t', false_values='f', lines = (pd.read_csv(snakemake.input.eg_lines, quotechar="'", true_values=['t'], false_values=['f'],
dtype=dict(line_id='str', bus0='str', bus1='str', dtype=dict(line_id='str', bus0='str', bus1='str',
underground="bool", under_construction="bool")) underground="bool", under_construction="bool"))
.set_index('line_id') .set_index('line_id')

View File

@ -178,6 +178,7 @@ def _compute_connection_costs_to_bus(n, busmap, connection_costs_per_link=None,
def _adjust_capital_costs_using_connection_costs(n, connection_costs_to_bus): def _adjust_capital_costs_using_connection_costs(n, connection_costs_to_bus):
connection_costs = {}
for tech in connection_costs_to_bus: for tech in connection_costs_to_bus:
tech_b = n.generators.carrier == tech tech_b = n.generators.carrier == tech
costs = n.generators.loc[tech_b, "bus"].map(connection_costs_to_bus[tech]).loc[lambda s: s>0] costs = n.generators.loc[tech_b, "bus"].map(connection_costs_to_bus[tech]).loc[lambda s: s>0]
@ -185,6 +186,9 @@ def _adjust_capital_costs_using_connection_costs(n, connection_costs_to_bus):
n.generators.loc[costs.index, "capital_cost"] += costs n.generators.loc[costs.index, "capital_cost"] += costs
logger.info("Displacing {} generator(s) and adding connection costs to capital_costs: {} " logger.info("Displacing {} generator(s) and adding connection costs to capital_costs: {} "
.format(tech, ", ".join("{:.0f} Eur/MW/a for `{}`".format(d, b) for b, d in costs.iteritems()))) .format(tech, ", ".join("{:.0f} Eur/MW/a for `{}`".format(d, b) for b, d in costs.iteritems())))
connection_costs[tech] = costs
pd.DataFrame(connection_costs).to_csv(snakemake.output.connection_costs)
def _aggregate_and_move_components(n, busmap, connection_costs_to_bus, aggregate_one_ports={"Load", "StorageUnit"}): def _aggregate_and_move_components(n, busmap, connection_costs_to_bus, aggregate_one_ports={"Load", "StorageUnit"}):