scipy.optimize.minimize调用scipy.sparse.csr_matrix

时间:2016-04-08 19:40:20

标签: python optimization scipy sparse-matrix minimize

我试图以愚蠢的方式使用scipy.optimize.minimize:

  

fi = minim(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)

     

File" /Users/angel/anaconda/lib/python2.7/site-packages/scipy/sparse/compressed.py" ;,第48行, init       other = self。 class (coo_matrix(arg1,shape = shape))

     

File" /Users/angel/anaconda/lib/python2.7/site-packages/scipy/sparse/compressed.py" ;,第31行,在 init 中       arg1 = arg1.asformat(self.format)

     

File" /Users/angel/anaconda/lib/python2.7/site-packages/scipy/sparse/base.py" ;,第213行,在asformat中       return getattr(self,' to' + format)()

     

File" /Users/angel/anaconda/lib/python2.7/site-packages/scipy/sparse/coo.py" ;, line 362,in tocsr       数据)

     

TypeError:根据规则' safe'

,无法将数组数据从dtype(' O')转换为dtype(' bool')

我试图制作

  

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

但没有成功。

P.S。在可以评估quadratic_function(fi,alfa,Ks,Kf),这是一个标量值

编辑:

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

  

fi = float(fi)

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

0 个答案:

没有答案