我正在使用 CVXPY(1.0 版)求解二次规划(QP),我经常遇到这个异常:
SolverError:求解器“xxx”失败。尝试另一个求解器。
这使我的程序非常脆弱。我尝试过不同的求解器,包括 CVXOPT、OSQP、ECOS、ECOS_BB、SCS。他们都有或多或少相同的问题。我注意到,当我使求解器的停止标准更严格(例如,降低绝对误差容限)时,我得到SolverError
的频率更高,而当我不那么严格时,SolverError
问题会减弱甚至消失。我还发现 CVXPY 抛出的方式SolverError
是随机的:如果我多次运行同一个程序,有些运行会得到最佳结果,SolverError
而另一些会得到最佳结果。
虽然我可以通过尝试更多次并降低停止标准来避免 SolverError,但我真的很想了解异常背后的真正具体原因
SolverError:求解器“xxx”失败。尝试另一个求解器。
这个错误并没有真正提供信息,我不知道如何提高解决问题的稳健性。其原因是否特定于求解器?是否会针对一组明确定义的情况引发此异常?或者它只是一种说“由于未知原因出现问题”的方式?这些可能是什么原因?