Convex-optimization-algorithms-for-convex-problems

提供:Dev Guides
移動先:案内検索

凸問題のアルゴリズム

最急降下法

この方法は、勾配法またはコーシー法とも呼ばれます。 この方法には、次の用語が含まれます-

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 $を設定します。