使用CVXPY时,经常出现“ SolverError”。他们的doc只是说这是由数字问题引起的,但是没有给出有关如何避免它们的进一步信息。
以下代码段是一个示例,问题很简单,但是'CVXOPT'求解器仅抛出“ SolverError”。的确,如果我们将求解器更改为“ ECOS”之类的另一个求解器,则该问题将按预期解决。但是关键是,“ CVXOPT”原则上应该解决这个琐碎的问题,这确实让我感到困惑,为什么它不起作用。
import numpy as np
import cvxpy as cv
np.random.seed(0)
temp = np.random.rand(5)
T = 2
x = cv.Variable(T)
u = cv.Variable(2, T)
pbs = []
for t in range(T):
cost = cv.sum_squares(x[t]-temp[t])
constr = [x[t] == u[0,t]+u[1,t],]
pbs.append(cv.Problem(cv.Minimize(cost), constr))
prob = sum(pbs)
prob.solve(solver='CVXOPT')
最佳答案
使用prob.solve(solver='CVXOPT', kktsolver=cv.ROBUST_KKTSOLVER)
使优化过程更可靠。
关于python - CVXPY引发SolverError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49176880/