---
# System prepended metadata

title: 2020年度 交通社会システム論<br>第3回：線形計画問題(2) 双対問題
tags: [MTNS-2020, ' lecture', ' linear programming']

---

---
lang: ja
tags: MTNS-2020, lecture, linear programming
---
# 2020年度 交通社会システム論<br>第3回：線形計画問題(2) 双対問題
[ポータルへ戻る](https://hackmd.io/@nagae/MTNS_2020)
<div style="text-align: center">

このページへは以下のQRコードまたはURLからアクセスできます：
![](https://i.imgur.com/9XdcYLZ.png)
<code style="font-size:20pt">https://hackmd.io/@nagae/MTNS_2020-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. 割当問題

のそれぞれについて，双対問題を導出せよ．