将 PuLP 中的线性优化结果导出到 Excel

问题描述 投票:0回答:1

我对 Python 和 PuLP 包总体来说是新手,并且在我的 Jupyter Notebook 的终端中有一些结果,如果可能的话,我想导出到 Excel。我最初没有创建数据框,但想知道是否可以在打印结果后为结果创建数据框。我的输出如下:

Service_('CZe_0004',_'DC_CA_FRESNO') = 0.0
Service_('CZe_0004',_'DC_IN_GREENWOOD') = 0.0
Service_('CZe_0004',_'DC_PA_CHAMBERSBURG') = 0.0
Service_('CZe_0004',_'DC_TX_DALLAS') = 0.0
Service_('CZe_0004',_'MFC_FL_JACKSONVILLE') = 0.0
Service_('CZe_0004',_'MFC_IL_ROMEOVILLE') = 0.0
Service_('CZe_0004',_'MFC_SC_GREER') = 0.0
Service_('CZe_0005',_'DC_CA_FRESNO') = 0.0
Service_('CZe_0005',_'DC_IN_GREENWOOD') = 0.0
Service_('CZe_0005',_'DC_PA_CHAMBERSBURG') = 0.0
Service_('CZe_0005',_'DC_TX_DALLAS') = 0.0
Service_('CZe_0005',_'MFC_FL_JACKSONVILLE') = 0.0
Service_('CZe_0005',_'MFC_IL_ROMEOVILLE') = 0.0
Service_('CZe_0005',_'MFC_SC_GREER') = 0.0
Service_('CZe_0006',_'DC_CA_FRESNO') = 0.0
Service_('CZe_0006',_'DC_IN_GREENWOOD') = 0.0
Service_('CZe_0006',_'DC_PA_CHAMBERSBURG') = 0.0
Service_('CZe_0006',_'DC_TX_DALLAS') = 0.0
Service_('CZe_0006',_'MFC_FL_JACKSONVILLE') = 0.0
Service_('CZe_0006',_'MFC_IL_ROMEOVILLE') = 0.0
Service_('CZe_0006',_'MFC_SC_GREER') = 0.0
Service_('CZe_0007',_'DC_CA_FRESNO') = 0.0
Service_('CZe_0007',_'DC_IN_GREENWOOD') = 0.0
Service_('CZe_0007',_'DC_PA_CHAMBERSBURG') = 0.0
Service_('CZe_0007',_'DC_TX_DALLAS') = 0.0
Service_('CZe_0007',_'MFC_FL_JACKSONVILLE') = 0.0
Service_('CZe_0007',_'MFC_IL_ROMEOVILLE') = 0.0
Service_('CZe_0007',_'MFC_SC_GREER') = 0.0
Service_('CZe_0008',_'DC_CA_FRESNO') = 0.0
Service_('CZe_0008',_'DC_IN_GREENWOOD') = 0.0
Service_('CZe_0008',_'DC_PA_CHAMBERSBURG') = 0.0
Service_('CZe_0008',_'DC_TX_DALLAS') = 0.0
Service_('CZe_0008',_'MFC_FL_JACKSONVILLE') = 0.0
Service_('CZe_0008',_'MFC_IL_ROMEOVILLE') = 0.0
Service_('CZe_0008',_'MFC_SC_GREER') = 0.0
Service_('CZe_0009',_'DC_CA_FRESNO') = 0.0
Service_('CZe_0009',_'DC_IN_GREENWOOD') = 0.0
Service_('CZe_0009',_'DC_PA_CHAMBERSBURG') = 0.0
Service_('CZe_0009',_'DC_TX_DALLAS') = 0.0
Service_('CZe_0009',_'MFC_FL_JACKSONVILLE') = 0.0
Service_('CZe_0009',_'MFC_IL_ROMEOVILLE') = 0.0
Service_('CZe_0009',_'MFC_SC_GREER') = 0.0
Service_('CZe_0010',_'DC_CA_FRESNO') = 0.0
Service_('CZe_0010',_'DC_IN_GREENWOOD') = 0.0
Service_('CZe_0010',_'DC_PA_CHAMBERSBURG') = 87.14
Service_('CZe_0010',_'DC_TX_DALLAS') = 0.0
Service_('CZe_0010',_'MFC_FL_JACKSONVILLE') = 0.0
Service_('CZe_0010',_'MFC_IL_ROMEOVILLE') = 0.0
Service_('CZe_0010',_'MFC_SC_GREER') = 0.0
Service_('CZe_0011',_'DC_CA_FRESNO') = 0.0
Service_('CZe_0011',_'DC_IN_GREENWOOD') = 0.0
Service_('CZe_0011',_'DC_PA_CHAMBERSBURG') = 0.0
Service_('CZe_0011',_'DC_TX_DALLAS') = 0.0
Service_('CZe_0011',_'MFC_FL_JACKSONVILLE') = 0.0
Service_('CZe_0011',_'MFC_IL_ROMEOVILLE') = 0.0
Service_('CZe_0011',_'MFC_SC_GREER') = 0.0
Service_('CZe_0012',_'DC_CA_FRESNO') = 0.0
Service_('CZe_0012',_'DC_IN_GREENWOOD') = 0.0
Service_('CZe_0012',_'DC_PA_CHAMBERSBURG') = 0.0
Service_('CZe_0012',_'DC_TX_DALLAS') = 0.0
Service_('CZe_0012',_'MFC_FL_JACKSONVILLE') = 0.0
Service_('CZe_0012',_'MFC_IL_ROMEOVILLE') = 0.0
Service_('CZe_0012',_'MFC_SC_GREER') = 0.0
Service_('CZe_0013',_'DC_CA_FRESNO') = 0.0
Service_('CZe_0013',_'DC_IN_GREENWOOD') = 0.0
Service_('CZe_0013',_'DC_PA_CHAMBERSBURG') = 0.0
Service_('CZe_0013',_'DC_TX_DALLAS') = 0.0
Service_('CZe_0013',_'MFC_FL_JACKSONVILLE') = 0.0
Service_('CZe_0013',_'MFC_IL_ROMEOVILLE') = 0.0
Service_('CZe_0013',_'MFC_SC_GREER') = 0.0
Service_('CZe_0014',_'DC_CA_FRESNO') = 0.0
Service_('CZe_0014',_'DC_IN_GREENWOOD') = 0.0
Service_('CZe_0014',_'DC_PA_CHAMBERSBURG') = 0.0
Service_('CZe_0014',_'DC_TX_DALLAS') = 0.0
Service_('CZe_0014',_'MFC_FL_JACKSONVILLE') = 0.0
Service_('CZe_0014',_'MFC_IL_ROMEOVILLE') = 0.0
Service_('CZe_0014',_'MFC_SC_GREER') = 0.0
Service_('CZe_0015',_'DC_CA_FRESNO') = 0.0
Service_('CZe_0015',_'DC_IN_GREENWOOD') = 0.0
Service_('CZe_0015',_'DC_PA_CHAMBERSBURG') = 94.76
Service_('CZe_0015',_'DC_TX_DALLAS') = 0.0
Service_('CZe_0015',_'MFC_FL_JACKSONVILLE') = 0.0
Service_('CZe_0015',_'MFC_IL_ROMEOVILLE') = 0.0
Service_('CZe_0015',_'MFC_SC_GREER') = 0.0
Service_('CZe_0016',_'DC_CA_FRESNO') = 0.0
Service_('CZe_0016',_'DC_IN_GREENWOOD') = 0.0
Service_('CZe_0016',_'DC_PA_CHAMBERSBURG') = 0.0
Service_('CZe_0016',_'DC_TX_DALLAS') = 0.0
Service_('CZe_0016',_'MFC_FL_JACKSONVILLE') = 0.0
Service_('CZe_0016',_'MFC_IL_ROMEOVILLE') = 0.0
Service_('CZe_0016',_'MFC_SC_GREER') = 0.0
Service_('CZe_0017',_'DC_CA_FRESNO') = 0.0
Service_('CZe_0017',_'DC_IN_GREENWOOD') = 0.0
Service_('CZe_0017',_'DC_PA_CHAMBERSBURG') = 84.73
Service_('CZe_0017',_'DC_TX_DALLAS') = 0.0
Service_('CZe_0017',_'MFC_FL_JACKSONVILLE') = 0.0
Service_('CZe_0017',_'MFC_IL_ROMEOVILLE') = 0.0
Service_('CZe_0017',_'MFC_SC_GREER') = 0.0
Service_('CZe_0018',_'DC_CA_FRESNO') = 0.0
Service_('CZe_0018',_'DC_IN_GREENWOOD') = 0.0
Service_('CZe_0018',_'DC_PA_CHAMBERSBURG') = 142.46
Service_('CZe_0018',_'DC_TX_DALLAS') = 0.0
Service_('CZe_0018',_'MFC_FL_JACKSONVILLE') = 0.0

我相信我已经饱和了我的搜索尝试,只是不知道该尝试什么。

python linear-programming pulp
1个回答
0
投票

您不需要使用数据框来执行此操作,除非您对数据框有其他用途。我认为将结果写入数据文件并使用它同样容易。

我建议只编写您自己的“CSV”文件(逗号分隔值)。它是一种标准格式并且相当通用。 Excel 可以很好地读取它们,并且更容易将它们读回到 python 中。

这是一个小脚本,它会产生一个假的

pulp
问题并将值写入 .csv。

如果您之前没有在 Excel 中这样做过,它会很好地打开 .csv,但是当您保存时,它会给您一些选项,可以将其重新保存为 .csv,并带有一些关于格式的可怕警告,或者只是将其另存为新的 .xlsx 文件。你的选择。

import pulp

sources = ['cze1', 'cze2', 'cze3']
destinations = ['Jax', 'Fresno', 'Dallas']

prob = pulp.LpProblem('example')
service = pulp.LpVariable.dicts('service', [(s, d) for s in sources for d in destinations])

# assign some bogus values (simulate solving...)
for (s, d) in service.keys():
    service[s,d].setInitialValue(1.5)

# write to a csv file
output_filename = 'output.csv'

# use a context manager to open/close the file...
with open(output_filename, 'w') as fout:
    for (s, d) in service.keys():
        line = ','.join([s, d, str(service[s,d].value())])   # make a string out of the elements, separated by commas
        fout.write(line)    # write the line to the file
        fout.write('\n')    # add a newline character
© www.soinside.com 2019 - 2024. All rights reserved.