梯度法
梯度下降法的优化思想是用当前位置负梯度方向作为搜索方向,因为该方向为当前位置的最快下降方向,所以也被称为是”最速下降法“。最速下降法越接近目标值,步长越小,前进越慢
流程
梯度法流程
实现
from matplotlib import pyplot
from computeGradient import computeGrad
def fun(x):
return 100 * (x[1] - x[0] ** 2) ** 2 + (1 - x[0]) ** 2
def gradient(x):
grad = computeGrad(fun, x, 1e-3)
return grad
def Gradient(fun, gfun, x0, epsilon):
maxIteration = 5000
beta = 0.5
sigma = 0.4
k = 0
while k < maxIteration:
gk = gfun(x0)
dk = -1.0 * gk
if np.linalg.norm(gk) < epsilon:
break
m = 0
mk = 0
while m < 20:
if fun(x0 + beta ** m * dk) <= fun(x0) + sigma *