gpt4 book ai didi

python - Scipy 按元素最小化目标

转载 作者:行者123 更新时间:2023-12-01 08:34:05 26 4
gpt4 key购买 nike

我正在尝试将 scipy 最小化器应用于以多个 np.arrays 作为参数的矢量化目标函数。在此示例中,我希望相对于 x 按元素最小化 obj(x,p),同时将 p 固定。使用 p = np.array([2,3,4]) 最小值应为 2、3 和 4。

但是

import numpy as np
from numba import vectorize, float64
from scipy.optimize import minimize
xinit = np.array([1,1,1])
p = np.array([2,3,4])

@vectorize([float64(float64,float64)])
def obj(x,p):
return((x-p)**2)

minimize(obj, x0 = xinit,args = p, method='Nelder-Mead')

返回ValueError:使用序列设置数组元素。

谁可以帮忙?

提前非常感谢!

最佳答案

目前尚不清楚您要实现的目标:(x-p)**2 是一个数组,因此将其用作目标并不是一个明确定义的操作(因为没有合理的使用顺序)。也许您实际上想要两个参数之间的平方距离? IE。相当于什么

def obj(x, p):
return np.linalg.norm(x-p)**2

这将起作用并找到适当的最小值,但此时 vectorize 签名不再有效;如果您愿意,仍然可以使用 Numba 对可调用对象进行 JIT 编译。

关于python - Scipy 按元素最小化目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53804418/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com