Python 多变量优化(使用scipy.optimize.minimize)
我想在一个方程上实现Nelder-Mead优化。但它不仅包含一个变量,还包含多个变量(其中一个是未知的,其他的是已知的) 例如,在本例中: 如果我的罗森(x)是 与示例中提到的不同,我如何优化它? 如果我打电话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
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])