Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

ラグランジュの未定乗数法

制約条件付きの凸最適化を解析的に解く方法としてよく用いられる方法。

大まかには、以下の手続きで問題の制約を緩和して解く。

(1) 微分可能な凸関数f(x)f(\boldsymbol{x})に対する制約付き最小化問題があるとする。

Got function '\boldsymbol' with no arguments as subscript at position 19: …gin{align}\min_\̲b̲o̲l̲d̲s̲y̲m̲b̲o̲l̲{x} \hspace{1em…

\begin{align}\min_\boldsymbol{x} \hspace{1em} & f(\boldsymbol{x})\\\text{subject to} \hspace{1em} & g(\boldsymbol{x}) \leq 0\end{align}

(2) ラグランジュ未定乗数という未知の値λ0\lambda\geq0を用いて、ラグランジュ関数ラグランジアン

L(x,λ)=f(x)+λ(g(x)0)=f(x)+λg(x)L(\boldsymbol{x}, \lambda) = f(\boldsymbol{x}) + \lambda (g(\boldsymbol{x}) - 0)=f(\boldsymbol{x}) + \lambda g(\boldsymbol{x})

を作る。

(3) ラグランジュ双対問題

maxλL(x,λ)subject toλ0\begin{align}\max_\lambda \hspace{1em} & L(\boldsymbol{x}, \lambda)\\\text{subject to} \hspace{1em} & \lambda \geq 0\end{align}

を解いていく。L(x,λ)L(\boldsymbol{x}, \lambda)x\boldsymbol{x}で微分してゼロとおき、

0=Lx=fx+λgx\boldsymbol{0} = \frac{\partial L}{\partial \boldsymbol{x}} = \frac{\partial f}{\partial \boldsymbol{x}}+ \lambda \frac{\partial g}{\partial \boldsymbol{x}}

これを解いて最適解λ,x\lambda^*, \boldsymbol{x}^*を得る。この解x\boldsymbol{x}^*は元の最小化問題(主問題)の解と一致することが知られている。

用語

ラグランジュ緩和

以下のような最適化問題があるとする

minimize f(x)subject to gi(x)=bi(i=1,...,k)hj(x)bj(j=1,...,l)\begin{align} \text{minimize } \hspace{1em} & f(\boldsymbol{x})\\ \text{subject to } \hspace{1em} & g_i(\boldsymbol{x}) = b_i \hspace{1em} (i=1,...,k)\\ & h_j(\boldsymbol{x}) \geq b_j \hspace{1em} (j=1,...,l) \end{align}

この問題の制約を緩和して、もう少し簡単な問題にするアプローチの一つがラグランジュ緩和である。

例えば等式制約gi(x)=big_i(\boldsymbol{x}) = b_iを適当な数値βi\beta_i倍して目的関数に入れる。

ラグランジュ双対問題

微分可能な凸関数fi(x),(i=0,...,m)f_i(x), (i=0,...,m)に対する制約付き最小化問題

minxf0(x)subject tofi(x)ai(i=1,...,m)\begin{align}\min_x \hspace{1em} & f_0(x)\\\text{subject to} \hspace{1em} & f_i(x) \leq a_i \hspace{1em} (i=1, ..., m)\end{align}

のラグランジュ双対問題とは、ラグランジュ未定乗数λi\lambda_iとラグランジュ関数(ラグランジアン)

L(x,λ)=f0(x)+i=1mλi(fi(x)ai)L(x, \lambda) = f_0(x) + \sum^{m}_{i=1} \lambda_i (f_i(x) - a_i)

を用いて、以下のように定義される。

maxλinfxL(x,λ)subject toλ0\begin{align}\max_{\lambda} \inf_{x} \hspace{1em} & L(x, \lambda)\\\text{subject to}\hspace{1em} & \lambda \geq 0\end{align}

図示

参考