哈尔滨工业大学计算机学院-最优化方法-课程总结

1. 前言

  • 本课程由数学系开设,旨在讲述求解数学问题的各类最优化方法。
  • 本博客仅对课程中的以下内容进行详细介绍:
    • 凸集、凸函数、凸规划
    • 线性规划
      • 线性规划标准形式
      • 单纯形法
    • 无约束最优化方法
      • 最优性条件
      • 最速降低法
      • 牛顿法
    • 约束最优化方法
      • Kuhn-Tucker 条件
      • 罚函数法
      • 闸函数法

2. 凸集、凸函数、凸规划

2.1 凸集

  • 凸集的定义:
    • \(S \subseteq \mathbf { R } ^ { n }\),若\(\forall x ^ { ( 1 ) } , x ^ { ( 2 ) } \in S , \lambda \in [ 0,1 ]\),必有\(\lambda x ^ { ( 1 ) } + ( 1 - \lambda ) x ^ { ( 2 ) } \in S\),则称\(S\)为凸集。
  • 形式化理解凸集的定义,即集合中任意两点连线上的点都在集合内。
  • 对于凸集的证实,每每利用定义进行证实。

2.2 凸函数

  • 凸函数的定义:
    • 设集合\(S \subseteq \mathbf { R } ^ { n }\)为凸集,函数\(f : S \rightarrow \mathbf { R }\)。若\(\forall x ^ { ( 1 ) } , x ^ { ( 2 ) } \in S , \lambda \in ( 0,1 )\),恒有\(f \left( x ^ { ( 1 ) } + ( 1 - \lambda ) x ^ { ( 2 ) } \right) \leq \lambda f \left( x ^ { ( 1 ) } \right) + ( 1 - \lambda ) f \left( x ^ { ( 2 ) } \right)\),则称\(f\)为凸集\(S\)上的凸函数。
    • 若是上面不等式以严格不等式成立,则称\(f(x)\)为凸集\(S\)上的严格凸函数。
  • 凸函数的证实:
    • 凸函数与一阶特征、二阶特征互为充要条件,每每利用二阶特征进行证实,
    • 二阶特征:
      • \(f\)\(S\)上凸,等价于,\(S\)中任意一点,其对应的海塞矩阵半正定。
      • \(f\)\(S\)上严格凸,等价于,\(S\)中任意一点,其对应的海塞矩阵正定。
  • 凸函数是定义在凸集上的函数,若是要证实凸函数,首先要说明定义域为凸集。

2.3 凸规划

  • 凸规划的定义:
    • 若是问题\((fS)\)中,\(S\)为凸集,\(f\)为凸函数,则称这个问题是凸规划。
  • 凸规划的定理:
    • 在凸规划问题中,局部最优解也是全局最优解。
    • 若是\(f\)为严格凸函数,则该局部最优解是惟一全局最优解。
  • 依据凸规划的定理,证实一个局部最优势为惟一全局最优解,只需证实函数\(f\)为严格凸函数。
  • 凸规划的性质十分利于咱们寻找问题的最优解,所以咱们常常须要证实一个问题是凸规划问题。

3. 线性规划

3.1 线性规划标准形式

  • 首先介绍线性规划的标准形式,以后的单纯形法都是在标准形式上进行计算,对于不是标准形式的线性规划须要对其进行转换。
  • 标准形式以下:
    \[( L P )\left\{ \begin{array} { c } { \operatorname { max } z=c ^ { T } x } \\ {s.t. \quad Ax = b } \\ {\quad \quad x \geq 0 } \end{array} \right.\]
  • 四个特色:
    • 目标最大化
    • 约束为等式
    • 决策变量非负
    • 右端项非负
  • 采用以下方式,将通常形式转化为标准化形式:
    • 极小化目标函数的问题:利用负号转化为目标最大化
    • 约束不是等式的问题:引入松弛变量
    • 变量无符号限制的问题:用两个非负变量之差来表示一个无符号限制的变量
    • 右端项有负值的问题:乘以\(-1\)

3.2 单纯形法

  • 单纯形法的基本思路是有选择地取基本可行解,便是从可行域的一个极点出发,沿着可行域的边界移到另外一个相邻的极点,要求新极点的目标函数值不比原目标函数值差。
  • 单纯形法要求系数矩阵中存在单位阵,将其做为初始的基本可行解,以后一步步迭代。对于某些标准形式中不含有单位阵的线性规划问题,能够采用大M法和两阶段法。
  • 单纯形法的计算比较简单,这里只给出例子进行说明。
    \[( L P ) \quad \left\{ \begin{array} { c } { \operatorname { max } z=1500x_1+2500x_2} \\ { 3x_1+2x_2+x_3 = 65 } \\ { 2x_1+x_2+x_4 = 40 }\\ { 3x_2+x_5 = 75 }\\ { x_1,x_2,x_3,x_4,x_5 \geq 0 } \end{array} \right.\]
  • 单纯形表以下所示:
  • 最优解为\(x _ { 1 } = 5, x _ { 2 } = 25 , x _ { 4 } = 5\)
  • 与单纯形法相对应的还有对偶单纯形法,两者的算法流程图对好比下所示:

4. 无约束最优化方法

4.1 最优性条件

  • 一阶必要条件:若是\(x^*\)为局部最小点, 则\(x^*\)为驻点,即该点梯度为\(0\)
  • 二阶必要条件:若是\(x^*\)为局部最小点, 则该点梯度为\(0\),且海塞矩阵半正定。

4.2 最速降低法

  • 该方法就是就是梯度降低法的雏形,是求解无约束问题\(minf(x)\)的古老而基本的方法。
  • 在迭代收敛的过程当中,每一步令该点的负梯度方向为降低方向。
  • 在降低方向肯定后,须要找到步长\(\lambda\),因为是单变量求最优的问题,采用一维搜索的方式便可。
  • 最速降低法的“最速”是局部性质,在举例最优势较远处降低的比较快,而距离较近的时候会发生扭摆现象。
  • 最速降低法是一种线性收敛的算法,在特定条件下具备全局收敛性。
  • 该算法的流程图以下所示:

4.3 牛顿法

  • 牛顿法的思想是利用二次函数近似目标函数,把这个二次函数的极小点做为新的迭代点。该方法应用的前提是函数\(f(x)\)二次连续可微,而且求解的问题是无约束问题\(minf(x)\)
  • 其数学公式由泰勒展开式取前三项获得,即二阶Taylor近似函数:
    \[q_k( x ) = f \left( x ^ { ( k ) } \right) + \nabla f ^ { \mathrm { T } } \left( x ^ { ( k ) } \right) \left( x - x ^ { ( k ) } \right) + ( 1 / 2 ) \left( x - x ^ { ( k ) } \right) ^ { \mathrm { T } } \nabla ^ { 2 } f \left( x ^ { ( k ) } \right) \left( x - x ^ { ( k ) } \right)\]
    • \(x^{(k)}\)是第\(k\)次的迭代点。
  • 对该函数求驻点获得:
    \[\nabla q_k( x )= \nabla f \left( x ^ { ( k ) } \right) + \nabla ^ { 2 } f \left( x ^ { ( k ) } \right) \left( x - x ^ { ( k ) } \right) = 0\]
  • 显然只要计算\(x^{(k)}\)点的梯度值,以及海塞矩阵,便可找到下一步的迭代点,至关于最速降低法中的步长为1。将上述公式转换为:
    \[\boldsymbol { x } ^ { ( k + 1 ) } = \boldsymbol { x } ^ { ( k ) } - \left[ \nabla ^ { 2 } f \left( \boldsymbol { x } ^ { ( k ) } \right) \right] ^ { - 1 } \nabla f \left( \boldsymbol { x } ^ { ( k ) } \right)\]
    • 该公式能够进行计算的前提是海塞矩阵是正定。
  • 牛顿法的算法流程图以下所示:
  • 牛顿法的优势
    • 牛顿法的收敛速度为二阶,属于平方收敛。牛顿法对正定二次函数一步迭代便可达到最优解,所以具备二次终结性。
  • 牛顿法的缺点
    • 牛顿法是局部收敛的,在初始点选择不当时,每每致使不收敛。
    • 牛顿法不是降低算法,当二阶海塞矩阵非正定时,不能保证产生的方向是降低方向。
    • 二阶海塞矩阵必须可逆。
    • 要求函数二阶连续可微,计算量大。

5. 约束最优化方法

  • 约束最优化问题是实践中常见的问题,难度大于无约束最优化问题。约束最优化问题的形式通常是\((fgh)\)问题,即:
    \[( fgh ) \left\{ \begin{array} { c } { \operatorname { min } f(x)} \\ { s.t. \quad g ( x ) \leq 0 } \\ {\quad \quad h ( x ) = 0 } \end{array} \right.\]

5.1 Kuhn-Tucker条件

  • 对于\((fgh)\)问题,K-T条件的公式以下:

\[\nabla f \left( x ^ { * } \right) + \sum _ { i \in I } u _ { i } ^ { * } \nabla g _ { i } \left( x ^ { * } \right) + \sum _ { j = 1 } ^ { l } v _ { j } ^ { * } \nabla h _ { j } \left( x ^ { * } \right) = 0\]算法

  • 要求全部的\(u\)值非负。
  • 经过对上述公式求解,便找到了知足K-T条件的K-T点。函数

  • 在约束最优化问题中,K-T条件至关于无约束最优化问题中的驻点条件,即寻找到K-T点便找到了问题的局部最优解。
    • 有些问题须要说明K-T点是全局最优解,只须要证实问题是凸规划便可,详见2.3章节的介绍。

5.2 罚函数法(外点法)

  • 解决玉树问题的一个直接想法是,把违背约束做为对求最小值的一种惩罚,把约束加入到目标函数,从而获得了一个辅助的无约束最优化问题,以后采用无约束最优化方法进行求解,这就是罚函数的基本思想。
    • 在实际求解无约束最优化问题时,求驻点即可以解决大多数问题。
  • 构造的辅助函数形式以下:
    \[minf(x)+\mu \alpha (x)\]
    • \(\mu\)为罚因子,大于0。
    • 其中\(\alpha ( x ) = \sum _ { i = 1 } ^ { m } \phi \left( g _ { i } ( x ) \right) + \sum _ { j = 1 } ^ { 1 } \varphi \left( h _ { j } ( x ) \right)\)
  • 一般令\(\phi(x)=[max{0,x}]^p\), \(\varphi (x)=|x|^p\), \(p\)值一般为\(2\)优化

  • 求解过程就是对辅助函数求驻点,并计算\(\mu\)趋近无穷大时,最优解的值。spa

5.3 闸函数法(内点法)

  • 闸函数适用于不等式约束问题,即\((fg)\)问题。思想与罚函数基本相同。不一样点在于该方法将惩罚家在约束集的边界,当靠近边界时,惩罚项无穷大。
  • 构造的辅助函数形式以下:
    \[minf(x)+\mu B(x)\]
    • \(\mu\)为罚因子,大于0。
    • 其中\(B ( x ) = \sum _ { i = 1 } ^ { m } \phi \left( g _ { i } ( x ) \right)\)
  • 一般令\(\phi(x)= - \frac { 1 } { x }\)
  • 求解过程就是对辅助函数求驻点,并计算\(\mu\)趋近\(0^+\)时,最优解的值。
相关文章
相关标签/搜索