Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SciPy'中的多变量和参数;s.fmin_Python_Scipy_Minimization - Fatal编程技术网

Python SciPy'中的多变量和参数;s.fmin

Python SciPy'中的多变量和参数;s.fmin,python,scipy,minimization,Python,Scipy,Minimization,我希望使用scipy的optimize.fmin函数来找到函数的最小值,这是我希望最小化的变量和不变(未优化)的参数的函数 我可以在优化单个变量时做到这一点: from scipy import optimize c1=4 c2=-1 def f(x,c1,c2): return x**2+c1+c2 guess_f=1 minimum = optimize.fmin(f,guess_f,args=(c1,c2),maxfun=400,maxiter=400,ftol=1e-2,x

我希望使用scipy的optimize.fmin函数来找到函数的最小值,这是我希望最小化的变量和不变(未优化)的参数的函数

我可以在优化单个变量时做到这一点:

from scipy import optimize

c1=4
c2=-1

def f(x,c1,c2):
    return x**2+c1+c2

guess_f=1
minimum = optimize.fmin(f,guess_f,args=(c1,c2),maxfun=400,maxiter=400,ftol=1e-2,xtol=1e-4)
但是,当我添加另一个变量以最小化超过:

def g(x,y,c1,c2):
    return x*y+c1+c2

guess_g=[1,1]

minimum2= optimize.fmin(g,guess_g,args=(c1,c2),maxfun=400,maxiter=400,ftol=1e-2,xtol=1e-4)
我收到以下错误消息:

TypeError: g() missing 1 required positional argument: 'c2'
我确实找到了,这里给出了一个解决方案,其中需要优化的变量需要分组为它们自己的数组。我尝试下面这样的方法:

def g(params,c1,c2):
    x,y=params
#    print(params)
    return x*y+c1*x+c2

guess_g=[1,1]
minimum2= optimize.fmin(g,guess_g,args=(c1,c2),maxfun=4000,maxiter=4000,ftol=1e-2,xtol=1e-4)
我没有收到TypeError,但我得到的是“警告:已超过函数求值的最大数量”消息以及RuntimeWarning:从sys.path中删除cwd后在双_标量中遇到溢出。(此外,我尝试使用optimize.minimize命令执行相同的操作,但在添加额外参数时无法使其工作,但我没有在此处发布该代码,因为问题已经越来越长了)

所以这似乎不是正确的方法


如何在多个变量上使用optimize.fmin函数进行优化,同时为函数提供其他参数?

“因此这似乎不是正确的方法。”这是正确的方法。问题是您的目标函数
g
没有最小值。
x*y+c
的图形是一个。尝试将
g
更改为,例如,
x**2+y**2+c1+c2
。是的,你是对的-显然我没有太多考虑我的功能!谢谢,一切都好了!