我正在使用CVXPY(版本1.0)解决一个二次规划(QP),但通常会出现以下异常:
虽然我可以通过尝试更多次并降低停止标准来避免SolverError,但我真的想了解异常背后的具体原因。这个错误并不是很信息化,我不知道该如何提高问题解决的稳健性。它的原因是否特定于求解器?是否为一组明确定义的情况抛出此异常?或者这只是一种说“由于未知原因出现问题”的方式?那些原因可能是什么?
这使得我的程序非常脆弱。我已经尝试了不同的求解器,包括CVXOPT、OSQP、ECOS、ECOS_BB、SCS等。它们都或多或少存在相同的问题。我发现,当我使求解器的停止标准更严格(例如,降低绝对误差容限)时,我更频繁地遇到SolverError: 求解器“xxx”失败。请尝试另一个求解器。
SolverError
,而当我使其更宽松时,SolverError
问题就会减弱甚至消失。我还发现,CVXPY抛出SolverError
的方式是随机的:如果我多次运行相同的程序,有些运行会出现SolverError
,而其他则得到最优结果。虽然我可以通过尝试更多次并降低停止标准来避免SolverError,但我真的想了解异常背后的具体原因。这个错误并不是很信息化,我不知道该如何提高问题解决的稳健性。它的原因是否特定于求解器?是否为一组明确定义的情况抛出此异常?或者这只是一种说“由于未知原因出现问题”的方式?那些原因可能是什么?
SolverError
非常通用且不太有用。你是否尝试为solve
方法设置verbose=True
(文档在此)?也许查看求解器输出会给你一些更好的提示。 - rkersh