Python 调用scipy.sparse.csr_矩阵时,scipy.optimize.minimize错误最小化
我正在尝试以过滤方式使用scipy.optimize.minimize: fi=最小化(fun=二次函数,x0=fi,args=(alfa,Ks,Kf),方法='Nelder-Mead')。x 其中fi是要优化的参数。二次函数的性质是,在每次调用中,都应该构造一个scipy.sparse.csr_矩阵。因此,除其他错误外,我还发现了以下错误(很抱歉混合了西班牙语和英语名称): 文件“/Users/angle/Dropbox/Intercambio CIMAT/Solver/V2/sistemas/explicito.py”,第56行,在Solver\u explicito中 Matriz_Biot_菌株=esfuerzos_Biot(malla,因子,P,Q,R,N) 文件“/Users/angle/Dropbox/Intercambio CIMAT/Solver/V2/sistemas/sigma_biot.py”,第172行,在esfuerzos_biot中 sistema=csr_矩阵((VAL,(行,列)),shape=(4*节点,4*节点),dtype=np.64) 文件“/Users/angel/anaconda/lib/python2.7/site packages/scipy/sparse/compressed.py”,第48行,在init 其他=自身。类(coo_矩阵(arg1,形状=形状)) 文件“/Users/angel/anaconda/lib/python2.7/site packages/scipy/sparse/compressed.py”,第31行,在init arg1=arg1.asformat(self.format) 文件“/Users/angel/anaconda/lib/python2.7/site-packages/scipy/sparse/base.py”,第213行,格式为ASF 返回getattr(self,'to'+格式)() 文件“/Users/angel/anaconda/lib/python2.7/site packages/scipy/sparse/coo.py”,第362行,在tocsr中 (数据) TypeError:无法根据规则“safe”将数组数据从dtype('O')强制转换为dtype('bool') 我试着 fi=np.asarray(fi,dtype=np.float64) 但是没有成功 p.S.In可以计算二次函数(fi、alfa、Ks、Kf),这是一个标量值 编辑: 对于将来的引用,我可以通过在每次调用二次函数时将变量转换为浮点来解决问题,即通过执行以下操作: fi=浮动(fi) 另一方面,为了问题的完整性:Python 调用scipy.sparse.csr_矩阵时,scipy.optimize.minimize错误最小化,python,optimization,scipy,sparse-matrix,minimize,Python,Optimization,Scipy,Sparse Matrix,Minimize,我正在尝试以过滤方式使用scipy.optimize.minimize: fi=最小化(fun=二次函数,x0=fi,args=(alfa,Ks,Kf),方法='Nelder-Mead')。x 其中fi是要优化的参数。二次函数的性质是,在每次调用中,都应该构造一个scipy.sparse.csr_矩阵。因此,除其他错误外,我还发现了以下错误(很抱歉混合了西班牙语和英语名称): 文件“/Users/angle/Dropbox/Intercambio CIMAT/Solver/V2/sistemas
@hpaulj在这个特殊的问题中,节点=151452,但它可以增长,因为我正在解决一个有限元问题。因为这是一个有限元问题,矩阵非常稀疏。最后,我找不到任何与最小化USAGE相关的文档,然后调用scypy sparse。我怀疑
minimize
是否设计用于sparse
矩阵。你有没有看到任何支持这种使用的文档?最好返回密集的等价物(.toarray()
或.A
)。这些稀疏矩阵有多大?有多稀疏?错误消息似乎与optimize.minimize无关。相反,它看起来像是在二次函数中,您试图以某种错误的方式构造稀疏矩阵。由于您没有显示代码,因此无法确切说明具体内容。使用该选项可以找出问题所在。