如何解决转换为 Sparse_Matrix
我想使用 Solver ecos 解决 QP 问题 问题是这个求解器不能不承认我的矩阵是稀疏矩阵,我想知道我应该如何解决它。
这里是矩阵设置的代码
import numpy as np
matrixSize = 10
Qa= np.random.rand(matrixSize,matrixSize)
Q_1 = np.dot(Qa,Qa.transpose())
print(Q_1)
np.linalg.cholesky(Q_1)
p_1= np.random.uniform(0,9,size=10)
G_1 = np.diag(-1*np.random.uniform(0,size=10))
h_1 = np.random.uniform(-9,size=10)
np.savez_compressed(r'C:\Users\skqkr\Desktop\Semesterarbeit/Chiwan_Q1',Q=Q_1,p=p_1,G=G_1,h=h_1)
现在是ecos Solver的代码
import ecos
import time
import numpy as np
from scipy import sparse
Matrix10 = np.load(r'C:\Users\skqkr\Desktop\Semesterarbeit/Chiwan_Q1.npz')
start = time.time()
P = 2*(Matrix10['Q']) # quick way to build a symmetric matrix
q =Matrix10['p']
G_1= Matrix10['G'] ## sparsematrix??
G= sparse.bsr_matrix(G_1)
h = Matrix10['h']
solution = ecos.solve(P,q,G,h)
print("QP solution: x = {}".format(x))
print("time :",time.time() - start)
TypeError: G is required to be a sparse matrix
我在变量 G 上使用了他们的稀疏矩阵,但它不被认为是稀疏矩阵我该如何解决这个问题?
解决方法
根据 ecos
文档,调用签名是
solution = ecos.solve(c,G,h,dims,A,b,**kwargs)
其中 G
和 A
是稀疏的。
但是你使用
solution = ecos.solve(P,q,h)
您的 q
位于 G's
槽中。难怪它在抱怨。
阅读并重读文档。那应该是第一步,而不是这样。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。