gpt4 book ai didi

python - "Solver did not exit normally"- Jupyter/Python3/Ubuntu

转载 作者:行者123 更新时间:2023-12-04 18:50:36 24 4
gpt4 key购买 nike

我正在尝试让我的第一个 Pyomo 模型在我的 Ubuntu VM (Azure) 上运行。我在这台机器上安装了 Python3 和 COIN-OR 求解器。无论我尝试什么求解器,我都会得到相同的结果。

编辑:将求解器更改为 couenne(这是一个非线性问题)Jupyter 输出如下所示。当我打开 tmp 目录中的日志文件时,couenne.log 文件中没有任何内容,而 pyomo 文件是问题的表述。所以我认为 Pyomo 根本没有与 Couenne 求解器通信?

Solver log file: '/tmp/tmpezw0sov2_couenne.log'
Solver solution file: '/tmp/tmpq6afa7e8.pyomo.sol'
Solver problem files: ('/tmp/tmpq6afa7e8.pyomo.nl',)
ERROR: Solver (asl) returned non-zero return code (-1)
ERROR: See the solver log above for diagnostic information.
---------------------------------------------------------------------------
ApplicationError Traceback (most recent call last)
<ipython-input-6-486e3a9173f4> in <module>()
20 #instance = model.create_instance()
21 opt = SolverFactory('couenne', executable = solverpath_exe)
---> 22 opt.solve(model,tee=True,keepfiles=True)
23 #solver=SolverFactory(solvername,executable=solverpath_exe)

/home/ralphasher/.local/lib/python3.6/site-packages/pyomo/opt/base/solvers.py in solve(self, *args, **kwds)
598 logger.error("Solver log:\n" + str(_status.log))
599 raise pyutilib.common.ApplicationError(
--> 600 "Solver (%s) did not exit normally" % self.name)
601 solve_completion_time = time.time()
602 if self._report_timing:

ApplicationError: Solver (asl) did not exit normally

最佳答案

引发“catch-all”异常是因为求解器作为一个单独的非 Python 进程运行,因此 Python 真的无法判断它到底出了什么问题,它只是看到进程异常退出。

因此,求解器日志是要访问的东西,因为这是求解器本身写入其状态更新的地方,因此特定错误,无论是什么,都应该反射(reflect)在那里。

如果求解器日志为空,这很可能意味着求解器根本无法启动(如果求解器进程使用流重定向运行,则在求解器命令为 exec 之前打开日志文件——由此创建—— ,所以这是程序启动出现问题时的常见症状)。由于pyomo是启动求解器的东西,获取求解器启动时究竟发生了什么的细节就是答案所在。

根据 pyomo solve command — Pyomo 5.6.6 documentation , 你可以使用 --info--verbose增加 pyomo 详细程度的命令行选项日志。

如果这仍然没有产生任何启示,那么是时候拿出大炮了:

  • 运行 pyomopdb 下(pyomo 只是一个脚本,因此您可以将其传递给 python -m pdb,就像其他任何脚本一样;确保使用与脚本的 shebang 中相同的 python 可执行文件)并单步执行 pyomo 中的代码机器来查看它对求解器进程的确切作用(它传递了什么信息,它如何调用它)
  • 如果存在(例如,实际上没有传递任何信息),您将能够看到此过程中的缺陷,或者手动重复相同的操作以直接查看结果;和/或
  • 运行strace -f下的命令(同时监控求解器的子进程)并查看是否有任何明显的错误,如 exec 的错误。求解器命令或打开文件等的任何错误。
  • 关于python - "Solver did not exit normally"- Jupyter/Python3/Ubuntu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56618861/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com