【发布时间】:2018-11-22 20:38:44
【问题描述】:
我想创建一个模型实例,然后保存它,以便稍后加载和求解(与求解相比,初始化需要很长时间)。 当我尝试这个时,它给了我以下错误。
with open('model.pickle', 'w') as f:
pickle.dump(instance, f)
属性错误: 无法腌制本地对象 'Euphemia.init..obj_expression
目标函数是这样的:
def obj_expression(model):
curve = sum(model.x[area, hour, Type, index] * model.Q[area, hour, Type, index] *
( model.P1[area, hour, Type, index] + model.P0[area, hour, Type, index] ) / 2
for (area, hour, Type, index) in model.Curve )
bids = sum(model.y[area, index] * model.PB[area, index] *
sum( model.QB[area, index, hour] for (hour) in model.Hours )
for (area, index) in model.Bids )
return curve + bids
self.model.OBJ = pe.Objective(rule = obj_expression, sense = pe.maximize)
有人知道如何保存混凝土模型吗?
【问题讨论】:
-
你有 lambda 函数之类的吗?这些可能很难腌制。
-
不,它们都是常规函数。
-
如果不查看模型的详细信息,就不可能知道导致 pickle 失败的原因。 Pyomo 模型应该是可腌制的,并且有单元测试可以验证这一点:github.com/Pyomo/pyomo/blob/master/pyomo/core/tests/unit/…
-
我添加了目标函数