我试图在filowing方式中使用scipy.optimize.minimize:

fi =最小化(fun = quadratic_function,x0 = fi,args =(alfa,Ks,Kf),method ='Nelder-Mead') . x

其中fi是要优化的参数 . 并且quadratic_function具有这样的性质,即在每次调用时,都应该构造一个scipy.sparse.csr_matrix . 所以,除了其他错误,我得到这个(抱歉混合西班牙语和英语名称):

文件“/ Users / angel / Dropbox / Intercambio CIMAT / Solver / V2 / sistemas / explicito.py”,第56行,在solver_explicito中Matriz_Biot_strain = esfuerzos_biot(malla,factor,P,Q,R,N)文件“/ Users / angel / Dropbox / Intercambio CIMAT / Solver / V2 / sistemas / sigma_biot.py“,第172行,在esfuerzos_biot sistema = csr_matrix((vals,(rows,cols)),shape =(4 * Nodes,4 * Nodes),dtype = np.float64)文件“/Users/angel/anaconda/lib/python2.7/site-packages/scipy/sparse/compressed.py”,第48行,在init other = self.class(coo_matrix(arg1,shape =)形状))文件“/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行,在asformat中返回getattr(自我,'到'格式)()文件”/ Users / angel / anaconda / lib / python2.7 / site-packages / scipy / sparse / coo.py“,第362行,在tocsr数据中)TypeError:无法根据规则将数组数据从dtype('O')转换为dtype('bool') '安全'

我试着做

fi = np.asarray(fi,dtype = np.float64)

但没有成功 .

附: In可以评估quadratic_function(fi,alfa,Ks,Kf),这是一个标量值

编辑:

对于将来的引用,我能够通过在每次调用quadratic_function时将变量转换为float来解决问题,即通过执行以下操作:

fi = float(fi)

另一方面,为了问题的完整性:@hpaulj在这个特殊的问题中,节点= 151452,但它可以增长,因为我正在解决FEM问题 . 而且因为它是一个FEM问题,所以矩阵要稀疏 . 最后,我无法找到任何关于最小化的消息,然后调用scypy稀疏的文档 .