使用 CVXPY 时,我经常收到“SolverError”。他们的文档只是说这是由数字问题引起的,但没有提供有关如何避免它们的进一步信息。
以下代码片段是一个示例,问题很简单,但“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')