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')
prob.solve(solver='CVXOPT', kktsolver=cv.ROBUST_KKTSOLVER)
最適化プロセスをより堅牢にするために使用します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加