我试图将PyPK求解器与Pyomo一起使用。我有一个已经过测试的工作模型,但一直有错误说GLPK无法找到。
警告:无法找到' glpsol'可执行文件,这是解算器' glpk'
所必需的
我已经成功安装了glpk。我还将目录添加到我的路径变量中,以便可以全局调用执行的目录。我用命令行中的glpsol --help测试了这个,并看到打印的帮助信息。
下面的帖子说它应该正常工作,但唉,事实并非如此。
How do you install glpk-solver along with pyomo in Winpython
有什么想法吗?
答案 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)
在这里阅读源代码:
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确实找到了求解器,并且能够解决我的模型。