我正在尝试使用cvxpy。我已使用pip将1.1.0a1版安装到我的conda环境中,并克隆了the cvxpy github repository。尝试运行其SVM-example jupyter notebook时,prob.solve()
会引发以下错误消息:
SolverError:解算器“ OSQP”失败。尝试使用其他求解器,或使用verbose = True求解以获取更多信息。
设置verbose=True
并添加一些打印语句表明,求解器以
status: maximum iterations reached
number of iterations: 10000
run time: 1.07e+00s
optimal rho estimate: 2.03e-01
对于正则化参数Lambda = 0.010974987654930561
,而参数Lambda = 0.010476157527896646
给出结果
status: solved inaccurate
number of iterations: 10000
optimal objective: 0.8437
run time: 1.06e+00s
optimal rho estimate: 1.68e-01
由于这是“官方”示例代码,所以我猜我的问题是与其他软件包的某种形式的意外交互,但是甚至不知道从哪里开始。
答案 0 :(得分:1)
我在计算机上运行了SVM示例,并遇到了与您相同的错误。看来我们需要更新它。
您的安装没有问题。求解器(即解决由CVXPY构造的问题的数值算法)有时可能会失败,即使问题是与DCP兼容的。通常,当数值数据过大或过小时,求解器都会失败,这可能会导致状况不佳的问题数据。一些求解器比其他求解器更健壮。
在这种情况下,我可以使用ECOS解算器(prob.solve(solver=cp.ECOS
)(ECOS版本2.0.4,CVXPY 1.0.25)成功运行示例。
更一般而言,当求解器失败时,您可以尝试以下操作:
verbose=True
(prob.solve(verbose=True)
)调用solve方法。这应该打印出详细的错误消息,以帮助您确定求解器失败的原因。