Python中插值函数的优化

0 投票
1 回答
1157 浏览
提问于 2025-04-18 14:45

我有一些模型尺寸的数据,比如 SangleRatio、RangleRatio、RudAngleRatio、RadRatio、SratioPole、RratioPole、Lwire 和 Nwire,还有这些数据得出的结果 nn。我想找到“最佳”的模型尺寸值,也就是让“intnn”这个函数的值最小化。

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)

错误信息:

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'>

1 个回答

-1

问题解决了...

这是一个叫做intNN的函数:
它接收一个参数x,这个参数包含了8个值,分别叫做p1到p8。
然后,它会用这些值去做一些计算,结果会乘以-1。
最后,它把计算结果转换成浮点数(也就是带小数的数字)并返回。

接下来是一个用来优化的函数...

撰写回答