python - 如何在 pyomo 中保存(pickle)模型实例

标签 python pyomo

我想创建一个模型实例,然后保存它,以便稍后加载和求解(与求解相比,初始化需要相当长的时间)。 当我尝试这个时,它给了我以下错误。

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)

有人知道如何保存具体模型吗?

最佳答案

解决方案是cloudpickle模块,常规pickle在pickling功能上存在问题。一个例子:

import cloudpickle

with open('test.pkl', mode='wb') as file:
   cloudpickle.dump(instance, file)


with open('test.pkl', mode='rb') as file:
   instance = cloudpickle.load(file)

关于python - 如何在 pyomo 中保存(pickle)模型实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50834258/

相关文章:

Pyomo:带有 if 语句的约束

python - 为什么我的 keras 代码不显示精度值?

python - 为什么 AdaBoostRegressor 的 neg_mean_squared_error 为正数?

python - 从抽象 pyomo 模型实例化具体模型

python - 将整数值分解为保持总和的整数数组

pyomo - 从 Python PYOMO 使用 GAMS/CPLEX

Python ibm pyomo cplex

python - 找不到 webdriverprefs.json - pyinstaller

python - "Watching"程序正在逐行处理?

python - 将自定义参数传递给 Blender Operator,就像它是一个函数一样