日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【运筹学】线性规划数学模型 ( 单纯形法原理 | 单纯形法流程 | 查找初始基可行解 )

發布時間:2025/6/17 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【运筹学】线性规划数学模型 ( 单纯形法原理 | 单纯形法流程 | 查找初始基可行解 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、單純形法原理
  • 二、單純形法流程
  • 三、初始的基可行解查找





一、單純形法原理



單純形法的理論基礎 :


定理 111 ( 可行域是凸集 ) : 如果線性規劃的問題 存在可行解 , 其 可行域 必定是 凸集 ;

定理 222 ( 基可行解是凸集頂點 ) : 線性規劃的 基可行解 XBX_BXB? 對應了上述 可行域 ( 凸集 ) 的頂點位置 ;

定理 333 ( 某個基可行解是最優解 ) : 如果線性規劃問題 存在最優解 , 那么 一定存在一個基可行解是最優解 ;


參考上一篇博客 【運籌學】線性規劃 圖解法 ( 唯一最優解 | 無窮最優解 | 無界解 | 無可行解 ) 進行分析 :


給定線性規劃 :

maxZ=2x1+x2s.t={x1+1.9x2≥3.8x1?1.9x2≤3.8x1+1.9x2≤10.2x1?1.9x2≥?3.8x1,x2≥0\begin{array}{lcl} max Z = 2x_1 + x_2\\\\ s.t = \begin{cases} x_1 + 1.9x_2 \geq 3.8\\\\ x_1 - 1.9x_2 \leq 3.8\\\\ x_1 + 1.9x_2 \leq 10.2\\\\ x_1 - 1.9x_2 \geq -3.8\\\\ x_1 , x_2 \geq 0 \end{cases} \end{array}maxZ=2x1?+x2?s.t=??????????????????????????????????x1?+1.9x2?3.8x1??1.9x2?3.8x1?+1.9x2?10.2x1??1.9x2??3.8x1?,x2?0??


使用圖解法進行分析 , 得到如下結果 ;

使用迭代的思想進行求解 :

  • 無限個解中迭代 : 上圖中的 可行域 DDD 中的點是無限的 , 可以在所有的無限個可行域 DDD 解中進行迭代 , 逐個迭代很難 ;

  • 有限個解中迭代 : 因此選取 可行域 ( 凸集 ) 的頂點 , 也就是 基可行解 進行迭代 , 該線性規劃問題的基可行解是有限的 , 只有 444 個 , 即該凸集有 444 個頂點 ;

上圖的凸集中的 444 個頂點 , 必然有一個是最優解 , 因此迭代的時候 , 不用從 DDD 可行域中的無限個點中進行迭代 , 只需要在有限個基可行解中進行迭代 , 即可找到最優解 ;


單純形法的原理的基礎就是源自上述理論 , 在線性規劃的有限個基可行解中 , 必定存在一個解釋最優解 , 逐個迭代 , 將這個最優解找出即可 ;


從無限個可行解中進行迭代 , 到有限個基可行解中進行迭代 , 簡單了很多 ;

但是對于 m×nm \times nm×n 階的線性規劃系數矩陣 , 其基可行解的個數可能有 CnmC_n^mCnm? 個 , 如果 nnnmmm 很大的話 , 基可行解的數目還是很大 , 這是一個指數級的數 , 因此使用多項式算法 , 完成上述操作 , 計算量還是很大的 ;


這里使用單純形法 , 進行迭代 , 要比使用多項式法計算量更少 ;





二、單純形法流程



單純形法的基本流程 :


① 初始基可行解 : 首先找到初始的基可行解 ;

② 判定是否最優解 : 需要一個準則 , 判定該初始基可行解 , 是否是最優解 ; 這里是單純形法最核心問題 ;

③ 是最優解 : 如果該基可行解是最優解 , 那么結束迭代 ;

④ 不是最優解 : 如果該基可行解不是最優解 , 那么迭代到下一個基可行解 , 繼續判定是否是最優解 ; 如何迭代也需要一個準則 ;



這里涉及到了兩個準則 :

  • 判斷最優解 : 判斷一個 基可行解 是否是最優解 ;
  • 迭代原則 : 如何從一個 基可行解 迭代到下一個基可行解 ;


單純形法涉及到的問題 :


① 初始解 : 如何找到初始基可行解 ;

② 最優解 : 如何找到一個準則 , 用于判定基可行解是否是最優解 ;

③ 迭代解 : 如果一個基可行解不滿足準則 , 如何去選擇下一個基可行解進行迭代 ;

解決上述 333 個問題 , 基可行解的算法 , 也就可以得出 ;





三、初始的基可行解查找



如何去找初始的基可行解 , 首先要找到一個 , 并且該基是 可行基 ;



對于 m×nm \times nm×n 階的系數矩陣 :


基 :C(n,m)C(n, m)C(n,m) 個子矩陣中找到基矩陣 , 基矩陣的條件是 mmm 階方陣是可逆的 ;

參考 【運籌學】線性規劃數學模型 ( 求解基矩陣示例 | 矩陣的可逆性 | 線性規劃表示為 基矩陣 基向量 非基矩陣 非基向量 形式 ) 一、求解基矩陣示例 博客章節 , [51?110?106201]\begin{bmatrix} &5 & 1 & -1 & 1 & 0 & \\\\ & -10 & 6 & 2 & 0 & 1 & \end{bmatrix}????5?10?16??12?10?01????? 系數矩陣 , 有 C(5,2)=10C (5 , 2) = 10C(5,2)=10 個子矩陣 , 但是只有 999 個是可逆的 ;


基矩陣如下 :


B1=[51?106]B_1 = \begin{bmatrix} &5 & 1 & \\\\ & -10 & 6 & \end{bmatrix}B1?=????5?10?16????? , B2=[1?162]B_2 = \begin{bmatrix} &1 & -1 & \\\\ & 6 & 2 & \end{bmatrix}B2?=????16??12????? , B3=[50?101]B_3 = \begin{bmatrix} &5 & 0 & \\\\ & -10 & 1 & \end{bmatrix}B3?=????5?10?01????? ,

B4=[1160]B_4 = \begin{bmatrix} &1 & 1 & \\\\ & 6 & 0 & \end{bmatrix}B4?=????16?10????? , B5=[51?100]B_5 = \begin{bmatrix} &5 & 1 & \\\\ & -10 & 0 & \end{bmatrix}B5?=????5?10?10????? , B6=[?1021]B_6 = \begin{bmatrix} &-1 & 0 & \\\\ & 2 & 1 & \end{bmatrix}B6?=?????12?01????? ,

B7=[?1120]B_7 = \begin{bmatrix} &-1 & 1 & \\\\ & 2 & 0 & \end{bmatrix}B7?=?????12?10????? , B8=[11061]B_8 = \begin{bmatrix} &1 & 10 & \\\\ & 6 & 1 & \end{bmatrix}B8?=????16?101????? , B9=[1001]B_9 = \begin{bmatrix} &1 & 0 & \\\\ & 0 & 1 & \end{bmatrix}B9?=????10?01????? ;



選擇一個基矩陣 , 每個基矩陣都唯一對應一個基解 , 如果該解大于等于 000 , 說明該解是基可行解 , 那么該選擇的基矩陣 , 就是可行基 ;


參考 【運籌學】線性規劃數學模型 ( 線性規劃求解 | 根據非基變量的解得到基變量解 | 基解 | 基可行解 | 可行基 ) 三、基解 博客章節 , 基解的公式是

XB=B?1bX_B = B^{-1}bXB?=B?1b


使用 B1=[51?106]B_1 = \begin{bmatrix} &5 & 1 & \\\\ & -10 & 6 & \end{bmatrix}B1?=????5?10?16????? 矩陣作為基矩陣 , 求出其對應的基可行解 , 代入上述公式 :


XB=B?1bXB=[51?106]?1×[32]\begin{array}{lcl} X_B = B^{-1}b\\\\ X_B = \begin{bmatrix} &5 & 1 & \\\\ & -10 & 6 & \end{bmatrix}^{-1} \times \begin{bmatrix} &3 & \\\\ & 2 & \end{bmatrix} \end{array}XB?=B?1bXB?=????5?10?16??????1×????32??????


如果上述 XBX_BXB? 的兩個分量 (x1x2)\begin{pmatrix} x_1\\ x_2 \\ \end{pmatrix}(x1?x2??) 都大于 0 , 說明該解釋基可行解 , 該基矩陣 B1B_1B1? 是可行基 ;



使用算法進行迭代 , 一個個判斷太浪費時間 , 選擇 B1B_1B1? 作為基矩陣 , 計算很復雜 , 這里選擇 B9=[1001]B_9 = \begin{bmatrix} &1 & 0 & \\\\ & 0 & 1 & \end{bmatrix}B9?=????10?01????? 作為基矩陣 , 這是個單位陣 , 其逆矩陣還是其單位陣本身 ;

B9B_9B9? 基矩陣對應的基變量是 XB=(x4x5)X_B = \begin{pmatrix} x_4\\ x_5 \\ \end{pmatrix}XB?=(x4?x5??) , 將基矩陣代入 XB=B?1bX_B = B^{-1}bXB?=B?1b 公式 ;

XB=B?1bXB=[1001]?1×[32]XB=[1001]×[32]XB=[32]\begin{array}{lcl} X_B = B^{-1}b\\\\ X_B = \begin{bmatrix} &1 & 0 & \\\\ & 0 & 1 & \end{bmatrix}^{-1} \times \begin{bmatrix} &3 & \\\\ & 2 & \end{bmatrix}\\\\ X_B = \begin{bmatrix} &1 & 0 & \\\\ & 0 & 1 & \end{bmatrix}\times \begin{bmatrix} &3 & \\\\ & 2 & \end{bmatrix}\\\\ X_B = \begin{bmatrix} &3 & \\\\ & 2 & \end{bmatrix} \end{array}XB?=B?1bXB?=????10?01??????1×????32?????XB?=????10?01?????×????32?????XB?=????32??????


由上述計算過程得到 XB=(x4x5)=(32)X_B = \begin{pmatrix} x_4\\ x_5 \\ \end{pmatrix} = \begin{pmatrix} 3\\ 2 \\ \end{pmatrix}XB?=(x4?x5??)=(32?) 結果 , x4x_4x4?x5x_5x5? 都大于 000 , (00032)\begin{pmatrix} 0\\ 0\\ 0\\ 3\\ 2 \\ \end{pmatrix}???????00032????????是基可行解 , 該 XBX_BXB? 是可行基 ;


使用 B1B_1B1? 作為基矩陣 , 不好計算 , 還需要求 B1B_1B1? 矩陣的逆矩陣 , B9B_9B9? 是單位陣 , 所有的 單位陣 III 都是可行基 , 初始基可行解選取時 , 優先選擇單位陣 ;

總結

以上是生活随笔為你收集整理的【运筹学】线性规划数学模型 ( 单纯形法原理 | 单纯形法流程 | 查找初始基可行解 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。