Attualmente sto cercando di ottimizzare le Emissioni di CO2, househould basato sul consumo di energia elettrica. Esso comprende anche una batteria di stoccaggio. Ma per qualche motivo lo stato del calcolo energetico non funziona. Continuo a ricevere questo errore:
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...
Questo è il mio codice così lontano:
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)
L'archiviazione ist dovrebbe essere vuota all'inizio e alla fine pure.
Restarting kernel...
quando cerco di eseguirlo.