def scenario_constraints(n, snapshots, limits=None, flexibility=0.1, carrier_constraints=None): for constraint in limits.index: if constraint in carrier_constraints: if constraint == 'hydro': index = n.storage_units[n.storage_units['carrier'] == constraint].index setattr(n.model,constraint+"_limit_low", Con(expr=sum(n.model.storage_p_nom[name] \ for name in index) >= limits[constraint] * (1.-flexibility))) setattr(n.model,constraint+"_limit_up", Con(expr=sum(n.model.storage_p_nom[name] \ for name in index) <= limits[constraint] * (1.+flexibility))) else: index = n.generators[n.generators['carrier'] == constraint].index setattr(n.model,constraint+"_limit_low", Con(expr=sum(n.model.generator_p_nom[name] \ for name in index) >= limits[constraint] * (1.-flexibility))) setattr(n.model,constraint+"_limit_up", Con(expr=sum(n.model.generator_p_nom[name] \ for name in index) <= limits[constraint] * (1.+flexibility))) return
def devplan_scenario_constraints(n,snapshots,limits=None,flexibility=0.1): carrier_constraints = ['wind', 'solar', 'hydro', 'bioenergy', 'hard coal', 'oil', 'ocgt', 'nuclear', 'hydro ror'] for constraint in limits.index: if constraint in carrier_constraints: if constraint == 'hydro': index = n.storage_units[n.storage_units['carrier']==constraint].index setattr(n.model,constraint+"_limit_low",Con(expr=sum(n.model.storage_p_nom[name] \ for name in index) >= limits[constraint] * (1.-flexibility))) setattr(n.model,constraint+"_limit_up",Con(expr=sum(n.model.storage_p_nom[name] \ for name in index) <= limits[constraint] * (1.+flexibility))) else: index = n.generators[n.generators['carrier']==constraint].index setattr(n.model,constraint+"_limit_low",Con(expr=sum(n.model.generator_p_nom[name] \ for name in index) >= limits[constraint] * (1.-flexibility))) setattr(n.model,constraint+"_limit_up",Con(expr=sum(n.model.generator_p_nom[name] \ for name in index) <= limits[constraint] * (1.+flexibility))) return