Python 多变量优化(使用scipy.optimize.minimize)

Python 多变量优化(使用scipy.optimize.minimize),python,optimization,scipy,minimization,Python,Optimization,Scipy,Minimization,我想在一个方程上实现Nelder-Mead优化。但它不仅包含一个变量,还包含多个变量(其中一个是未知的,其他的是已知的) 例如,在本例中: 如果我的罗森(x)是 与示例中提到的不同,我如何优化它? 如果我打电话 res = minimize(rosen, x0, method='nelder-mead', ... options={'xtol': 1e-8, 'disp': True}) 它说这需要两个论点 如果我打电话 res = minimize(rosen

我想在一个方程上实现Nelder-Mead优化。但它不仅包含一个变量,还包含多个变量(其中一个是未知的,其他的是已知的)

例如,在本例中:

如果我的罗森(x)是

与示例中提到的不同,我如何优化它? 如果我打电话

res = minimize(rosen, x0, method='nelder-mead',
...                options={'xtol': 1e-8, 'disp': True})
它说这需要两个论点 如果我打电话

res = minimize(rosen(y), x0, method='nelder-mead',
...                options={'xtol': 1e-8, 'disp': True})
在代码前面已经定义了y的情况下,我得到了相同的错误。如果我叫它

res = minimize(rosen(x,y), x0, method='nelder-mead',
...                options={'xtol': 1e-8, 'disp': True})

我得到一个错误,没有定义x。

通过参数
args
向对象传递参数。优化rosen(x,2):

请注意,变量
x
是一个5维向量,正如您在起点
x0
的定义中所看到的,因此
rosen(x,2)
有五个变量。如果要最小化rosen(x,y),请定义一个目标函数

def rosen2(zz):
    return rosen(zz[:5], zz[5])

通过参数
args
向对象传递参数。优化rosen(x,2):

请注意,变量
x
是一个5维向量,正如您在起点
x0
的定义中所看到的,因此
rosen(x,2)
有五个变量。如果要最小化rosen(x,y),请定义一个目标函数

def rosen2(zz):
    return rosen(zz[:5], zz[5])
def rosen2(zz):
    return rosen(zz[:5], zz[5])