【运筹学】线性规划 人工变量法 ( 单纯形法总结 | 人工变量法引入 | 人工变量法原理分析 | 人工变量法案例 )
文章目錄
- 一、單純形法總結
- 二、人工變量法引入
- 三、人工變量法案例
- 四、線性規劃標準型
- 五、人工變量法
- 六、人工變量法解分析
一、單純形法總結
求解線性規劃 , 使用的是單純形法 ;
迭代轉化 : 其將 在無窮多個可行解中迭代 , 轉化為了 在有限個基可行解中進行迭代 ;
單純形法理論基礎 : 將迭代范圍由大集合轉為小集合 , 不會漏掉最優解 , 根據線性規劃定理 , 只要有最優解 , 該最優解一定是基可行解 ;
單純形法求解流程 :
- ① 找到單位陣
- ② 最優準則 : 計算檢驗數
- ③ 迭代準則 : 先根據檢驗數找到入基變量 , 再根據常量除以入基變量大于 000 系數 , 選擇小的值對應的基變量作為出基變量 ;
- ④ 中心元 : 找到 入基變量 與 出基變量 交叉點元素 , 這是中心元 , 中心元轉為 111 , 同一列另一個系數轉為 000 ; 然后繼續根據最優準則計算檢驗數 , 轉到步驟 ② ;
二、人工變量法引入
上述單純形的解法是 從單位陣出發的 , 所有的前提是有單位陣 , 線性規劃中可能不存在單位陣 , 如果線性規劃轉化為單位陣時 , 沒有單位陣 , 就需要使用 人工變量法 , 構造一個單位陣 ;
下面通過一個案例來介紹人工變量法的使用 ;
三、人工變量法案例
求解線性規劃 : 使用人工變量法求解線性規劃 ;
maxZ=3x1+2x2?x3s.t{?4x1+3x2+x3≥4x1?x2+2x3≤10?2x1+2x2?x3=?1xj≥0(j=1,2,3)\begin{array}{lcl} max Z = 3x_1 + 2x_2 - x_3 \\ \\ s.t\begin{cases} -4 x_1 + 3x_2 + x_3 \geq 4 \\\\ x_1 - x_2 + 2x_3 \leq 10 \\\\ -2x_1 + 2x_2 - x_3 = -1 \\\\ x_j \geq 0 & (j = 1 , 2 , 3 ) \end{cases}\end{array}maxZ=3x1?+2x2??x3?s.t?????????????????????????4x1?+3x2?+x3?≥4x1??x2?+2x3?≤10?2x1?+2x2??x3?=?1xj?≥0?(j=1,2,3)??
四、線性規劃標準型
參考 【運籌學】線性規劃數學模型標準形式 ( 標準形式 | 目標函數轉化 | 決策變量轉化 | 約束方程轉化 | 固定轉化順序 | 標準形式轉化實例 ) 線性規劃 普通形式 -> 標準形式 轉化順序說明 博客 , 先處理變量約束 , 再將不等式轉為等式 , 最后更新目標函數 ;
1 . 處理約束變量 : 所有的約束變量都大于等于 000 , 這里無需處理 ;
2 . 將不等式轉為等式 :
① 方程 111 轉為等式 : 方程 111 是大于等于不等式 , 需要在方程左側減去剩余變量 x4x_4x4? ;
?4x1+3x2+x3?x4=4-4 x_1 + 3x_2 + x_3 - x_4 = 4?4x1?+3x2?+x3??x4?=4
② 方程 222 轉為等式 : 方程 222 是小于等于不等式 , 需要在方程左側加上松弛變量 x5x_5x5? ;
x1?x2+2x3+x5=10x_1 - x_2 + 2x_3 + x_5 = 10x1??x2?+2x3?+x5?=10
3 . 方程 333 轉為符合要求的等式 : 方程 333 是等式 , 但是其右側的常數小于 000 , 這里需要在等式兩邊都乘以 ?1-1?1 , 使右側的常數大于等于 000 ;
2x1?2x2+x3=12x_1 - 2x_2 + x_3 = 12x1??2x2?+x3?=1
4 . 處理目標函數取最大值 : 目標函數就是取最大值 , 無需處理 ;
5 . 最終的標準形結果是 :
maxZ=3x1+2x2?x3s.t{?4x1+3x2+x3?x4=4x1?x2+2x3+x5=102x1?2x2+x3=1xj≥0(j=1,2,3,4,5)\begin{array}{lcl} max Z = 3x_1 + 2x_2 - x_3 \\ \\ s.t\begin{cases} -4 x_1 + 3x_2 + x_3 - x_4 = 4 \\\\ x_1 - x_2 + 2x_3 + x_5 = 10 \\\\ 2x_1 - 2x_2 + x_3 = 1 \\\\ x_j \geq 0 \quad (j = 1 , 2 , 3, 4, 5 ) \end{cases}\end{array}maxZ=3x1?+2x2??x3?s.t?????????????????????????4x1?+3x2?+x3??x4?=4x1??x2?+2x3?+x5?=102x1??2x2?+x3?=1xj?≥0(j=1,2,3,4,5)??
五、人工變量法
將上述轉化完畢的標準型的系數矩陣補全 :
maxZ=3x1+2x2?x3+0x4+0x5s.t{?4x1+3x2+x3?x4+0x5=4x1?x2+2x3+0x4+x5=102x1?2x2+x3+0x4+0x5=1xj≥0(j=1,2,3,4,5)\begin{array}{lcl} max Z = 3x_1 + 2x_2 - x_3 + 0x_4 + 0x_5 \\ \\ s.t\begin{cases} -4 x_1 + 3x_2 + x_3 - x_4 + 0x_5 = 4 \\\\ x_1 - x_2 + 2x_3 + 0x_4 + x_5 = 10 \\\\ 2x_1 - 2x_2 + x_3 + 0x_4 + 0x_5 = 1 \\\\ x_j \geq 0 \quad (j = 1 , 2 , 3, 4, 5 ) \end{cases}\end{array}maxZ=3x1?+2x2??x3?+0x4?+0x5?s.t?????????????????????????4x1?+3x2?+x3??x4?+0x5?=4x1??x2?+2x3?+0x4?+x5?=102x1??2x2?+x3?+0x4?+0x5?=1xj?≥0(j=1,2,3,4,5)??
上述約束方程中沒有單位陣 , 無法找到初始基可行解 , 創建初始的單純形表 ;
上述線性規劃中 , 需要找到 3×33 \times 33×3 的單位陣 (100010001)\begin{pmatrix} \quad 1 \quad 0 \quad 0 \quad \\ \quad 0 \quad 1 \quad 0 \quad \\ \quad 0 \quad 0 \quad 1 \quad \\ \end{pmatrix}???100010001???? , 目前只有 x5x_5x5? 的系數列向量是 (010)\begin{pmatrix} \quad 0 \quad \\ \quad 1 \quad \\ \quad 0 \quad \\ \end{pmatrix}???010???? , 這里需要進行如下操作 ;
人工變量法 : 目的是人為制造單位陣 , 添加 222 個或 333 個人工變量 ;
- 方程 111 構造變量 x6x_6x6? : 該變量只出現在第 111 個方程中 ;
?4x1+3x2+x3?x4+0x5+x6=4-4 x_1 + 3x_2 + x_3 - x_4 + 0x_5 + x_6 = 4?4x1?+3x2?+x3??x4?+0x5?+x6?=4
- 方程 222 構造變量 x7x7x7 : 該變量只出現在第 333 個方程中 ;
2x1?2x2+x3+0x4+0x5+x7=12x_1 - 2x_2 + x_3 + 0x_4 + 0x_5 + x_7 = 12x1??2x2?+x3?+0x4?+0x5?+x7?=1
添加了人工變量后 , 變量就變成了 777 個 (x1x2x3x4x5x6x7)\begin{pmatrix} \quad x_1 \quad \\ \quad x_2 \quad \\ \quad x_3 \quad \\ \quad x_4 \quad \\ \quad x_5 \quad \\ \quad x_6 \quad \\ \quad x_7 \quad \\ \end{pmatrix}???????????x1?x2?x3?x4?x5?x6?x7????????????? , 原來的變量只有 555 個 (x1x2x3x4x5)\begin{pmatrix} \quad x_1 \quad \\ \quad x_2 \quad \\ \quad x_3 \quad \\ \quad x_4 \quad \\ \quad x_5 \quad \\ \end{pmatrix}???????x1?x2?x3?x4?x5????????? ; 如果解出該線性規劃的 777 個解 , 去掉后面的 x6,x7x_6 , x_7x6?,x7? 之后 , 該最優解不一定滿足 555 個變量的線性規劃 ;
如果解出的 777 個解中 , x6,x7x_6 , x_7x6?,x7? 都等于 000 , 此時該最優解的前 555 個變量 , 滿足最初的線性規劃解 ;
引入大 MMM : 在目標函數中 , 為 x6,x7x_6 , x_7x6?,x7? 加上系數 ?M-M?M , MMM 是一個抽象數值 , 沒有具體的值 , 其大于給定的任何一個值 ;
maxZ=3x1+2x2?x3+0x4+0x5?Mx6?Mx7max Z = 3x_1 + 2x_2 - x_3 + 0x_4 + 0x_5 - M x_6 - Mx_7maxZ=3x1?+2x2??x3?+0x4?+0x5??Mx6??Mx7?
引入大 MMM 后最優解 x6,x7x_6 , x_7x6?,x7? 必須為 000 : 如果上述 x6,x7x_6 , x_7x6?,x7? 只要大于 000 , 即使很小 , 但是乘以一個很大的負數值 ?M-M?M , 也會極大降低目標函數大小 , 因此只有兩個變量取值為 000 時 , 才能使該解稱為最優解 ;
添加 222 個人工變量后 , 得到 人工變量單純形法 線性規劃模型 :
maxZ=3x1+2x2?x3+0x4+0x5?Mx6?Mx7s.t{?4x1+3x2+x3?x4+0x5+x6+0x7=4x1?x2+2x3+0x4+x5+0x6+0x7=102x1?2x2+x3+0x4+0x5+0x6+x7=1xj≥0(j=1,2,3,4,5,6,7)\begin{array}{lcl} max Z = 3x_1 + 2x_2 - x_3 + 0x_4 + 0x_5 - M x_6 - Mx_7 \\\\ s.t\begin{cases} -4 x_1 + 3x_2 + x_3 - x_4 + 0x_5 + x_6 + 0x_7 = 4 \\\\ x_1 - x_2 + 2x_3 + 0x_4 + x_5 + 0x_6 + 0x_7 = 10 \\\\ 2x_1 - 2x_2 + x_3 + 0x_4 + 0x_5 + 0x_6 + x_7 = 1 \\\\ x_j \geq 0 \quad (j = 1 , 2 , 3, 4, 5 , 6 , 7 ) \end{cases}\end{array}maxZ=3x1?+2x2??x3?+0x4?+0x5??Mx6??Mx7?s.t?????????????????????????4x1?+3x2?+x3??x4?+0x5?+x6?+0x7?=4x1??x2?+2x3?+0x4?+x5?+0x6?+0x7?=102x1??2x2?+x3?+0x4?+0x5?+0x6?+x7?=1xj?≥0(j=1,2,3,4,5,6,7)??
其中的 MMM 是一個很大的數值 , 沒有具體的值 , 可以理解為正無窮 +∞+\infty+∞ , 具體使用單純形法進行計算時 , 將其理解為大于給出的任意一個確定的數值 ;
六、人工變量法解分析
原來的線性規劃稱為 LPLPLP , 添加了人工變量后的新線性規劃為 LPALPALPA ;
-
目標函數值有限 : 只要 LPLPLP 線性規劃 , 可行域不為空集 ?\varnothing? , 那么 LPALPALPA 線性規劃一定能找到一個解 xxx , 使得 f(x)f(x)f(x) 是一個有限的數 , 該有限的數是與 負無窮 ?∞-\infty?∞ 進行對比區分的 ;
-
只要 LPLPLP 線性規劃 有可行解 , 那么 LPALPALPA 線性規劃中的目標函數一定不是 負無窮 ?∞-\infty?∞ ;
-
兩個線性規劃解的關系 : (x0)\begin{pmatrix} \quad x_0 \quad \\ \end{pmatrix}(x0??) 是線性規劃 LPLPLP 的可行解 , (x000)\begin{pmatrix} \quad x_0 \quad \\ \quad 0 \quad \\ \quad 0 \quad \\ \end{pmatrix}???x0?00???? 一定是 LPALPALPA 線性規劃的可行解 , 將該解代入目標函數 , 目標函數一定是一個有限的數 , 不是負無窮 ?∞-\infty?∞ ;
-
解 LPALPALPA 線性規劃 : 構造的 LPALPALPA 輔助線性規劃問題有單位陣 , 選取該單位陣為可行解 , 得到基可行解 , 然后開始進行迭代 ;
只要線性規劃有初始基可行解 , 那么只可能有以下情況
- ① 有最優解
- ② 沒有最優解
最優解情況 : 在有最優解的前提下 ;
- ① 如果人工變量等于 000 , 將人工變量去掉 , 剩余的解就是原來線性規劃 LPLPLP 的最優解 ;
- ② 如果有一個或多個人工變量大于 000 , 那么說明 原線性規劃 LPLPLP 沒有可行解 ;
沒有最優解的情況 :如果 LPALPALPA 線性規劃沒有最優解 , 那么 LPLPLP 線性規劃也沒有最優解 ;
總結
以上是生活随笔為你收集整理的【运筹学】线性规划 人工变量法 ( 单纯形法总结 | 人工变量法引入 | 人工变量法原理分析 | 人工变量法案例 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【运筹学】线性规划 单纯形法 案例二 (
- 下一篇: 【运筹学】线性规划 人工变量法 ( 人工