凸问题的算法


最速下降法

该方法也称为梯度法或柯西法。该方法涉及以下术语 -

$$x_{k+1}=x_k+\alpha_kd_k$$

$d_k= - \bigtriangledown f\left ( x_k \right )$ 或 $d_k= -\frac{\bigtriangledown f\left ( x_k \right )}{\left \| \bigtriangledown f\left ( x_k \right ) \right \|}$

令 $\phi \left (\alpha \right )=f\left ( x_k +\alpha d_k\right )$

通过对 $\phi$ 求导并将其等于零,我们可以得到 $\alpha$。

所以算法如下 -

  • 初始化$x_0$,$\varepsilon_1$,$\varepsilon_2$并设置$k=0$。

  • 设置 $d_k=-\bigtriangledown f\left ( x_k \right ) $或 $d_k=-\frac{\bigtriangledown f\left (x_k \right )}{\left \|\bigtriangledown f\left (x_k \right ) \右\|}$。

  • 找到 $\alpha_k$ 使得它最小化 $\phi\left ( \alpha \right )=f\left ( x_k+\alpha d_k \right )$。

  • 设$x_{k+1}=x_k+\alpha_kd_k$。

  • 如果$\左\| x_{k+1-x_k} \right \| <\varepsilon_1$ 或 $\left \| \bigtriangledown f\left ( x_{k+1} \right ) \right \| \leq \varepsilon_2$,转到步骤 6,否则设置 $k=k+1$ 并转到步骤 2。

  • 最优解是$\hat{x}=x_{k+1}$。

牛顿法

牛顿法的工作原理如下:

$f\left ( x \right )=y\left ( x \right )=f\left ( x_k \right )+\left ( x-x_k \right )^T \bigtriangledown f\left ( x_k \right )+ \frac{1}{2}\left ( x-x_k \right )^TH\left ( x_k \right )\left ( x-x_k \right )$

$\bigtriangledown y\left ( x \right )=\bigtriangledown f\left ( x_k \right )+H\left ( x_k \right )\left ( x-x_k \right )$

在 $x_{k+1} 处,\bigtriangledown y\left ( x_{k+1} \right )=\bigtriangledown f\left ( x_k \right )+H\left ( x_k \right )\left ( x_{k +1}-x_k \右)$

令 $x_{k+1}$ 为最优解 $\bigtriangledown y\left ( x_k+1 \right )=0$

因此,$x_{k+1}=x_k-H\left ( x_k \right )^{-1} \bigtriangledown f\left ( x_k \right )$

这里 $H\left ( x_k \right )$ 应该是非奇异的。

因此,算法如下 -

步骤 1 - 初始化 $x_0,\varepsilon$ 并设置 $k=0$。

步骤 2 - 找到 $H\left ( x_k \right ) \bigtriangledown f\left ( x_k \right )$。

步骤 3 - 求解 $h\left ( x_k \right )$ 的线性系统 $H\left ( x_k \right )h\left ( x_k \right )=\bigtriangledown f\left ( x_k \right )$。

步骤 4 - 找到 $x_{k+1}=x_k-h\left ( x_k \right )$。

步骤 5 - 如果 $\left \| x_{k+1}-x_k \right \|< \varepsilon$ 或 $\left \| \bigtriangledown f\left ( x_k \right ) \right \| \leq \varepsilon$ 然后转到步骤 6,否则设置 $k=k+1$ 并转到步骤 2。

步骤 6 - 最优解是 $\hat{x}=x_{k+1}$。

共轭梯度法

该方法用于解决以下类型的问题 -

$min f\left ( x \right )=\frac{1}{2}x^T Qx-bx$

其中 Q 是正定 nXn 矩阵,b 是常数。

给定 $x_0,\varepsilon,$ 计算 $g_0=Qx_0-b$

将 $d_0=-g_0$ 设置为 $k=0,1,2,...,$

设$\alpha_k=\frac{g_{k}^{T}g_k}{d_{k}^{T}Q d_k}$

计算 $x_{k+1}=x_k+\alpha_kd_k$

设 $g_{k+1}=g_k+\alpha_kd_k$

计算$\beta_k=\frac{g_{k}^{T}g_k}{d_{k}^{T}Qd_k}$

计算 $x_{k+1}=x_k+\alpha_kd_k$

设 $g_{k+1}=x_k+\alpha_kQd_k$

计算$\beta_k=\frac{g_{k+1}^{T}g_{k+1}}{g_{k}^{T}gk}$

设$d_{k+1}=-g_{k+1}+\beta_kd_k$。