ラグランジュの未定乗数法
最適化問題
世の中には非常に多くの最適化問題が存在します。ある条件の下で、この値を最適化したい等、良く耳にすることが多いです。
燃費低減の為自動車のエンジン軽くしたい。でもあまり軽すぎると強度が心配。強度を保ちつつどこまで軽くできるか?等、いくらでもありますよね。
エンジン壁の肉厚をとして、エンジンの総重量をとした場合、肉厚を厚くするとエンジンが重くなるので、はの関数になっているのがわかると思います。
一般的に変数の事を設計変数と呼びます。また、の関数である最適化したい関数を目的関数と呼びます。
また、エンジン壁の肉厚を無限に薄くすることができないので、にここまでという制約がつくことも多いです。
最適化問題における設計変数の制約を制約条件と呼びます。
制約条件も設計変数の関数の様に、等式、または不等式で表すことができます。の事を制約関数と言います。
ラグランジュの未定乗数法
一般的に、目的関数は設計変数の複雑な関数になっており、良くわからない場合が多いです。
もし目的関数が設計変数の簡単な式であらわされると分かっている時は、解析的に最適解を求めることができる場合があります。
ラグランジュの未定乗数法は、設計変数をとしたときに(複数可です)、の1次関数である制約条件の下、の2次関数である目的関数を最適化するアルゴリズムです。
制約条件は複数あってもいいです。ただし全て等式でなければいけません。
今、個の制約条件の下で、個ある設計変数の2次関数の最小値を求める問題を考えます。
設計変数は、個あるのでのベクトルで表します。
をの定数ベクトル、
をの定数行列としたときに、
2次関数である目的関数は、以下の式であらわされます。
※定数項があってもなくても目的関数を最小にするは一意に決まるので考慮しなくていいです。
をの定数ベクトル、
をの定数行列としたときに、
一次関数である制約条件は以下の式であらわされます。
個あるのでのベクトルです。の形にしておきます。
ここで以下の様に、制約条件の数だけ、ラグランジュ乗数という変数を導入し、ラグランジュ関数を定義します。 はのベクトルです。
ラグランジュ関数は、制約条件とラグランジュ乗数の内積を取って、目的関数に足した関数です。
次にラグランジュ関数を設計変数で偏微分した値を0と置いてやります。
上記(10)式と、制約条件(7)式で連立方程式をたてて、とについて解いてやります。
行列でくくってまとめてかくと、
(13)式で求めた解が、制約条件の下で、目的関数を最小にする最適解になります。
制約条件が多すぎると、複数の制約条件を同時に満たすが存在しなくなるので、(13)式の逆マトリックスが解けなくなります。
試してないですが、制約条件の個数が設計変数の個数より多くなると、恐らく逆マトリックスが存在しなくなると思います。
例
簡単な例で試してみましょう。
目的関数を制約条件の下で最小化する、を求めてみましょう。
よって目的関数の最小値を与える解は、で、最小値はとなります。