pulp.solvers.PulpSolverError: PuLP: cannot execute cplex
pulp.solvers.PulpSolverError: PuLP: cannot execute cplex
我正在尝试在 Mac 上使用 PuLP 求解 MIP。我已经添加了目录
'/Applications/CPLEX_Studio1210/cplex/python/3.7/x86-64_osx',
到我的 PYTHONPATH
。但每当我尝试
prob.solve(CPLEX_CMD())
,
我收到以下错误消息:
File "/Users/xxxx/opt/anaconda3/envs/pulposm/lib/python3.7/site-packages/pulp/solvers.py", line 468, in actualSolve
raise PulpSolverError("PuLP: cannot execute "+self.path)
pulp.solvers.PulpSolverError: PuLP: cannot execute cplex.
你能试试吗
import pulp
import cplex
bus_problem = pulp.LpProblem("bus", pulp.LpMinimize)
nbBus40 = pulp.LpVariable('nbBus40', lowBound=0, cat='Integer')
nbBus30 = pulp.LpVariable('nbBus30', lowBound=0, cat='Integer')
# Objective function
bus_problem += 500 * nbBus40 + 400 * nbBus30, "cost"
# Constraints
bus_problem += 40 * nbBus40 + 30 * nbBus30 >= 300
bus_problem.solve(pulp.CPLEX())
print(pulp.LpStatus[bus_problem.status])
for variable in bus_problem.variables():
print ("{} = {}".format(variable.name, variable.varValue))
这与 this Whosebug 问题密切相关,但略有不同,因为您使用的是 Mac 而不是 Windows。不过,答案的要点是一样的。如评论中所述,您需要设置 PATH
环境变量(而不是 PYTHONPATH
),以便 PuLP 可以执行 cplex
二进制文件。
在你的情况下,这应该是这样的:
$ export PATH=$PATH:/Applications/CPLEX_Studio1210/cplex/bin/x86-64_osx
另请参阅,this 关于在 OS X 上设置环境变量并使它们持久存在的 Whosebug 问题。
或者,您可以将 path
参数设置为 CPLEX_CMD
构造函数中 cplex
可执行文件的位置(参见 source code)。
我正在尝试在 Mac 上使用 PuLP 求解 MIP。我已经添加了目录
'/Applications/CPLEX_Studio1210/cplex/python/3.7/x86-64_osx',
到我的 PYTHONPATH
。但每当我尝试
prob.solve(CPLEX_CMD())
,
我收到以下错误消息:
File "/Users/xxxx/opt/anaconda3/envs/pulposm/lib/python3.7/site-packages/pulp/solvers.py", line 468, in actualSolve
raise PulpSolverError("PuLP: cannot execute "+self.path)
pulp.solvers.PulpSolverError: PuLP: cannot execute cplex.
你能试试吗
import pulp
import cplex
bus_problem = pulp.LpProblem("bus", pulp.LpMinimize)
nbBus40 = pulp.LpVariable('nbBus40', lowBound=0, cat='Integer')
nbBus30 = pulp.LpVariable('nbBus30', lowBound=0, cat='Integer')
# Objective function
bus_problem += 500 * nbBus40 + 400 * nbBus30, "cost"
# Constraints
bus_problem += 40 * nbBus40 + 30 * nbBus30 >= 300
bus_problem.solve(pulp.CPLEX())
print(pulp.LpStatus[bus_problem.status])
for variable in bus_problem.variables():
print ("{} = {}".format(variable.name, variable.varValue))
这与 this Whosebug 问题密切相关,但略有不同,因为您使用的是 Mac 而不是 Windows。不过,答案的要点是一样的。如评论中所述,您需要设置 PATH
环境变量(而不是 PYTHONPATH
),以便 PuLP 可以执行 cplex
二进制文件。
在你的情况下,这应该是这样的:
$ export PATH=$PATH:/Applications/CPLEX_Studio1210/cplex/bin/x86-64_osx
另请参阅,this 关于在 OS X 上设置环境变量并使它们持久存在的 Whosebug 问题。
或者,您可以将 path
参数设置为 CPLEX_CMD
构造函数中 cplex
可执行文件的位置(参见 source code)。