9
大学数学基礎解説
文献あり

線型計画問題に対する双対問題の導出

1336
0

はじめまして,みるか( @mirucaaura )です.

本記事では,線型計画問題(Linear Programming Problem; LP)に対する双対問題(Dual Problem)を導出することを目的とします.

注意

本記事を通して変数がベクトルであっても太字で表記しません.

本論

一般的に議論を進めるために,以下で記述される非線形最適化問題を考えます.

[P]minxRnf(x)s.t.gi(x)0(i=1,2,,m)

ここで,f:RnRgi:RnR(i=1,2,,m)とします.

問題[P]に対して,次式で定義される関数を Lagrange 関数(Lagrangian)といいます:

L0(x,λ):={f(x)+i=1mλigi(x)(λ0)(λ<0).
ここで,λ=(λ1,λ2,,λm)Rmは Lagrange 乗数と呼ばれるベクトルです.
上記で定義した関数L0を用いて,関数θ:Rn(,]およびω0:Rm[,)をそれぞれ次のように定義します:

θ(x):=sup{L0(x,λ)λRm},ω0(λ):=inf{L0(x,λ)xRn}.
関数θは標示関数(indicator function)を用いることによって,次のようにも表すことができます:
θ(x)=f(x)+δS(x).
ここで,SRnは問題[P]の実行可能領域であり,次のように表されます:
S={xRngi(x)0(i=1,2,,m)}.
ちなみに,標示関数は与えられた集合に含まれるときは0を返し,それ以外は+を返すような関数で,次のように定義されます:
δS(x):={0(xS)+(xS).
以上を踏まえると,元の問題[P]は,次の無制約最適化問題と等価であることが分かります:
[P0]minxRnθ(x).
一方,関数ω0を最大化する問題:
[D0]maxλRmω0(λ)
は問題[P0]に対する Lagrange 双対問題(Lagrangian dual problem)と呼ばれます.また,元の問題[P0]は主問題(primal problem)と呼ばれます.一般に「双対問題」と呼ばれるのはこれのことです.ここで,問題[D0]は見かけ上は制約を含まない最適化問題に見えますが,実際には Lagrange 関数の定義より,λ<0のときにω0(λ)=となるので,実質的にλ0を制約に含んでいることに注意されたいです.


さて,以上を踏まえて,線型計画問題に対する Lagrange 双対問題を導出しましょう.線型計画問題は様々な標準形式がありますが,本記事では次式で定義される問題を考えましょう:

minxRncxs.t.Axb

先述した定義に従って Lagrange 関数を書き下すと,次式のようになります:

L0(x,λ):={cx+λ(bAx)(λ0)(λ<0).

したがって,双対問題の目的関数はλ0のときに,

ω0(λ)=inf{cx+λ(bAx)xRn}=λb+inf{(cAλ)xxRn}={λb(cAλ=0)(cAλ0)
となります.ただし,λ0のときはω0(λ)=なので,導出すべき双対問題は次のように表すことができます:

maxλRmbλs.t.Aλ=c,λ0.

結論

線型計画問題:
[LP]minxRncxs.t.Axb

に対する(Lagrange)双対問題は,
[DLP]maxλRmbλs.t.Aλ=c,λ0.
となります.

練習問題

以下の線型計画問題に対する Lagrange 双対問題を導出しましょう.
[LP]minxRncxs.t.Ax=b,x0.

参考文献

[1]
非線形最適化の基礎, 福島雅夫
投稿日:20201113
OptHub AI Competition

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

みるか
みるか
17
5661

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. 注意
  2. 本論
  3. 結論
  4. 練習問題
  5. 参考文献