最速下降法求解函数极小值

  • 1、最速下降法
  • 1.1 原理
  • 1.1.1 探索方向S^(k)^的确定
  • 1.1.2 步长a^(k)^的确定
  • 1.1.3 收敛判别条件
  • 1.1.4最速下降法迭代步骤
  • 1.1.5程序框图


1、最速下降法

1.1 原理

  函数值变化最快的方向是其梯度方向。因此选择目标函数的梯度方向作为探索方向,就可使求优过程的计算效率大为提高。最速下降法就是采用目标函数值下降得最快的负梯度方向作为探索方向,求目标函数的极小值(当然,如果求最大值可用正梯度方向进行探索)。

1.1.1 探索方向S(k)的确定

目标函数在X(k)点的梯度为:

   

最速下降法 python代码 最速下降法算法步骤_最优化


求目标函数最小点,由于函数沿负梯度方向下降最快,故在X(k)点的探索方向应取该点的负梯度方向:

          

最速下降法 python代码 最速下降法算法步骤_最速下降法 python代码_02

S(k)为负梯度方向的单位向量,那么经过第k+1次迭代计算所得到的新点为:

           

最速下降法 python代码 最速下降法算法步骤_最速下降法_03


至此,最优化的方向已经确定了。

1.1.2 步长a(k)的确定

  确定步长有两种方法

   (1)任意给定一个初始步长,使其满足条件

               

最速下降法 python代码 最速下降法算法步骤_算法_04


这样是为了保证任意选取的步长能够让下一步迭代更优化而不是远离优化方向。

   (2)沿负梯度方向做一维探索,求解一维问题的最优化步长α,对目标函数求极小,以得到最优步长(即求给定方向上的最优步长,黄金分割法,平分法,插值法等)         

最速下降法 python代码 最速下降法算法步骤_最速下降法_05

1.1.3 收敛判别条件

最速下降法 python代码 最速下降法算法步骤_最速下降法_06


三式可任选一式或两式作为判别条件。

1.1.4最速下降法迭代步骤

最速下降法 python代码 最速下降法算法步骤_迭代_07

1.1.5程序框图

最速下降法 python代码 最速下降法算法步骤_迭代_08


p(k)是探索方向,λ(k)为步长

参考文献《机械最优化设计》第二版,刘惟信