[最優化理論與技術]線性規划


線性規划

線性規划的標准型

線性規划模型 ( LP )

  1. 一組決策變量
  2. 一個線性目標函數
  3. 一組線性約束條件

一般形式:

\[\min (\max ) \sum_{i=1}^{n} c_{i} x_{i} \\ s.t.\left\{\begin{array}{c}{a_{11} x_{1}+a_{12} x_{2}+\cdots+a_{1 n} x_{n} \geq(=, \leq) b_{1}} \\ {a_{21} x_{1}+a_{22} x_{2}+\cdots+a_{2 n} x_{n} \geq(=, \leq) b_{2}} \\ {\cdots} \\ {a_{m 1} x_{1}+a_{m 2} x_{2}+\cdots+a_{m n} x_{n} \geq(=, \leq) b_{m}} \\ {x_{i} \geq(=, \leq) 0, i=1,2, \cdots, n}\end{array}\right. \]

標准型:

\[\max \sum_{i=1}^{n} c_{i} x_{i} \quad \text { s.t. }\left\{\begin{array}{c}{a_{11} x_{1}+a_{12} x_{2}+\cdots+a_{1 n} x_{n}=b_{1}} \\ {a_{21} x_{1}+a_{22} x_{2}+\cdots+a_{2 n} x_{n}=b_{2}} \\ {\cdots} \\ {x_{i} \geq 0, i=1,2, \cdots, n}\end{array}\right. \]

其中,記 \(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}\),則線性規划標准型記為

\[\begin{array}{l}{\max \quad c^{T} x} \\ {\text { s.t. }\left\{\begin{array}{l}{A x=b} \\ {x \geq 0}\end{array}\right.}\end{array} \]

化標准型

  1. 目標函數

    原問題目標函數:\(\min \quad c^{T} x \quad \Rightarrow \max \quad-c^{T} x\)

  2. 約束條件

    • 原問題條件:\(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.\)

圖解法

  1. 畫出可行域范圍
  2. 利用等值線平移方法求極值點

線性規划解的概念和性質

\[\begin{array}{c}{(L P) \quad \max \quad z=c^{T} x \quad(1)} \\ {\text { s.t. }\left\{\begin{array}{cc}{A x=b} & {\text { (2) }} \\ {x \geq 0} & {\text { (3) }}\end{array}\right.}\end{array} \]

可行解:滿足 (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\) 的頂點

單純形法

算法思路

從一個基本可行解開始,判斷其是否為最優解,若不是則跳到下一個基本可行解,直到找到最優解。

  1. 如何得到第一個基本可行解
  2. 如何判斷是否是最優解
  3. 如何從一個基本可行解變換到另一個基本可行解

初始基本可行解

\(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}\) 為初始基變量。

最優解判定條件

\[(\boldsymbol{L P}) \max z=\sum_{i=1}^{n} c_{i} \boldsymbol{x}_{i} \quad \text { s.t. }\left\{\begin{array}{c}{a_{11} x_{1}+a_{12} x_{2}+\cdots+a_{1 n} x_{n}=b_{1}} \\ {a_{21} x_{1}+a_{22} x_{2}+\cdots+a_{2 n} x_{n}=b_{2}} \\ {\cdots} \\ {a_{m 1} x_{1}+a_{m 2} x_{2}+\cdots+a_{m n} x_{n}=b_{m}} \\ {x_{i} \geq 0, i=1,2, \cdots, n}\end{array}\right. \]

設經過迭代后有

\[\left\{\begin{array}{l}{x_{1}=b_{1}^{\prime}-\sum_{j=m+1}^{n} a_{1 j}^{\prime} x_{j}} \\ \vdots\\{x_{m}=b_{m}^{\prime}-\sum_{j=m+1}^{n} a_{m j}^{\prime} x_{j}}\end{array}\right.(1) \]

\(x_1,...,x_m\) 為基變量,\(x_{m+1},...,x_n\) 為非基變量。

代入目標函數有

\[z=\sum_{i=1}^{m} c_{i} b_{i}^{\prime}+\sum_{j=m+1}^{n}\left(c_{j}-\sum_{i=1}^{m} c_{i} a_{i j}^{\prime}\right) x_{j} \]

\(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}\),則

\[z=z_{0}+\sum_{j=m+1}^{n} \sigma_{j} x_{j} \]

\(\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)\) ,改寫成

\[(L P) \quad \max \quad z=z_{0}+\sum_{i=m+1}^{n} \sigma_{i} x_{i} \]

\[\text { s.t. }\left\{\begin{aligned} x_{1}+a_{1, m+1} x_{m+1}+\cdots+a_{1 n} x_{n} &=b_{1} \\ x_{2}+a_{2, m+1} x_{m+1}+\cdots+a_{2 n} x_{n} &=b_{2} \\ x_{m}+a_{m, m+1} x_{m+1}+\cdots+a_{m n} x_{n} &=b_{m} \\ x_{i} \geq 0, i =1,2, \cdots, n \end{aligned}\right. \]

則單純形表為

\(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)式計算

\[\boldsymbol{\theta}=\min \left\{\frac{\boldsymbol{b}_{i}^{\prime}}{\boldsymbol{a}_{i k}^{\prime}} | \boldsymbol{a}_{i k}^{\prime}>\boldsymbol{0}\right\} :=\frac{\boldsymbol{b}_{l}^{\prime}}{\boldsymbol{a}_{l k}^{\prime}} \]

  • \(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\) 為離基變量。

單純性法算法步驟

  1. 確定初始基本可行解,建立初始單純形表

  2. 看檢驗數,若 \(\sigma_j \le 0(j=m+1,..,n)\) 則當前基本可行解就是最優解,算法結束。否則轉(3)

  3. 若存在 \(\sigma_k>0\) 使得其對應的變量 \(x_k\) 的系數列向量 \(P_k\le0\),則線性規划問題的解無界,算法結束。否則轉(4)

  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)

  5. \(a_{lk}\) 為主元旋轉。即利用行變換,將第 \(k\) 個系數列向量變換為只有 \(a_{lk}=1\) 其他元素都為 0 的列。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM