📜  凸问题的算法

📅  最后修改于: 2020-11-25 04:56:00             🧑  作者: Mango


最陡下降法

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

$$ 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) \ right \ |} $。

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

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

  • 如果$ \ left \ | x_ {k + 1-x_k} \ right \ |

  • 最佳解决方案是$ \ 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 \ right)$

对于$ 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)= \ bigtriangledown f \ left(x_k \ right)$为$ h \ 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 \左(x_k \ 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 $

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

设置$ \ 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 $。