我正在尝试将GLPK求解器与Pyomo一起使用。我有一个已经过测试的工作模型,但是一直有错误说GLPK无法找到。
警告:找不到解决方法'glpk'所需的'glpsol'可执行文件
我成功安装了glpk。我还将目录添加到我的路径变量中,以便可以全局调用执行的目录。我用命令行中的glpsol --help测试了这个,并看到打印的帮助信息。
下面的帖子说它应该工作,但唉,事实并非如此。
How do you install glpk-solver along with pyomo in Winpython
有任何想法吗?
这个答案很晚,但我想分享对我有用的解决方案。
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
您可以使用此命令安装glpk solver -
brew install glpk
对于任何有相同问题的人,我找到了一种解决方法(不是解决方案!)。我将所有glpk文件复制到我的C:/ Python27目录中,然后(惊喜!)Python现在可以找到它们。
在接受这个之前我会坚持一个真正的解决方案。
所以看起来你的Python安装不会处理set path变量。
为单独的“PYTHONPATH”环境变量设置普通的Python安装,以查找其他模块。还可以选择在Windows注册表中创建一个条目,或者(就像您已经提到的那样)将文件移动到Python主目录,如果未设置“PYTHONHOME”,则可以相对于安装目录识别该目录。
3.3.3中的Python纪录片中的更多信息。 https://docs.python.org/2/using/windows.html#finding-modules
我遇到了同样的问题。我不知道这是不是solution
,但它肯定让解算器工作。
下载Windows安装后。我复制了w64
文件夹中的所有文件,并将它们直接粘贴到我的Python工作目录中。
之后我的python代码可以找到解算器。
注意:这是为Python 3.4.3.4, Windows 8.1 64 bit
安装glpk包对我有用。当我使用Anaconda时:
conda install -c conda-forge glpk
这是在我的PATH变量中已经包含'glpsol'exectuable的文件夹路径之后。
阅读源代码here建议您尝试:
from pyutilib.services import register_executable, registered_executable
register_executable(name='glpsol')
也许它会给出一个线索
感谢Stonebig的建议:mays建议您尝试:
from pyutilib.services import register_executable, registered_executable
register_executable( name='glpsol')
也许它会给出一个线索
我在Linux下有一种情况,在启动Python之前我无法添加到PATH环境值,所以我不得不用我的求解器('glpsol')的路径来扩充os.environ['PATH']
。这本身就不够了,但是通过在修改PATH之后进行Stonebig建议的调用,它起作用了。 Pyomo确实找到了解算器,并且能够解决我的模型。