简体   繁体   English

Python中插值函数的优化

[英]optimization of interpolation functions in Python

I have a some model dimensions data (SangleRatio, RangleRatio, RudAngleRatio, RadRatio, SratioPole, RratioPole, Lwire, Nwire) and result from these data (nn) , and want to find the "optimal" model dimensions values (minimize "intnn" fcn): 我有一些模型尺寸数据(SangleRatio,RangleRatio,RudAngleRatio,RadRatio,SratioPole,RratioPole,Lwire,Nwire),并从这些数据(nn)中得出结果,并希望找到“最佳”模型尺寸值(最小化“ intnn” fcn ):

import numpy as np
import scipy as sc
import scipy.interpolate as interpolate
import scipy.optimize    as optimize

exp= np.genfromtxt(ConsFile, delimiter="_")
SangleRatio, RangleRatio, RudAngleRatio, RadRatio, SratioPole, RratioPole, Lwire, Nwire = exp[:,0], exp[:,1], exp[:,2], exp[:,3], exp[:,4], exp[:,5], exp[:,6], exp[:,7]
nn = exp[:,8]

intnn = interpolate.Rbf(SangleRatio, RangleRatio, RudAngleRatio, RadRatio, SratioPole, RratioPole, Lwire, Nwire, nn,function='cubic')

initial_values = np.array([1.975, 1.525, 2.9, 3.6, 2.5, 5.335, 0.07, 22.25])
res=optimize.fmin_l_bfgs_b(intnn, x0=initial_values)

error messages: 错误讯息:

Traceback (most recent call last):
  File "/home/peniak/pyth/optNew/interpolate10d_3.py", line 67, in <module>
    res=optimize.fmin_l_bfgs_b(intnn, x0=initial_values)
  File "/usr/local/lib/python2.7/dist-packages/scipy/optimize/lbfgsb.py", line 186, in fmin_l_bfgs_b
    **opts)
  File "/usr/local/lib/python2.7/dist-packages/scipy/optimize/lbfgsb.py", line 305, in _minimize_lbfgsb
    isave, dsave)
TypeError: failed to initialize intent(inout|inplace|cache) array -- input must be array but got <type 'numpy.float64'>

Problem solved... 问题解决了...

def intNN(x): 定义intNN(x):
p1, p2, p3, p4, p5, p6, p7, p8 = x p1,p2,p3,p4,p5,p6,p7,p8 = x
res=(-1)*intnn(p1, p2, p3, p4, p5, p6, p7, p8) res =(-1)* intnn(p1,p2,p3,p4,p5,p6,p7,p8)
return float(res) 返回float(res)

and then this function to optimize... 然后使用此功能进行优化...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM