Pyomo无法找到GLPK求解器

时间:2015-08-31 16:46:30

标签: python-2.7 linear-programming glpk

我试图将PyPK求解器与Pyomo一起使用。我有一个已经过测试的工作模型,但一直有错误说GLPK无法找到。

  

警告:无法找到' glpsol'可执行文件,这是解算器' glpk'

所必需的

我已经成功安装了glpk。我还将目录添加到我的路径变量中,以便可以全局调用执行的目录。我用命令行中的glpsol --help测试了这个,并看到打印的帮助信息。

下面的帖子说它应该正常工作,但唉,事实并非如此。

How do you install glpk-solver along with pyomo in Winpython

有什么想法吗?

9 个答案:

答案 0 :(得分:1)

这个答案很晚,但是我想分享对我有用的解决方案。

solvername='glpk'

solverpath_folder='C:\\glpk\\w64' #does not need to be directly on c drive

solverpath_exe='C:\\glpk\\w64\\glpsol' #does not need to be directly on c drive

我曾经这样做:

sys.path.append(solverpath_folder)

solver=SolverFactory(solvername)

这对于硬币或其他货币的cbc求解器有效,但不适用于glpk。然后我尝试了一些不同的方法:

solver=SolverFactory(solvername,executable=solverpath_exe)

这对cbc和glpk均有效。不知道为什么这样做(我真的什么也没做)。

版本:Python 2.7或Python 3.7(均已测试),glpk 4.65

答案 1 :(得分:0)

在这里阅读源代码:

https://projects.coin-or.org/Coopr/browser/coopr.solvers/trunk/coopr/solvers/plugins/solvers/GLPK.py?rev=7923

mays建议你试试: from pyutilib.services import register_executable, registered_executable register_executable( name='glpsol') 也许会给出一个线索

答案 2 :(得分:0)

对于任何有相同问题的人,我找到了一种解决方法(不是解决方案!)。我将所有glpk文件复制到我的C:/ Python27目录中,然后(惊喜!)Python现在可以找到它们。

在接受这个问题之前,我会坚持一个真正的解决方案。

答案 3 :(得分:0)

因此看起来你的Python安装不会处理set path变量。

为分离的" PYTHONPATH"设置正常的Python安装。环境变量以查找其他模块。 还可以选择在Windows注册表中创建一个条目,或者(就像您已经提到的那样)将文件移动到Python主目录,如果" PYTHONHOME"可以相对于您的安装目录进行识别。没有设定。

3.3.3中的Python纪录片中的更多信息。 https://docs.python.org/2/using/windows.html#finding-modules

答案 4 :(得分:0)

我遇到了同样的问题。我不知道这是不是solution,但它确实让解算器正常工作。

下载Windows安装后。我复制了w64文件夹中的所有文件,并将它们直接粘贴到我的Python工作目录中。

之后我的python代码可以找到解算器。

注意:这是Python 3.4.3.4, Windows 8.1 64 bit

答案 5 :(得分:0)

您可以使用此命令安装glpk解算器 -

brew install glpk

答案 6 :(得分:0)

安装glpk软件包对我有用。当我使用Anaconda时:

conda install -c conda-forge glpk

这是在我的PATH变量中已经包含了'glpsol'可执行文件的文件夹路径之后。

答案 7 :(得分:0)

我在Windows 10上遇到了同样的问题,这取决于在不同的conda环境中安装了glpk。以下是安装pyomo和glpk的完整步骤。

通过运行https://pyomo.readthedocs.io/en/latest/working_models.html中的“重复解决”示例来测试安装

说明(在anaconda提示符下运行)

conda create --name myenv

conda激活myenv

conda install -c conda-forge pyomo

conda install -c conda-forge pyomo.extras

conda install -c conda-forge glpk

从myenv运行spyder,以便能够找到所有内容

spyder激活myenv

答案 8 :(得分:-1)

感谢Stonebig的建议:    妈妈建议你试试:

   from pyutilib.services import register_executable, registered_executable
   register_executable( name='glpsol')

也许它会给出一个线索

我在Linux下遇到过一种情况,在启动Python之前我无法添加到PATH环境值,所以我不得不用我的求解器的路径来增加os.environ['PATH'](' glpsol&#39 )。这本身就不够了,但是通过在修改PATH之后进行Stonebig建议的调用,它起作用了。 Pyomo确实找到了求解器,并且能够解决我的模型。