How to save (pickle) a model instance in pyomo

爱⌒轻易说出口 提交于 2019-11-29 17:01:26

The solution is the cloudpickle module, regular pickle has problems pickling functions. An example:

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)

It looks like pickle (and also cloudpickle) will not work when DerivativeVar is used.

from pyomo.environ import *
from pyomo.dae import *
import pickle
import dill
model = ConcreteModel()
model.x = ContinuousSet(initialize=(0., 1.))
model.y = Var(model.x, initialize=1.)
with open('model1.pickle', 'wb') as f:
    pickle.dump(model, f)

model.dydx = DerivativeVar(model.y, wrt=model.x)
with open('model2.pickle', 'wb') as f:
    try:
        pickle.dump(model, f)
    except TypeError:
        dill.dump(model, f)

dill appears to work instead for pickling a weakref: Pickling weakref in Python

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!