【发布时间】:2016-09-28 01:41:03
【问题描述】:
我没有找到使用多维函数从 scipy 执行 optimize.minimize 的方法。在几乎所有示例中,分析函数都被优化,而我的函数被插值。测试数据集如下所示:
x = np.array([2000,2500,3000,3500])
y = np.array([10,15,25,50])
z = np.array([10,12,17,19,13,13,16,20,17,60,25,25,8,35,15,20])
data = np.array([x,y,z])
虽然函数就像 F(x,y) = z
我想知道在 f(2200,12) 处会发生什么,以及 x (2000:3500) 和 y (10:50) 范围内的全局最大值是多少。插值工作正常。但到目前为止,找到全局最大值还没有用。
插值
self.F2 = interp2d(xx, -yy, z, kind, bounds_error=False)
产量
<scipy.interpolate.interpolate.interp2d object at 0x0000000002C3BBE0>
我尝试通过以下方式进行优化:
x0 = [(2000,3500),(10,50)]
res = scipy.optimize.minimize(self.F2, x0, method='Nelder-Mead')
抛出异常:
TypeError: __call__() missing 1 required positional argument: 'y'
我认为优化器无法处理插值中的对象。在示例中,人们使用 lambda 从他们的函数中获取值。我该怎么办?
最好, 亚历克斯
【问题讨论】:
标签: python numpy optimization scipy