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:
parent
e2c3118f08
commit
2aa59a3905
@ -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
|
||||||
|
@ -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')
|
||||||
|
@ -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"}):
|
||||||
|
Loading…
Reference in New Issue
Block a user