在 Google Colab Notebook 上通过 PuLP 访问 GLPK 选项
Accessing GLPK options through PuLP on Google Colab Notebook
我正在尝试在 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",0,100) #Variables
x2=LpVariable("x2",0,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)
这运行良好并且给了我想要的输出。但是,如果我使用 'options' 并更改以下行
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 的 options
参数不能有空格,因此:
prob.solve(GLPK(msg=True, options=['--ranges', 'sensitivity.txt']))
然后就可以了。对于您的案例,GLPK 在没有解决问题的情况下给出了一个错误:
Invalid option '--ranges sensitivity.txt'; try glpsol --help
我正在尝试在 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",0,100) #Variables
x2=LpVariable("x2",0,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)
这运行良好并且给了我想要的输出。但是,如果我使用 'options' 并更改以下行
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 的 options
参数不能有空格,因此:
prob.solve(GLPK(msg=True, options=['--ranges', 'sensitivity.txt']))
然后就可以了。对于您的案例,GLPK 在没有解决问题的情况下给出了一个错误:
Invalid option '--ranges sensitivity.txt'; try glpsol --help