逐次線形計画法

前回の増大ラグランジュ乗数法は,制約のある非線形最適化問題NLP)を制約のないNLPに変換して最適解を探索しました
いわゆる変換法ですが,これとは異なるアプローチとして
制約のあるNLPを,制約のあるLPに変換してこれを繰り返し解くという手法もあります
これを逐次線形計画法(Sequential linear programming, SLP)と呼びます


前回と同じ問題を,今回はSLPを使って解いてみたいと思います
slp.wxm

obj : 評価関数(%o4)
x, y : 設計変数
g[1]〜g[4] ≦ 0 : 制約条件(%o5〜8)
%o1にてパッケージ"simplex"をロードします(画面出力は省略)


http://cdn-ak.f.st-hatena.com/images/fotolife/r/ryooji_f/20111212/20111212233600.png
F : 区間線形化された評価関数
r1, r2 : 区間線形化問題における設計変数
G[1]〜G[4] : 区間線形化された制約条件
現設計点(x, y)近傍における区間線形化最適化問題を%o9,11式に示します
%o11式中のΔは線形性を保証するための変動制約(move limit)です



n : step数
設計変数の初期値は前回と同じく(5, 2)とします
move limitには適当な小さい値(1)としておきます


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

繰り返すこと6回
minimize_lp関数を使ってFを最小化化するr1, r2を計算した結果を%o38式に示します
r1, r2を用いて更新した設計変数を%o39式に示します
前回と同一の解に収束していることが解ります


http://cdn-ak.f.st-hatena.com/images/fotolife/r/ryooji_f/20111212/20111212233557.png
設計変数の収束の様子を横軸にx, 縦軸にyとして%t41にプロットします
前回の増大ラグランジュ乗数法に比べて収束性が向上しているのが解ります