微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

转换为 Sparse_Matrix

如何解决转换为 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)

其中 GA 是稀疏的。

但是你使用

solution = ecos.solve(P,q,h) 

您的 q 位于 G's 槽中。难怪它在抱怨。

阅读并重读文档。那应该是第一步,而不是这样。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。