Convex-optimization-algorithms-for-convex-problems
凸問題のアルゴリズム
最急降下法
この方法は、勾配法またはコーシー法とも呼ばれます。 この方法には、次の用語が含まれます-
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 \ |} $。
- $ \ phi \ left(\ alpha \ right)= f \ left(x_k + \ alpha d_k \ right)$を最小化するような$ \ alpha_k $を見つけます。
- $ 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)$ for $ 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 \ 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 $を計算します
$ 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 $を設定します。