Youtube登録者5000人突破!!

【FEM】拡張ラグランジュ法とペナルティ法の違い(augmented lagrangian method)

※今回は流体ではなく、構造解析(FEM)の記事になります。

拡張ラグランジュ法やペナルティ法は、FEM(有限要素法)などの接触条件でよく使われる方法です。どちらも、接触した物体がお互いに少し沈み込むことを許容しており、沈んだ分だけ反発するような設定になっています。

拡張ラグランジュ法が開発された元々の目的が、ペナルティ法より優れた方法を開発するでした。なので、当然ペナルティ法と似た式になっています。

ここでは、簡単に二つの違いについて解説します。

ペナルティ法(Penalty method)

ペナルティ法は、係数を徐々に変更して、最適化問題を考える方法です。最適化問題と聞くと難しそうですが、やっていることは、下記の式の$\mu_k$を徐々に大きくしていって、右辺が一番小さくなるように修正する方法です。

{\displaystyle \min \Phi _{k}(\mathbf {x} )=f(\mathbf {x} )+\mu _{k}~\sum _{i\in {\mathcal {E}}}~c_{i}(\mathbf {x} )^{2}.}

しかし、$\mu_k$が大きくなると不安定になってしまう課題があります。急激に大きな値で修正しようとすると、オーバーシュートが発生するためです。1回のステップで狙いの値を行き過ぎるような振動が発生してしまうと、収束させる方法がありません。

つまるところ、簡単すぎる式では限界があるということです。

拡張ラグランジュ法(augumented lagrangian method)

拡張ラグランジュ法は、ラグランジュ法という手法があったものを発展させた手法です。もともとのラグランジュ法は、下記の式の右辺第2項と第3項を分けて計算する方式だったようですが、それが合体して拡張ラグランジュ法になったみたいです。

ペナルティ法と同様に、$\mu_k$を徐々に大きくしていって、右辺の合計を0に近づけます。しかし、ペナルティ法と大きく違うのは、右辺第3項の追加です。右辺第3項に含まれる$\lambda$は、時間が進むごとに更新されます。

これによって、オーバーシュートの問題が抑えられます。もし$\mu$の項でオーバーシュートが発生しても、$\mu$以外の変数が含まれた項(つまり$\lambda$の項)によって振動が抑えられます。

{\displaystyle \min \Phi _{k}(\mathbf {x} )=f(\mathbf {x} )+{\frac {\mu _{k}}{2}}~\sum _{i\in {\mathcal {E}}}~c_{i}(\mathbf {x} )^{2}+\sum _{i\in {\mathcal {E}}}~\lambda _{i}c_{i}(\mathbf {x} )}

{\displaystyle \lambda _{i}\leftarrow \lambda _{i}+\mu _{k}c_{i}(\mathbf {x} _{k})}

まとめ

ペナルティ法と拡張ラグランジュ法の解説をしました。拡張ラグランジュ法は、ペナルティ法の上位互換を目指して作られたので、痒い所に手が届くようになっています。ただ、直感的な理解はしにくいので、初学者には難しいですね。

ざっくり言うと、拡張ラグランジュ法とは、項を増やして微調整を効かせる方法です。数値計算ではあるあるですね。慣れておきましょう。

参考: 
https://en.wikipedia.org/wiki/Augmented_Lagrangian_method
http://www.kana-lab.c.titech.ac.jp/lecture/lec.2007.1st.suurijouhou1/10.2007.06.28.EqualityConstraintAlg.pdf