Пример #1
0
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
Пример #2
0
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