अनुकूलन के एक बैटरी भंडारण के साथ pyomo

0

सवाल

मैं वर्तमान में हूँ की कोशिश कर रहा का अनुकूलन करने के लिए CO2 उत्सर्जन की एक househould के आधार पर बिजली की खपत । यह भी शामिल है एक बैटरी भंडारण. लेकिन किसी कारण के लिए राज्य के ऊर्जा की गणना करते हैं । मैं इस त्रुटि हो रही है:

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

यह मेरा कोड इतनी दूर है:

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)

भंडारण ist होना चाहिए खाली शुरुआत में और अंत में अच्छी तरह से.

optimization pyomo python
2021-11-20 18:35:47
2
1

आप उपयोग कर रहे हैं एक ही नाम के दो बार. आप model.soe के रूप में एक चर और एक बाधा के रूप में.

आप नाम बदलना होगा उनमें से एक मॉडल के रूप में नहीं हो सकता है दो नाम के साथ वस्तुओं का एक ही नाम...

2021-11-21 00:18:37

मैं बदल गया है, लेकिन अब यह सिर्फ कहते हैं Restarting kernel... जब मैं चलाने के लिए प्रयास करें ।
saschav

सबसे अच्छा जवाब

1

तो मैं था कुछ गलतियों यहाँ और वहाँ. में, उदाहरण के लिए उद्देश्य समारोह, जहां मैं भूल गया मॉडल बदलने के लिए.एन करने के लिए मॉडल.टी, क्योंकि मैं नाम दिया है कि एक में लिखने की प्रक्रिया कोड. सबसे बड़ी गलती सोचा था भूल करने के लिए एक चर बनाने के लिए मांग.

model.demand = Var(model.t, within = NonNegativeReals)

def demand_rule(model, t):
    return model.demand[t] == model.heatpump[t] + model.consumption[t] + model.charge[t]
model.demand_rule = Constraint(model.t, rule = demand_rule)

अब यह वास्तव में काम करता है.

2021-11-27 10:36:56

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में