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
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
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