コード例 #1
0
def _generate_model(
    model_data,
    _status_vars,
    _power_vars,
    _reserve_vars,
    _non_dispatchable_vars,
    _generation_limits,
    _ramping_limits,
    _production_costs,
    _uptime_downtime,
    _startup_costs,
    _power_balance,
    _reserve_requirement,
    _objective,
    _relax_binaries=False,
):

    model = pe.ConcreteModel()

    model.name = "UnitCommitment"

    ## enforece time 1 ramp rates
    model.enforce_t1_ramp_rates = True

    ## prescient assumes we have storage services
    model.storage_services = True

    ## new flag for ancillary services
    model.ancillary_services = False

    ## to relax binaries
    model.relax_binaries = _relax_binaries

    params.load_params(model, model_data)
    getattr(status_vars, _status_vars)(model)
    getattr(power_vars, _power_vars)(model)
    getattr(reserve_vars, _reserve_vars)(model)
    getattr(non_dispatchable_vars, _non_dispatchable_vars)(model)
    getattr(generation_limits, _generation_limits)(model)
    getattr(ramping_limits, _ramping_limits)(model)
    getattr(production_costs, _production_costs)(model)
    getattr(uptime_downtime, _uptime_downtime)(model)
    getattr(startup_costs, _startup_costs)(model)
    if model.storage_services:
        services.storage_services(model)
    if model.ancillary_services:
        services.ancillary_services(model)
    getattr(power_balance, _power_balance)(model)
    getattr(reserve_requirement, _reserve_requirement)(model)
    getattr(objective, _objective)(model)

    return model
コード例 #2
0
ファイル: uc_model_generator.py プロジェクト: wilchesf/Egret
def _generate_model(
    model_data,
    _status_vars,
    _power_vars,
    _reserve_vars,
    _non_dispatchable_vars,
    _generation_limits,
    _ramping_limits,
    _production_costs,
    _uptime_downtime,
    _startup_costs,
    _power_balance,
    _reserve_requirement,
    _objective,
    _relax_binaries=False,
):

    model = pe.ConcreteModel()

    # hold on to this for later
    model.model_data = model_data

    model.name = "UnitCommitment"

    ## enforece time 1 ramp rates
    model.enforce_t1_ramp_rates = True

    ## to relax binaries
    model.relax_binaries = _relax_binaries

    params.load_params(model, model_data)
    getattr(status_vars, _status_vars)(model)
    getattr(power_vars, _power_vars)(model)
    getattr(reserve_vars, _reserve_vars)(model)
    getattr(non_dispatchable_vars, _non_dispatchable_vars)(model)
    getattr(generation_limits, _generation_limits)(model)
    getattr(ramping_limits, _ramping_limits)(model)
    getattr(production_costs, _production_costs)(model)
    getattr(uptime_downtime, _uptime_downtime)(model)
    getattr(startup_costs, _startup_costs)(model)
    services.storage_services(model)
    services.ancillary_services(model)
    getattr(power_balance, _power_balance)(model)
    getattr(reserve_requirement, _reserve_requirement)(model)
    getattr(objective, _objective)(model)

    if 'fuel_supply' in model_data.data['elements'] and bool(
            model_data.data['elements']['fuel_supply']):
        fuel_supply.fuel_supply_model(model)

    return model
コード例 #3
0
ファイル: uc_model_generator.py プロジェクト: zypher22/Egret
def _generate_model(
    model_data,
    _status_vars,
    _power_vars,
    _reserve_vars,
    _non_dispatchable_vars,
    _generation_limits,
    _ramping_limits,
    _production_costs,
    _uptime_downtime,
    _startup_costs,
    _power_balance,
    _reserve_requirement,
    _objective,
    _relax_binaries=False,
    _ptdf_options=None,
    _PTDF_matrix_dict=None,
):

    model = pe.ConcreteModel()

    # hold on to this for later
    model.model_data = model_data

    model.name = "UnitCommitment"

    ## munge ptdf_options, if necessary
    if _power_balance in ['ptdf_power_flow']:
        import egret.common.lazy_ptdf_utils as lpu
        _ptdf_options = lpu.populate_default_ptdf_options(_ptdf_options)

        baseMVA = model_data.data['system']['baseMVA']
        lpu.check_and_scale_ptdf_options(_ptdf_options, baseMVA)

        model._ptdf_options = _ptdf_options

        if _PTDF_matrix_dict is not None:
            model._PTDFs = _PTDF_matrix_dict
        else:
            model._PTDFs = {}

    ## enforece time 1 ramp rates
    model.enforce_t1_ramp_rates = True

    ## to relax binaries
    model.relax_binaries = _relax_binaries

    params.load_params(model, model_data)
    getattr(status_vars, _status_vars)(model)
    getattr(power_vars, _power_vars)(model)
    getattr(reserve_vars, _reserve_vars)(model)
    getattr(non_dispatchable_vars, _non_dispatchable_vars)(model)
    getattr(generation_limits, _generation_limits)(model)
    getattr(ramping_limits, _ramping_limits)(model)
    getattr(production_costs, _production_costs)(model)
    getattr(uptime_downtime, _uptime_downtime)(model)
    getattr(startup_costs, _startup_costs)(model)
    services.storage_services(model)
    services.ancillary_services(model)
    getattr(power_balance, _power_balance)(model)
    getattr(reserve_requirement, _reserve_requirement)(model)

    if 'fuel_supply' in model_data.data['elements'] and bool(
            model_data.data['elements']['fuel_supply']):
        fuel_consumption.fuel_consumption_model(model)
        fuel_supply.fuel_supply_model(model)
    else:
        model.fuel_supply = None
        model.fuel_consumption = None

    if 'security_constraint' in model_data.data['elements'] and bool(
            model_data.data['elements']['security_constraint']):
        security_constraints.security_constraint_model(model)
    else:
        model.security_constraints = None

    getattr(objective, _objective)(model)

    return model