solve_network: fix UC

This commit is contained in:
Fabian 2023-04-26 17:15:01 +02:00
parent 956079765c
commit dcc7b4cebb
2 changed files with 14 additions and 11 deletions

View File

@ -106,9 +106,9 @@ electricity:
H2: 168 H2: 168
extendable_carriers: extendable_carriers:
Generator: [solar, onwind, offwind-ac, offwind-dc, OCGT] Generator: []
StorageUnit: [] # battery, H2 StorageUnit: [] # battery, H2
Store: [battery, H2] Store: []
Link: [] # H2 pipeline Link: [] # H2 pipeline
# use pandas query strings here, e.g. Country not in ['Germany'] # use pandas query strings here, e.g. Country not in ['Germany']
@ -615,7 +615,7 @@ solving:
formulation: kirchhoff formulation: kirchhoff
clip_p_max_pu: 1.e-2 clip_p_max_pu: 1.e-2
linearized_unit_commitment: true linearized_unit_commitment: true
load_shedding: false load_shedding: true
noisy_costs: true noisy_costs: true
skip_iterations: true skip_iterations: true
track_iterations: false track_iterations: false

View File

@ -603,6 +603,8 @@ def add_unit_commitment(n, fn):
n.df(c).loc[n.df(c).carrier.isin(uc_data.columns), "committable"] = True n.df(c).loc[n.df(c).carrier.isin(uc_data.columns), "committable"] = True
for attr in uc_data.index: for attr in uc_data.index:
n.df(c)[attr].update(n.df(c)["carrier"].map(uc_data.loc[attr]).dropna()) n.df(c)[attr].update(n.df(c)["carrier"].map(uc_data.loc[attr]).dropna())
gen_i = n.df(c).query("carrier in @uc_data.columns").index
n.df(c).loc[gen_i, "committable"] = True
def solve_network(n, config, opts="", **kwargs): def solve_network(n, config, opts="", **kwargs):
@ -615,7 +617,7 @@ def solve_network(n, config, opts="", **kwargs):
track_iterations = cf_solving.get("track_iterations", False) track_iterations = cf_solving.get("track_iterations", False)
min_iterations = cf_solving.get("min_iterations", 4) min_iterations = cf_solving.get("min_iterations", 4)
max_iterations = cf_solving.get("max_iterations", 6) max_iterations = cf_solving.get("max_iterations", 6)
linearized_unit_commitment = cf_solving.get("linearized_unit_commitment", True) linearized_unit_commitment = cf_solving.get("linearized_unit_commitment", False)
# add to network for extra_functionality # add to network for extra_functionality
n.config = config n.config = config
@ -631,6 +633,7 @@ def solve_network(n, config, opts="", **kwargs):
solver_name=solver_name, solver_name=solver_name,
extra_functionality=extra_functionality, extra_functionality=extra_functionality,
linearized_unit_commitment=linearized_unit_commitment, linearized_unit_commitment=linearized_unit_commitment,
linearized_unit_commitment=linearized_unit_commitment,
**solver_options, **solver_options,
**kwargs, **kwargs,
) )
@ -640,6 +643,7 @@ def solve_network(n, config, opts="", **kwargs):
track_iterations=track_iterations, track_iterations=track_iterations,
min_iterations=min_iterations, min_iterations=min_iterations,
max_iterations=max_iterations, max_iterations=max_iterations,
linearized_unit_commitment=linearized_unit_commitment,
extra_functionality=extra_functionality, extra_functionality=extra_functionality,
**solver_options, **solver_options,
**kwargs, **kwargs,
@ -655,20 +659,19 @@ def solve_network(n, config, opts="", **kwargs):
return n return n
# %%
if __name__ == "__main__": if __name__ == "__main__":
if "snakemake" not in globals(): if "snakemake" not in globals():
from _helpers import mock_snakemake from _helpers import mock_snakemake
snakemake = mock_snakemake( snakemake = mock_snakemake(
"solve_network", "solve_sector_network",
# configfiles="test/config.overnight.yaml", configfiles="test/config.overnight.yaml",
simpl="", simpl="",
opts="", opts="",
clusters="37", clusters="5",
ll="v1.0", ll="v1.5",
sector_opts="", sector_opts="CO2L0-24H-T-H-B-I-A-solar+p3-dist1",
planning_horizons="2020", planning_horizons="2030",
) )
configure_logging(snakemake) configure_logging(snakemake)
if "sector_opts" in snakemake.wildcards.keys(): if "sector_opts" in snakemake.wildcards.keys():