Actualmente estoy tratando de optimizar las Emisiones de CO2 de un househould basada en el consumo de electricidad. También incluye una batería de almacenamiento. Pero por alguna razón el estado de cálculo de la energía no funciona. Me sale este error:
WARNING: Implicitly replacing the Component attribute soe (type=<class
'pyomo.core.base.var.IndexedVar'>) on block unknown with a new Component
(type=<class 'pyomo.core.base.constraint.IndexedConstraint'>). This is
usually indicative of a modelling error. To avoid this warning, use
block.del_component() and block.add_component().
Restarting kernel...
Este es mi código hasta el momento:
model = ConcreteModel()
n = 30
model.t = RangeSet(1, n)
model.consumption = Param(model.t, initialize = df['Consumption'])
model.pv = Param(model.t, initialize = df['PV'])
model.emissionen = Param(model.t, initialize = df['CO2-Emissions'])
model.heatpump = Param(model.t, initialize = df['Heatpump'])
in_out_leistung = bt.iloc[1]['Values']
in_out_efficiency = bt.iloc[2]['Values']
battery_capacity = bt.iloc[0]['Values']
soe_start = 0
elec_import_max = 200
model.soe = Var(model.t, initialize = 0, within = NonNegativeReals)
model.charge = Var(model.t, within = NonNegativeReals, initialize = 0)
model.discharge = Var(model.t, within = NonNegativeReals, initialize = 0)
model.elec_grid = Var(model.t, bounds = (0, elec_import_max), within = NonNegativeReals)
def discharge_capacity_rule(model, t):
return model.discharge[t] <= in_out_leistung
model.discharge_capacity_rule = Constraint(model.t, rule = discharge_capacity_rule)
def charge_capacity_rule(model, t):
return model.charge[t] <= in_out_leistung
model.charge_capacity_rule = Constraint(model.t, rule = charge_capacity_rule)
def max_capacity_rule(model, t):
return model.soe[t] <= battery_capacity
model.max_capacity_rule = Constraint(model.t, rule = max_capacity_rule)
def soe_start_rule(model):
return model.soe[1] == soe_start
model.soe_start_rule = Constraint(rule = soe_start_rule)
def soe(model, t):
if t == 1:
return model.soe[t] == soe_start
else:
return model.soe[t] == model.soe[t-1] + (model.charge[t] * in_out_efficiency) - model.discharge[t] / in_out_efficiency
model.soe = Constraint(model.t, rule = soe)
def soe_end_rule(model):
return model.soe[n] == model.soe[1]
model.soe_end_rule = Constraint(rule = soe_end_rule)
def demand(model, t):
return model.demand[t] == model.heatpump[t] + model.consumption[t] + model.charge[t]
model.demand = Constraint(model.t, rule = demand)
def lastdeckung(model, t):
return model.pv[t] + model.elec_grid[t] + model.discharge[t] == model.demand[t]
model.lastdeckung = Constraint(model.t, rule = lastdeckung)
def emissionsreduzierung(model, t):
return sum(model.elec_grid[t] * model.emissionen[t] for t in model.n)
model.emissionsreduzierung = Objective(rule = emissionsreduzierung, sense = minimize)
El almacenamiento ist supone que se vacía en el principio y en el final también.
Restarting kernel...
cuando trato de ejecutarlo.