单纯形法:
import numpy as np
from scipy.optimize import minimize
def rosen(x):
return sum(100.0 * (x[1:] - x[:-1] ** 2.0) ** 2.0 + (1 - x[:-1]) ** 2.0)
def callback(xk):
print(xk)
# 初始迭代点
# x0 = np.random.randn(10)*2
x0 = np.ones(10)
print("x0::",x0)
# 最小化优化器,方法:Nelder-Mead (单纯形法)
resolve = minimize(rosen, x0=x0, method='nelder-mead',options={'xtol':1e-2,'disp':True})
print(resolve.x)