--- lang: ja tags: OptMech-2021, lecture --- # 2021年度 知的システム<br>第3回:線形計画問題(2) 双対問題 [ポータルへ戻る](https://hackmd.io/@nagae/OptMech_2021) <div style="text-align: center"> このページへは以下のQRコードまたはURLからアクセスできます: ![](https://i.imgur.com/BA6qPj3.png =200x) <code style="font-size:20pt">https://hackmd.io/@nagae/OptMech_2021-Ch02</code> </div> # 双対問題 ## A君ふたたび バイトとデートへの時間配分を直接考えるのではなく,以下の3つの制約だけから「どこまで高いリア充度が実現できるか」を考えてみる: - 時間制約: $x_{1} + x_{2} \leq 8$ - 予算制約: $-2x_{1}+x_{2} \leq 2$ - 体力制約: $2x_{1} + 3x_{2} \leq 18$ なお,リア充度は$Z(x_{1}, x_{2}) = x_{1} + 2x_{2}$ である. ## 制約条件からリア充度の上限を推定する まず,時間制約$x_{1}+x_{2} \leq 8$ の両辺を2倍してみる: $$ 2x_{1} + 2 x_{2} \leq 16 $$ このとき, - この不等式左辺の$x_{1}, x_{2}$の係数$(2,2)$は,リア充度$x_{1} + 2x_{2}$ の係数$(1,2)$以上 - $x_{1}, x_{2} \geq 0$ であることから,上記不等式の左辺は, ==**リア充度と同じかそれより大きい**==. 従って, $$ \text{リア充度}=x_{1} + 2 x_{2} \leq 2x_{1} + 2x_{2} \leq 16 $$ が成り立つ.これは,==**時間制約**== を満たす限り,==**16より高いリア充度**== は実現できないことを意味する. 次に,体力制約$2x_{1} + 3x_{2} \leq 18$ の両辺を$2/3$倍してみる. $$ \frac{4}{3} x_{1} + 2x_{2} \leq 12 $$ この不等式左辺の係数$(\frac{4}{3},2)$は,リア充度$x_{1} + 2x_{2}$ の係数$(1,2)$以上.従って, $$ \text{リア充度}=x_{1} + 2 x_{2} \leq \frac{4}{3}x_{1} + 2x_{2} \leq 12 $$ が成り立つ.つまり,==**体力制約**== を満たす限り,==**12より高いリア充度**== は実現できない. ここで得られたリア充度の上限($=12$)は,時間制約から得られた上限($=16$)より小さい(i.e. ==**より精度が高い**==). もっと精度の高い(小さい)上限はないだろうか? 予算制約と体力制約の両辺に,それぞれ,$1/8$および$5/8$を乗じる: - 予算制約: $-2x_{1}+x_{2} \leq 2 \, (\times \frac{1}{8}) \rightarrow -\frac{1}{4} x_{1} + \frac{1}{8} x_{2} \leq \frac{1}{4}$ - 体力制約: $2x_{1}+3x_{2} \leq 18 \, (\times \frac{5}{8}) \rightarrow \frac{5}{4} x_{1} + \frac{15}{8} x_{2} \leq \frac{45}{4}$ 得られた不等式を足し合わせれば, $$ \text{リア充度} = x_{1} + 2x_{2} \leq \frac{23}{2} = 11.5 $$ となり,より小さい ==**リア充度の上限 11.5**== が得られる. 実は,これは最小の上限となっている(どのように制約条件を組み合わせても,これより小さい上限は実現できない). ## リア充度の上限推定問題 ここまでで見てきた「制約条件からリア充度の上限を探る問題」を定式化してみよう. :::info **問題の概要** - 「時間制約」「予算制約」「体力制約」を定数倍(重みづけ)したものを足し合わせて($x_{1}, x_{2}$についての) ==**線形式$\leq$ 定数**== 型の ==**不等式**== を構成する. - ここで, - 各不等式に乗ずる ==**重み**== が非負 - 不等式左辺の$x_{1}, x_{2}$についての係数が,いずれも,リア充度の係数$(1,2)$を下回らない とすることで,不等式左辺が ==**リア充度以上**== となることが保証できる. - 不等式右辺の定数(リア充度)が ==**なるべく小さくなる**==(精度が高くなる)ように,各制約への ==**重み**== を決定. ::: ### 未知変数と非負制約 - 求めたいのは,時間制約,予算制約および体力制約に対する ==**重み**==. それぞれ, $y_{1}, y_{2}, y_{3}$とする. これらの重みは,いずれも非負でなければならない. $$ y_{1}, y_{2}, y_{3} \geq 0 $$ ### 各制約の加重線形和から得られる不等式 各制約に重み$y_{1}, y_{2}, y_{3}$ を乗じて得られる不等式は, $$ \begin{array}{rrcrcll} y_{1} \times (& x_{1} &+& x_{2} &\leq& 8 &) \\ y_{2} \times (&-2 x_{1} &+& x_{2} &\leq& 2 &) \\ y_{3} \times (& 2 x_{1} &+& 3 x_{2} &\leq& 18 &) \\ \hline &(y_{1} -2 y_{2} + 2 y_{3}) x_{1} &+& (y_{1} + y_{2} + 3 y_{3}) x_{2} &\leq& 8 y_{1} + 2 y_{2} + 18 y_{3} \end{array} $$ となる. ### 不等式の左辺がリア充度以上となるための制約 加重線形和として得られた不等式の左辺: $$ (y_{1} -2 y_{2} + 2 y_{3}) x_{1} + (y_{1} + y_{2} + 3 y_{3}) x_{2} $$ が,常にリア充度: $$ x_{1} + 2 x_{2} $$ 以上となるためには,前者の$x_{1}, x_{2}$の係数が,いずれも後者のそれ以上となる必要がある: - $x_{1}$の係数: $y_{1} - 2y_{2} + 2 y_{3} \geq 1$ - $x_{2}$の係数: $y_{1} + y_{2} + 3 y_{3} \geq 2$ ### 目的関数 加重線形和として得られた不等式の右辺: $$ 8 y_{1} + 2 y_{2} + 18 y_{3} $$ は ==**リア充度の上限**== を表しており,これをなるべく小さく(==**最小化**==)したい. ### 線形計画問題として定式化されたリア充度の上限推定問題 $$ \begin{alignat*}{3} \min_{y_{1}, y_{2}, y_{3}} \quad & 8 y_{1} + 2 y_{2} + 18 y_{3} && \text{(目的関数=リア充度の上限)}\\ \text{s.t.} \quad & y_{1} - 2 y_{2} + 2 y_{3} &\geq 1 \quad & \text{(バイト時間の係数が満たすべき条件)}\\ & y_{1} + y_{2} + 3 y_{3} &\geq 2 \quad & \text{(デート時間の係数が満たすべき条件)}\\ & y_{1}, y_{2}, y_{3} &\geq 0 \quad & \text{(非負制約)} \end{alignat*} $$ # もとの問題と比べてみる <table> <tr><th style="text-align:center">もとの問題</th><th style="text-align:center">リア充度推定問題</th> </tr> <tr><td style="vertical-align:top"> $$ \begin{array}{rl} \displaystyle \max_{x_{1}, x_{2}} & x_{1} + 2 x_{2}\\ \text{s.t.} & x_{1} + x_{2} \leq 8 \\ & -2x_{1} + x_{2} \leq 2 \\ & 2x_{1} + 3 x_{2} \leq 18\\ & x_{1}, x_{2} \geq 0 \end{array} $$ </td><td style="vertical-align:top"> $$ \begin{array}{rl} \displaystyle \min_{y_{1}, y_{2}, y_{3}} & 8 y_{1} + 2 y_{2} + 18 y_{3}\\ \text{s.t.} & y_{1} - 2 y_{2} + 2 y_{3} \geq 1 \\ & y_{1} + y_{2} + 3 y_{3} \geq 2\\ & y_{1}, y_{2}, y_{3} \geq 0 \end{array} $$ </td> </tr> </table> 係数と定数だけ並べてみると <table> <tr><th style="text-align:center">もとの問題</th><th style="text-align:center">リア充度推定問題</th> </tr> <tr><td style="vertical-align:top"> $$ \begin{array}{lrr|l} & (x_{1}) & (x_{2})\\ \max & \color{red}{1} & \color{red}{2} \\ \hline \text{s.t.} & 1 & 1 & \color{blue}{8}\\ & -2 & 1 & \color{blue}{2}\\ & 2 & 3 & \color{blue}{18} \end{array} $$ </td><td style="vertical-align:top"> $$ \begin{array}{lrrr|l} & (y_{1}) & (y_{2}) & (y_{3})\\ \min & \color{blue}{8} & \color{blue}{2} &\color{blue}{18}\\ \hline \text{s.t.} & 1 & -2 & 2 & \color{red}{1}\\ & 1 & 1 & 3 & \color{red}{2}\\ \end{array} $$ </td></tr> </table> 以下の関係が見てとれる: - もとの問題の制約条件の左辺係数の転置 = 推定問題の制約条件の左辺係数 - もとの問題の目的関数の係数(の転置) = 推定問題の制約条件の右辺定数 - もとの問題の制約条件の右辺定数(の転置) = 推定問題の目的関数の係数 これは,偶然なのだろうか? # 双対問題 $N$次元列ベクトル$\mathbf{c}, \mathbf{x}$, $M$次元列ベクトル$\mathbf{b}, \mathbf{y}$および$M\times{N}$行列$\mathbf{A}$が与えられた時,標準最大化問題 $$ \text{(P)} \qquad \max_{\mathbf{x}} \left\{ \left.\mathbf{c}^{\top} \mathbf{x}\right| \mathbf{A} \mathbf{x} \leq \mathbf{b}, \mathbf{x} \geq \mathbf{0} \right\} $$ に対して,標準最小化問題 $$ \text{(D)} \qquad \min_{\mathbf{y}} \left\{ \left.\mathbf{y}^{\top}\mathbf{b}\right| \mathbf{y}^{\top} \mathbf{A} \geq \mathbf{c}^{\top}, \mathbf{y} \geq \mathbf{0} \right\} $$ を, ==**双対問題 (dual problem)**== と呼ぶ.双対問題 $\text{(D)}$ に対して,もとの問題 $\text{(P)}$ を ==**主問題 (primal problem)**== と呼ぶ. 「双対問題の双対問題」は主問題と等価である. # 双対問題の解釈 双対問題は,それ自身が ==**何らかの意味を持った問題**== として解釈できることが多い.リア充問題の双対問題は,A君が持つ「時間」「資金」「体力」という3つの ==**資源**== のそれぞれの「(リア充度で測った)==**価値**==」を求める問題として解釈できる. ## 未知変数と非負制約 $y_{1}, y_{2}, y_{3}$ は,それぞれ,時間,資金,体力の各資源の ==**価値**== とする. 非負制約$y_{1}, y_{2}, y_{3}\geq 0$は,価値が負の値にはならない自然な条件と解釈できる. ## 目的関数 双対問題の目的関数 $$ 8 y_{1} + 2y_{2} + 18 y_{3} $$ は,(リア充度で測った) ==**総資産価値**== と見なせる.双対問題は ==**最小化問題**== であることから, ==**総資産価値の上限**== を推定する問題と解釈できる. ## $x_{1}$の係数に関する不等式制約 「1時間のバイト」は, - ==**1単位**== の「時間」 と ==**2単位**== 「体力」 を**投入** して, ==**2単位**== の「資金」 と ==**1単位**== の「リア充度」 を **生産** する活動 と見なせる(「==**2単位**== の資金の**生産**」は,「==**-2単位**== の資金の**投入**」と読み替えてもよい.) このとき,バイトに従事する時間$x_{1}$の係数に関する双対問題の不等式制約: $$ y_{1} - 2 y_{2} + 2 y_{3} \geq 1 $$ は, ==**投入される資源の総価値**== (左辺)が,少なくともその対価として得られる ==**リア充度**== (右辺)を下回らなってはいけない条件と解釈できる. ## $x_{2}$の係数に関する不等式制約 バイトと同様,「1時間のデート」は, - 「時間」「資金」および「体力」を,それぞれ ==**$(1,1,3)$ 単位**== づつ **投入** して ==**2単位**== の「リア充度」を **生産** する活動 と解釈できるから,デートに費す時間$x_{2}$ の係数に関する双対問題の不等式制約: $$ y_{1} + y_{2} + 3 y_{3} \geq 2 $$ は,==**投入される資源の総価値**== (左辺)が,少なくともその対価として得られる ==**リア充度**== (右辺)を下回らなってはいけない条件と解釈できる. ## 双対問題: 保有資源の総価値の上限を推定する問題 結局,リア充問題の双対問題は, - A君が保有する 「時間」「資金」「体力」という ==**資源の総価値**== を,バイトとデートというそれぞれの ==**生産活動**== に おいて「投入資源の総価値が, 生産されるリア充度を下回らない」という条件の下で見積る問題 と解釈できる. ## リア充問題よりリアル(?)な問題 ある地域に,以下の3種類の ==**再生可能資源**== を投入要素とする発電機とボイラーを導入する. - 畜産由来の ==**8単位**== のバイオガス - 地熱由来の ==**2単位**== の温水 - 間伐材由来の ==**18単位**== の木質バイオマス 発電機とボイラーの性能(稼働時間1単位に対する投入と生産): <table> <tr><th>発電機</th><th>ボイラー</th></tr> <tr><td> - ==**1単位**== のバイオガス - ==**2単位**== の木質バイオマス を**投入**すると - ==**2単位**== の温水 - ==**1単位**== の電気 を**生産**する </td><td> - ==**1単位**== のバイオガス - ==**1単位**== の温水 - ==**3単位**== の木質バイオマス を**投入**すると - ==**1単位**== の熱 を**生産**する. </td> </tr> </table> 生産された ==**電気**== は1単位あたり1万円, ==**熱**== は1単位あたり2万円で売却できるとする. <table> <tr><th>主問題</th><th>双対問題</th></tr> <tr><td> 発電機とボイラーの稼働時間$x_{1}, x_{2}$を ==**未知変数**== とし,各資源について $$ \text{投入量}\leq\text{賦存量} $$ なる制約を満たしながら,エネルギーの総売上を ==**最大化**==: $$ \begin{align*} \max_{x_{1},x_{2}} \quad & x_{1} + 2 x_{2}\\ \text{s.t.} \quad & x_{1} + x_{2} \leq 8\\ & - 2 x_{1} + x_{2} \leq 2\\ & 2 x_{1} + 3 x_{2} \leq 18\\ & x_{1}, x_{2} \geq 0 \end{align*} $$ </td> <td> 各資源の価値$y_{1}, y_{2}, y_{3}$を ==**未知変数**== とし,各変換技術(発電機とボイラー)について , $$ \text{投入資源の価値}\geq\text{生産されるエネルギー価値} $$ なる制約を満たしながら,資源の総価値の上限を ==**最小化**==: $$ \begin{align*} \min_{y_{1},y_{2},y_{3}} \quad & 8 y_{1} + 2y_{2} + 18 y_{3}\\ \text{s.t.} \quad & y_{1} - 2y_{2} + 2 y_{3} \geq 1\\ & y_{1} + y_{2} + 3 y_{3} \geq 2 \\ & y_{1}, y_{2}, y_{3} \geq 0 \end{align*} $$ </td></tr> </table> # 等式制約を持つ / 非負制約を持たない問題に対する双対問題 ## 主問題が等式制約を持つ場合 ### 等式制約を持つ線形計画問題 $$ \begin{align*} \max_{x_{1}, x_{2}, x_{3}} \quad & 3 x_{1} + 4 x_{2} + x_{3} \\ \text{s.t.} \quad & \color{red}{x_{1} + 3x_{2} + 2x_{3} = 4} \\& x_{1} - 2 x_{2} + 3x_{3} \leq 5 \\& x_{1}, x_{2}, x_{3} \geq 0 \end{align*} $$ ### 標準最大化問題 $$ \begin{alignat*}{3} \max_{x_{1}, x_{2}, x_{3}} \quad & 3 x_{1} + 4 x_{2} + x_{3} \\ \text{s.t.} \quad & \color{red}{x_{1} + 3x_{2} + 2x_{3} \leq 4} && (y_{1}^{+})\\& \color{red}{- x_{1} - 3x_{2} - 2x_{3} \leq -4} \quad && (y_{1}^{-})\\& x_{1} - 2 x_{2} + 3x_{3} \leq 5 && (y_{2})\\& x_{1}, x_{2}, x_{3} \geq 0 \end{alignat*} $$ ただし,各制約について,末尾の括弧内は,対応する双対問題の未知変数(双対変数)を表す. ### 双対問題 $$ \begin{align*} \min_{y_{1}^{+}, y_{1}^{-}, y_{2}} \quad & 4 \color{red}{\left(y_{1}^{+}-y_{1}^{-}\right)} + 5 y_{2} \\ \text{s.t.} \quad & \color{red}{\left(y_{1}^{+}-y_{1}^{-}\right)} + y_{2} \geq 3 \\& 3 \color{red}{\left(y_{1}^{+}-y_{1}^{-}\right)} - 2 y_{2} \geq 4 \\& 2 \color{red}{\left(y_{1}^{+}-y_{1}^{-}\right)} + 3 y_{2} \geq 1 \\& y_{1}^{+}, y_{1}^{-}, y_{2} \geq 0 \end{align*} $$ ### $y_{1} = y_{1}^{+} - y_{1}^{-}$ とおく $$ \begin{align*} \min_{\color{red}{y_{1}}, y_{2}} \quad & 4 \color{red}{y_{1}} + 5 y_{2} \\ \text{s.t.} \quad & \color{red}{y_{1}} + y_{2} \geq 3 \\& 3 \color{red}{y_{1}} - 2 y_{2} \geq 4 \\& 2 \color{red}{y_{1}} + 3 y_{2} \geq 1 \\& \color{red}{y_{1} \text{ is free}}, y_{2} \geq 0 \end{align*} $$ ==**等式制約**== に対応する ==**双対変数**== は _非負制約を持たない_ ## 主問題の未知変数が非負制約を持たない場合 ### 非負制約を持たない未知変数を持つ線形計画問題 $$ \begin{align*} \min_{\color{red}{y_{1}}, y_{2}} \quad & 4 \color{red}{y_{1}} + 5 y_{2} \\ \text{s.t.} \quad & \color{red}{y_{1}} + y_{2} \geq 3 \\& 3 \color{red}{y_{1}} - 2 y_{2} \geq 4 \\& 2 \color{red}{y_{1}} + 3 y_{2} \geq 1 \\& \color{red}{y_{1} \text{ is free}}, y_{2} \geq 0 \end{align*} $$ ### 標準最小化問題 $$ \begin{alignat*}{3} \min_{y_{1}^{+}, y_{1}^{-}, y_{2}} \quad & 4 \color{red}{\left(y_{1}^{+}-y_{1}^{-}\right)} + 5 y_{2} \\ \text{s.t.} \quad & \color{red}{\left(y_{1}^{+}-y_{1}^{-}\right)} + y_{2} \geq 3 &&(x_{1})\\& 3 \color{red}{\left(y_{1}^{+}-y_{1}^{-}\right)} - 2 y_{2} \geq 4 &&(x_{2})\\& 2 \color{red}{\left(y_{1}^{+}-y_{1}^{-}\right)} + 3 y_{2} \geq 1 &&(x_{3})\\& y_{1}^{+}, y_{1}^{-}, y_{2} \geq 0 \end{alignat*} $$ ただし,各制約について,末尾の括弧内は,対応する双対問題の未知変数(双対変数)を表す. ### 双対問題 $$ \begin{align*} \max_{x_{1}, x_{2}, x_{3}} \quad & 3 x_{1} + 4 x_{2} + x_{3} \\ \text{s.t.} \quad & \color{red}{x_{1} + 3x_{2} + 2x_{3} \leq 4} \\& \color{red}{- x_{1} - 3x_{2} - 2x_{3} \leq -4} \\& x_{1} - 2 x_{2} + 3x_{3} \leq 5 \\& x_{1}, x_{2}, x_{3} \geq 0 \end{align*} $$ ### 線形式 $\lesseqgtr$ 定数→線形式$=$定数 $$ \begin{align*} \max_{x_{1}, x_{2}, x_{3}} \quad & 3 x_{1} + 4 x_{2} + x_{3} \\ \text{s.t.} \quad & \color{red}{x_{1} + 3x_{2} + 2x_{3} = 4} \\& x_{1} - 2 x_{2} + 3x_{3} \leq 5 \\& x_{1}, x_{2}, x_{3} \geq 0 \end{align*} $$ ==**非負制約を持たない変数**== に対応した双対問題の ==**制約条件**== (双対制約)は _等式になる_. # 練習 (提出は不要) 前回の講義で紹介した3つの問題: 1. 食生活問題 2. 輸送問題 3. 割当問題 のそれぞれについて,双対問題を導出せよ.