Pyomo 找不到 GLPK 求解器
Pyomo can't locate GLPK solver
我正在尝试将 GLPK 求解器与 Pyomo 一起使用。我有一个经过测试的工作模型,但一直收到错误消息,提示找不到 GLPK。
WARNING: Could not locate the 'glpsol' executable, which is required for solver 'glpk'
我已经成功安装了glpk。我还将目录添加到我的路径变量中,以便可以全局调用执行的内容。我从我的命令行用 glpsol --help 测试了这个,并看到打印的帮助信息。
下面的帖子说它应该可以工作,但可惜的是,事实并非如此。
How do you install glpk-solver along with pyomo in Winpython
有什么想法吗?
阅读源代码here建议您尝试:
from pyutilib.services import register_executable, registered_executable
register_executable(name='glpsol')
也许会给出线索
对于遇到相同问题的任何人,我找到了解决方法(不是解决方案!)。我将所有 glpk 文件复制到我的 C:/Python27 目录中,并且(惊喜!)Python 现在可以找到它们。
在接受这个之前,我会等待一个真正的解决方案。
所以您的 Python 安装似乎没有处理设置的路径变量。
一个正常的Python安装是为一个单独的"PYTHONPATH"环境变量设置的,以查找其他模块。
还有一个选项可以在 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 解算器 -
brew install glpk
这个答案来晚了,但我想分享对我有用的解决方案。
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)
这适用于 coin-or 中的 cbc 求解器,但不适用于 glpk。然后我尝试了一些不同的东西:
solver=SolverFactory(solvername,executable=solverpath_exe)
这对 cbc 和 glpk 都有效。不知道为什么会这样(我真的什么也没做)。
版本:Python 2.7 或 Python 3.7(均已测试),glpk 4.65
安装 glpk 包对我有用。当我使用 Anaconda 时:
conda install -c conda-forge glpk
这是在我的 PATH 变量中包含 'glpsol' 可执行文件的文件夹路径之后。
我在 Windows 10 上遇到了同样的问题,这是因为 glpk 安装在不同的 conda 环境中。下面是安装 pyomo 和 glpk 的完整步骤。
通过来自 https://pyomo.readthedocs.io/en/latest/working_models.html
的 运行ning 'Repeated Solves' 示例测试安装
说明(运行 在 anaconda 提示符下)
conda create --name myenv
conda 激活 myenv
conda 安装-c conda-forge pyomo
conda 安装-c conda-forge pyomo.extras
conda 安装-c conda-forge glpk
运行 来自 myenv 的 spyder 以便 if 找到一切
spyder 激活 myenv
这是 pyomo
6.2 搜索 glpsol
可执行文件的相关部分
https://github.com/Pyomo/pyomo/blob/568c6595a56570c6ea69c3ae3198b73b9f473abd/pyomo/common/fileutils.py#L288
def _path():
return (os.environ.get('PATH','') or os.defpath).split(os.pathsep)
解决PATH
问题有两种选择:
将可执行文件放在 PATH 中的可用文件夹中(推荐做法)。 glpsol
可执行文件必须位于 PATH 系统环境变量中存在的文件夹之一中。在您的代码中使用 print(os.environ['PATH'])
查看可用的文件夹并将其放在那里。
在运行时将文件夹添加到 PATH。您可以将其静态添加到系统 PATH 或使用代码动态添加(仅当您的脚本为 运行 时):
GLPK_FOLDER_PATH = "path/to/glpk"
os.environ["PATH"] += os.pathsep + str(GLPK_FOLDER_PATH)
在我的例子中,我的 Python 项目有一个虚拟环境 .venv
,并且我有一个安装过程,在我安装项目时粘贴 glpsol
可执行文件所必需的文件在 .venv/Scripts
文件夹中。因为当从虚拟环境调用 Python 时,该文件夹会自动添加到系统 PATH
中,所以像 Pyomo
这样的库可以找到它。而且我不必记得在运行时将文件夹添加到 PATH 每当我想使用 Pyomo
.
我正在尝试将 GLPK 求解器与 Pyomo 一起使用。我有一个经过测试的工作模型,但一直收到错误消息,提示找不到 GLPK。
WARNING: Could not locate the 'glpsol' executable, which is required for solver 'glpk'
我已经成功安装了glpk。我还将目录添加到我的路径变量中,以便可以全局调用执行的内容。我从我的命令行用 glpsol --help 测试了这个,并看到打印的帮助信息。
下面的帖子说它应该可以工作,但可惜的是,事实并非如此。
How do you install glpk-solver along with pyomo in Winpython
有什么想法吗?
阅读源代码here建议您尝试:
from pyutilib.services import register_executable, registered_executable
register_executable(name='glpsol')
也许会给出线索
对于遇到相同问题的任何人,我找到了解决方法(不是解决方案!)。我将所有 glpk 文件复制到我的 C:/Python27 目录中,并且(惊喜!)Python 现在可以找到它们。
在接受这个之前,我会等待一个真正的解决方案。
所以您的 Python 安装似乎没有处理设置的路径变量。
一个正常的Python安装是为一个单独的"PYTHONPATH"环境变量设置的,以查找其他模块。 还有一个选项可以在 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 解算器 -
brew install glpk
这个答案来晚了,但我想分享对我有用的解决方案。
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)
这适用于 coin-or 中的 cbc 求解器,但不适用于 glpk。然后我尝试了一些不同的东西:
solver=SolverFactory(solvername,executable=solverpath_exe)
这对 cbc 和 glpk 都有效。不知道为什么会这样(我真的什么也没做)。
版本:Python 2.7 或 Python 3.7(均已测试),glpk 4.65
安装 glpk 包对我有用。当我使用 Anaconda 时:
conda install -c conda-forge glpk
这是在我的 PATH 变量中包含 'glpsol' 可执行文件的文件夹路径之后。
我在 Windows 10 上遇到了同样的问题,这是因为 glpk 安装在不同的 conda 环境中。下面是安装 pyomo 和 glpk 的完整步骤。
通过来自 https://pyomo.readthedocs.io/en/latest/working_models.html
的 运行ning 'Repeated Solves' 示例测试安装说明(运行 在 anaconda 提示符下)
conda create --name myenv
conda 激活 myenv
conda 安装-c conda-forge pyomo
conda 安装-c conda-forge pyomo.extras
conda 安装-c conda-forge glpk
运行 来自 myenv 的 spyder 以便 if 找到一切
spyder 激活 myenv
这是 pyomo
6.2 搜索 glpsol
可执行文件的相关部分
https://github.com/Pyomo/pyomo/blob/568c6595a56570c6ea69c3ae3198b73b9f473abd/pyomo/common/fileutils.py#L288
def _path():
return (os.environ.get('PATH','') or os.defpath).split(os.pathsep)
解决PATH
问题有两种选择:
将可执行文件放在 PATH 中的可用文件夹中(推荐做法)。
glpsol
可执行文件必须位于 PATH 系统环境变量中存在的文件夹之一中。在您的代码中使用print(os.environ['PATH'])
查看可用的文件夹并将其放在那里。在运行时将文件夹添加到 PATH。您可以将其静态添加到系统 PATH 或使用代码动态添加(仅当您的脚本为 运行 时):
GLPK_FOLDER_PATH = "path/to/glpk" os.environ["PATH"] += os.pathsep + str(GLPK_FOLDER_PATH)
在我的例子中,我的 Python 项目有一个虚拟环境 .venv
,并且我有一个安装过程,在我安装项目时粘贴 glpsol
可执行文件所必需的文件在 .venv/Scripts
文件夹中。因为当从虚拟环境调用 Python 时,该文件夹会自动添加到系统 PATH
中,所以像 Pyomo
这样的库可以找到它。而且我不必记得在运行时将文件夹添加到 PATH 每当我想使用 Pyomo
.