import pyomo
from multiprocessing import Pool
class a():
def __init__():
self.df1 = pd.DataFrame({"T": self.T})
self.df2 = pd.DataFrame({"N": [1]})
self.writer = pd.ExcelWriter("optdata.xlsx", engine='xlsxwriter')
self.df1.to_excel(self.writer, sheet_name='Sheet1', index=False, startcol=0)
self.df2.to_excel(self.writer, sheet_name='Sheet1', index=False, startcol=0 + len(self.df1.T))
self.workbook = self.writer.book
self.workbook.define_name('T', '=Sheet1!$A$1:$A$25')
self.workbook.define_name('N', '=Sheet1!$B$1:$B$2')
self.writer.save()
self.df3 = pd.DataFrame({"T": self.T})
self.df4 = pd.DataFrame({"N": [1]})
self.writer = pd.ExcelWriter("optdata1.xlsx", engine='xlsxwriter')
self.df3.to_excel(self.writer, sheet_name='Sheet1', index=False, startcol=0)
self.df4.to_excel(self.writer, sheet_name='Sheet1', index=False, startcol=0 + len(self.df3.T))
self.workbook = self.writer.book
self.workbook.define_name('T', '=Sheet1!$A$1:$A$25')
self.workbook.define_name('N', '=Sheet1!$B$1:$B$2')
self.writer.save()
self.pool = Pool(processes = 2)
self.p1 = self.pool.map(self.createmodel, range(1))
self.p2 = self.pool.map(self.createmodel1, range(1))
def createmodel(self, num):
self.model = Abstractmodel()
self.model.T = Set()
self.model.N = Set()
self.model.p = Param(self.model.N, self.model.T)
self.data = DataPortal(model=self.model)
self.data.load(filename="optdata.xlsx", range="T", format="set", set="T")
self.data.load(filename="optdata.xlsx", range="N", format="set", set="N")
self.data.load(filename="optdata.xlsx", range="p", param="p", format="array")
self.data.flow = Var(self.model.N, self.model.T)
self.instance = self.model.create_instance(self.data)
self.instance.pprint()
def createmodel1(self, num):
self.model1 = Abstractmodel()
self.model1.T = Set()
self.model1.N = Set()
self.model1.p = Param(self.model1.N, self.model1.T)
self.data1 = DataPortal(model=self.model1)
self.data1.load(filename="optdata1.xlsx", range="T", format="set", set="T")
self.data1.load(filename="optdata1.xlsx", range="N", format="set", set="N")
self.data1.load(filename="optdata1.xlsx", range="p", param="p", format="array")
self.data1.flow = Var(self.model1.N, self.model1.T)
self.instance = self.model1.create_instance(self.data1)
self.instance.pprint()
if __name__ == "__main__":
a()
Я хочу решить две задачи оптимизации с помощью Pyomo. Когда я запускаю этот код для параллельного запуска двух моделей оптимизации, я получаю сообщение об ошибке TypeError: Невозможно сериализовать объект _io.BufferedWriter. Как мне решить эту ошибку? Есть ли альтернативный способ сделать это?