通过Google Colab Notebook上的PuLP访问GLPK选项

问题描述

我正在尝试在Google Colab Notebook上使用PuLP解决LP问题。要生成敏感性报告,我想使用GLPK求解器的'--ranges filename.txt'选项。我已经如下安装了PuLP和GLPK:

!pip install pulp
!apt-get install -y -qq glpk-utils

这是我要解决一个小例子:

from pulp import *

prob = LpProblem('Test_Problem',LpMaximize) # Model

x1=LpVariable("x1",100) #Variables
x2=LpVariable("x2",100)

prob += 5*x1 + 10*x2 # Objective

prob += x1 + 5*x2 <= 500 #Constraints
prob += 2*x1 + 3*x2 <= 200

prob.solve(GLPK(options=[])) # Solve Without '--ranges sensitivity.txt'

print("Status : ",LpStatus[prob.status]) # Output
print("Objective : ",value(prob.objective))
for v in prob.variables():
    print(v.name," : ",v.varValue)

运行良好,并提供了所需的输出。但是,如果我使用“选项”并更改以下行

prob.solve(GLPK(options=['--ranges sensitivity.txt']))

我收到此错误

/usr/local/lib/python3.6/dist-packages/pulp/apis/glpk_api.py in actualSolve(self,lp)
     91 
     92         if not os.path.exists(tmpSol):
---> 93             raise PulpSolverError("PuLP: Error while executing "+self.path)
     94         status,values = self.readsol(tmpSol)
     95         lp.assignVarsVals(values)

PulpSolverError: PuLP: Error while executing glpsol

我检查了带有'options'的相同代码在我的计算机上是否可以正常工作,并生成了正确的sensitivity.txt文件。但是由于某种原因,它无法在Colab上运行。 (我已经在笔记本电脑中使用conda-forge安装了GLPK。)

我该怎么办?

谢谢!

解决方法

要传递给GLPK_CMD的ELASTICSEARCH_HOSTS参数必须没有空格,因此:

options

然后它起作用。对于您的案件,GLPK给出了一个错误,但没有解决问题,提示:

prob.solve(GLPK(msg=True,options=['--ranges','sensitivity.txt']))