線性規划
線性規划的標准型
線性規划模型 ( LP )
- 一組決策變量
- 一個線性目標函數
- 一組線性約束條件
一般形式:
標准型:
其中,記 \(c=\left(c_{1}, c_{2}, \cdots, c_{n}\right)^{T}, b=\left(b_{1}, b_{2}, \cdots, b_{m}\right)^{T}, x=\left(x_{1}, x_{2}, \cdots, x_{n}\right)^{T},\boldsymbol{A}=\left(a_{i j}\right)_{m \times n}\),則線性規划標准型記為
化標准型
-
目標函數
原問題目標函數:\(\min \quad c^{T} x \quad \Rightarrow \max \quad-c^{T} x\)
-
約束條件
-
原問題條件:\(a_{i 1} x_{1}+a_{i 2} x_{2}+\cdots+a_{i n} x_{n} \leq b_{i}\)
\(\Rightarrow\left\{\begin{array}{c}{a_{i 1} x_{1}+a_{i 2} x_{2}+\cdots+a_{i n} x_{n}+x_{n+i}=b_{i}} \\ {x_{n+i} \geq 0}\end{array}\right.\),\(x_{n+i}\) 稱為松弛變量
-
原問題條件:\(a_{i 1} x_{1}+a_{i 2} x_{2}+\cdots+a_{i n} x_{n} \geq b_{i}\)
\(\Rightarrow\left\{\begin{array}{c}{a_{i 1} x_{1}+a_{i 2} x_{2}+\cdots+a_{i n} x_{n}-x_{n+i}=b_{i}} \\ {x_{n+i} \geq 0}\end{array}\right.\),\(x_{n+i}\) 稱為剩余變量
-
原問題:\(x_i\) 無非負約束,則令\(\left\{\begin{aligned} \boldsymbol{x}_{i} &=\boldsymbol{u}_{i}-\boldsymbol{v}_{i} \\ \boldsymbol{u}_{i}, \boldsymbol{v}_{i} & \geq \mathbf{0} \end{aligned}\right.\)
-
圖解法
- 畫出可行域范圍
- 利用等值線平移方法求極值點
線性規划解的概念和性質
可行解:滿足 (2)(3) 式的解 \(x=(x_1,x_2,...,x_n)^T\) 稱為 \((LP)\) 的可行解
可行域:\(D=\{x | A x=b, x \geq 0\}\)
- 線性規划問題的可行域 \(D\) 是凸集
線性規划解的概念
基:設 \(A\) 為 \(m \times n\) 的系數矩陣,秩為 \(m\) 。若 \(B\) 為 \(A\) 中 \(m \times m\) 階的非退化子陣,則稱 \(B\) 為 \(A\) 的 (或 \((LP )\) 問題) 一個基。
- 非退化子陣:又稱 “非異矩陣”、“滿秩矩陣”,矩陣行列式 \(|A|\ne0\)。\(n\) 階方陣 \(A\) 是非退化的充要條件為 \(A\) 是可逆矩陣。
基向量:設基 \(\boldsymbol{B}=\left(\boldsymbol{P}_{i 1}, \boldsymbol{P}_{i 2}, \cdots, \boldsymbol{P}_{i m}\right)\),稱 \(\left(\boldsymbol{P}_{i 1}, \boldsymbol{P}_{i 2}, \cdots, \boldsymbol{P}_{i m}\right)\) 為基向量。
基變量:\(\boldsymbol{P}_{i m}\)對應的變量 \(x_m\),不是基變量的變量稱為非基變量。
基本解:取線性規划的基 \(B\),令非基變量取0,\(\left(B^{-1} b, 0\right)^{T}\) 為對應於基 \(B\) 的基本解。
基本可行解:滿足線性規划 \((LP)\) 問題條件(3) 的基本解為基本可行解。
- 線性規划 \((LP)\) 問題的解 \(x\) 是基本可行解的充要條件是 \(x\) 是可行域 \(D\) 的頂點
單純形法
算法思路
從一個基本可行解開始,判斷其是否為最優解,若不是則跳到下一個基本可行解,直到找到最優解。
- 如何得到第一個基本可行解
- 如何判斷是否是最優解
- 如何從一個基本可行解變換到另一個基本可行解
初始基本可行解
大 \(M\) 法:增加人工變量使得 \(z=\sum_{i=1}^{n} c_{i} x_{i}-M x_{n+1}-\cdots-M x_{n+m}\),取 \(\boldsymbol{x}_{n+1}, \cdots, \boldsymbol{x}_{n+m}\) 為初始基變量。
最優解判定條件
設經過迭代后有
則 \(x_1,...,x_m\) 為基變量,\(x_{m+1},...,x_n\) 為非基變量。
代入目標函數有
令 \(z_0=\sum_{i=1}^{m} c_{i} b_{i}^{\prime}\),\(\sigma_j=c_{j}-\sum_{i=1}^{m} c_{i} a_{i j}^{\prime}\),則
稱 \(\sigma_j\) 為檢驗函數。
- 若 \(x^*=(b_1^*,...,b_m^*,0,...,0)^T\) 是對應於基 \(B\) 的一個基本可行解,且對任意 \(m+1 \le j \le n\),有 \(\sigma_j \le 0\),則 \(x^*\) 是最優解。
- 若 \(x^*=(b_1^*,...,b_m^*,0,...,0)^T\) 是對應於基 \(B\) 的一個基本可行解,且對任意 \(m+1 \le j \le n\),有 \(\sigma_j \le 0\),且存在 \(\sigma_{m+k}=0(k \ge 0)\) ,則線性規划問題有無窮多最優解。
單純形表
根據上節,將線性規划問題 \((LP)\) ,改寫成
則單純形表為
| \(x_ 1\) | \(x_2\) | \(x_ m\) | \(x_ {m+1}\) | \(x_n\) | \(b\) | ||
|---|---|---|---|---|---|---|---|
| 1 | 0 | \(\cdots\) | 0 | \(a_{1,m+1}\) | $\cdots $ | \(a_{1n}\) | \(b_1\) |
| 0 | 1 | \(\cdots\) | 0 | \(a_{2,m+1}\) | \(\cdots\) | \(a_{2n}\) | \(b_2\) |
| $\vdots $ | \(\vdots\) | \(\vdots\) | \(\vdots\) | \(\vdots\) | $\vdots $ | ||
| 0 | 0 | \(\cdots\) | 1 | \(a_{m,m+1}\) | \(\cdots\) | \(a_{mn}\) | \(b_m\) |
| 0 | 0 | $ \cdots $ | 0 | \(\sigma_{m+1}\) | $ \cdots$ | \(\sigma_n\) | \(-z_0\) |
- 包含一個單位子矩陣作為基矩陣,它所對應的變量是基變量
- 最后一行稱為檢驗數行,其中基變量的檢驗數為0
- 最后一列的元素對應當前基變量的取值
- 第 \(m+1\) 行、第 \(n+1\) 列的元素 \(-z_0\) ,表示當前基本可行解對應的目標函數值的相反數
基變換
入基變量:可選取最大的 \(\sigma_j\) 對應的變量作為入基變量
離基變量:設入基變量 \(x_k\),由(1)式計算
-
用 \(x:=y\) 表示命題 \(x\) 定義為等於 \(y\)
-
結合(1)式計算需注意,\(a_{lk}\) 前面符號是減號
\({x_{m}=b_{m}^{\prime}-\sum_{j=m+1}^{n} a_{m j}^{\prime} x_{j}}\)
選取 \(x_l\) 為離基變量。
單純性法算法步驟
-
確定初始基本可行解,建立初始單純形表
-
看檢驗數,若 \(\sigma_j \le 0(j=m+1,..,n)\) 則當前基本可行解就是最優解,算法結束。否則轉(3)
-
若存在 \(\sigma_k>0\) 使得其對應的變量 \(x_k\) 的系數列向量 \(P_k\le0\),則線性規划問題的解無界,算法結束。否則轉(4)
-
設 \(\max \left(\sigma_{j}>0\right)=\sigma_{k}\),選取 \(x_k\) 為入基變量。計算
\[\boldsymbol{\theta}=\min \left\{\frac{\boldsymbol{b}_{i}}{\boldsymbol{a}_{i k}} | \boldsymbol{a}_{i k}>\boldsymbol{0}\right\} :=\frac{\boldsymbol{b}_{l}}{\boldsymbol{a}_{l k}} \]選取 \(x_l\) 為離基變量。轉(5)
-
以 \(a_{lk}\) 為主元旋轉。即利用行變換,將第 \(k\) 個系數列向量變換為只有 \(a_{lk}=1\) 其他元素都為 0 的列。
