微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

pyomo 找不到“gurobi”可执行文件

如何解决pyomo 找不到“gurobi”可执行文件

我在让 pyomo 和 gurobi 在 python 中交互时遇到问题。我正在运行一个优化问题,我使用 pyomo 来构建优化问题本身,然后使用 gurobi 来解决它。我一直在深入研究这些问题,但不幸的是我没有成功找到解决方案。我遇到了一些令我困惑的观察结果。它们是:

  • 我能够解决 gurobi 从其网站提供的简单优化问题之一。有了这个,我相信 gurobi 已安装。
  • 我可以将 gurobi 导入 python,但无法从 bash 进入 gurobi shell (gurobi.sh)。我得到一个(找不到命令 - 错误)。另一方面,我能够使用 grbgetkey 命令添加许可证。这表明 gurobi 未安装或路径设置不正确,但我可以将其导入 python。

我正在运行 python2.7、pyomo6.5 和 gurobi9.1

此外,以下是我的 bashrc 文件的外观。这有点复杂,但我强烈假设路径设置正确。

# User specific aliases and functions
export PATH=/usr/local/anaconda27/bin:$PATH
export LD_LIBRARY_PATH=/etc/glad-smail-liberr:$LD_LIBRARY_PATH

#export GUROBI_HOME="/opt/gurobi650/linux64"
export GUROBI_HOME="/usr/local/anaconda27"
export PATH="${PATH}:${GUROBI_HOME}/bin"
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${GUROBI_HOME}/lib"
export GRB_LICENSE_FILE="${GUROBI_HOME}/lib/gurobi.lic"

下面,我插入了错误消息:

WARNING:pyomo.solvers:Could not locate the 'gurobi' executable,which is required for solver gurobi
Failed
Traceback (most recent call last):
File "scripts/solve_network.py",line 179,in <module>
    solve_model(network)
  File "scripts/solve_network.py",line 106,in solve_model
    network.lopf(network.snapshots,solver_name=solver_name,solver_io=solver_io,solver_options=solver_options,extra_functionality=extra_functionality,keep_files=network.opf_keep_files,formulation=options['formulation'])
  File "/usr/local/anaconda27/lib/python2.7/site-packages/pypsa-0.15.0-py2.7.egg/pypsa/opf.py",line 1673,in network_lopf
    extra_postprocessing=extra_postprocessing)
  File "/usr/local/anaconda27/lib/python2.7/site-packages/pypsa-0.15.0-py2.7.egg/pypsa/opf.py",line 1580,in network_lopf_solve
    network.results = network.opt.solve(*args,suffixes=["dual"],keepfiles=keep_files,logfile=solver_logfile,options=solver_options)
  File "/usr/local/anaconda27/lib/python2.7/site-packages/Pyomo-5.6-py2.7-linux-x86_64.egg/pyomo/opt/base/solvers.py",line 512,in solve
    self.available(exception_flag=True)
  File "/usr/local/anaconda27/lib/python2.7/site-packages/Pyomo-5.6-py2.7-linux-x86_64.egg/pyomo/solvers/plugins/solvers/GUROBI.py",line 155,in available
    val = ILMLicensedSystemCallSolver.available(self,exception_flag)
  File "/usr/local/anaconda27/lib/python2.7/site-packages/Pyomo-5.6-py2.7-linux-x86_64.egg/pyomo/opt/solver/ilmcmd.py",line 36,in available
    if not pyomo.opt.solver.shellcmd.SystemCallSolver.available(self,exception_flag):
  File "/usr/local/anaconda27/lib/python2.7/site-packages/Pyomo-5.6-py2.7-linux-x86_64.egg/pyomo/opt/solver/shellcmd.py",line 126,in available
    raise ApplicationError(msg % self.name)
pyutilib.common._exceptions.ApplicationError: No executable found for solver 'gurobi'

错误消息明确指出 pyomo 无法定位 gurobi 安装。但是,我可以在不使用 pyomo 的其他优化问题中使用 gurobi。

我真的希望有人能让我继续前进。

解决方法

您的 GUROBI_HOME 环境变量不正确。正确的路径在上面的行中注释掉了:

export GUROBI_HOME="/opt/gurobi650/linux64"

您还应该更新到 Python 3 - 版本 2 已弃用且不再受支持。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。