最急降下法

制約のある最適化問題のお話が続きましたが,今回はもっと簡単な,制約のない最適化問題のお話です
今回は最急降下法(Steepest descent method)を使ってみます
これは勾配法(Gradient method)の仲間で,最もシンプルなアルゴリズムとなります(´・ω・`)


2変数の簡単な最小化問題を考えます
steepest descent.wxm

x, y : 設計変数
obj : 評価関数(%o2)
J : 勾配ベクトル[∂obj/∂x, ∂obj/∂y]
この評価関数は2次式なので,いわゆる非線形計画問題(nonlinear programming, NLP)になります
%o3にて,objのx, yに関する勾配ベクトルをJに代入します



n : step数
設計変数(x, y)の初期値は[0, 0]とします
αは設計変数の更新に用いる適当なパラメータで,0.3とします(最急降下法ではα一定です)


※次のブロックは最適解に収束するまでひたすら繰り返します・゚・(ノД`)

繰り返すこと46回(%o189)
勾配Jとパラメータαを用いて更新した設計変数を%o190式に示します
収束時の評価関数の値を%o192式に示します


http://cdn-ak.f.st-hatena.com/images/fotolife/r/ryooji_f/20111130/20111130212123.png
設計変数の収束の様子を横軸にx, 縦軸にyとして%t193にプロットします