我在尝试开始更大的问题之前尝试执行以下简单的示例优化问题。代码:
from pulp import *
x = LpVariable("x", 0, 3)
y = LpVariable("y", 0, 1)
prob = LpProblem("myProblem", LpMinimize)
prob += x + y <= 2
#objective function
prob += -4*x + y
status = prob.solve(GLPK(msg = 0))
#results
value(x)
我收到以下错误:
Traceback (most recent call last):
File "C:\Users\mahabubalam\Desktop\Works\GUI\whiskas.py", line 85, in <module>
status = prob.solve(GLPK(msg = 0))
File "C:\Python34\lib\site-packages\pulp-1.5.6-py3.4.egg\pulp\pulp.py", line 1619, in solve
status = solver.actualSolve(self, **kwargs)
File "C:\Python34\lib\site-packages\pulp-1.5.6-py3.4.egg\pulp\solvers.py", line 335, in actualSolve
raise PulpSolverError("PuLP: cannot execute "+self.path)
pulp.solvers.PulpSolverError: PuLP: cannot execute glpsol.exe
任何人都可以帮我理解为什么会这样吗?
答案 0 :(得分:4)
执行以下两个步骤后,我已成功运行您的代码:
从
下载GLPKhttp://sourceforge.net/projects/winglpk/files/latest/download(如oyvind所述)
C:\glpk_is_here\
在运行python之前,将GLPK二进制文件添加到系统路径中
C:\>set PATH=%PATH%;C:\glpk_is_here\glpk-4.55\w64
使用(3)中相同的cmd窗口,使用python / ipython运行代码:
C:\>ipython your_code.py
查看结果
Out[4]: 2.0
答案 1 :(得分:2)
当我在变量名称中使用非法字符时出现此错误。从我在纸浆代码中收集的内容(确切地说是LpElement),不允许使用字符-+[] ->/
,并且全部替换为下划线。
自从发现错误后,我使用以下函数预处理我的变量名称,修复了问题:
def variableName(s):
# illegalChars = "-+[] ->/"
s = s.replace("-","(hyphen)")
s = s.replace("+","(plus)")
s = s.replace("[","(leftBracket)")
s = s.replace("]","(rightBracket)")
s = s.replace(" ","(space)")
s = s.replace(">","(greaterThan)")
s = s.replace("/","(slash)")
return s
答案 2 :(得分:2)
这适用于unbuntu:
sudo apt-get install python-glpk
sudo apt-get install glpk-utils
我认为在Windows中有类似的解决方案
答案 3 :(得分:1)
安装GLPK,例如来自sourceforge.net/projects/winglpk
答案 4 :(得分:1)
对于Mac - 终端上的brew install glpk
。
Homebrew是最好的。