【运筹学】线性规划数学模型 ( 单纯形法 | 最优解判定原则 | 可行解表示 | 目标函数推导 | 目标函数最大值分析 )
文章目錄
- 一、基矩陣 + 非基矩陣 約束條件
- 二、基矩陣 + 非基矩陣 線性規劃
- 三、線性規劃 可行解
- 四、目標函數 推導
- 五、XN=OX_N = OXN?=O 目標函數最大 分析
- 六、總結
在上一篇博客 【運籌學】線性規劃數學模型 ( 單純形法原理 | 單純形法流程 | 查找初始基可行解 ) 中 , 講解到了使用單純形法求解線性規劃問題 , 需要解決以下三個主要問題 :
- 查找初始基可行解
- 判定是否是最優解
- 如何迭代
該博客中已經講解了如何查找初始基可行解 , 查找初始基可行解時 , 優先選擇單位陣作為基矩陣 , 單位陣 III 對應的基解 , 必定是基可行解 ;
( 如果沒有單位陣 III , 那么后續在討論 )
本博客開始講解 , 如何 判定最優解 ( 最優解是如何確定出來的 ) , 和 如何迭代到下一個基可行解 ;
一、基矩陣 + 非基矩陣 約束條件
目標函數 , 用于判定 111 個基可行解是否是最優解 ;
在 【運籌學】線性規劃數學模型 ( 求解基矩陣示例 | 矩陣的可逆性 | 線性規劃表示為 基矩陣 基向量 非基矩陣 非基向量 形式 ) 博客中 , 根據推導 , 線性規劃的約束條件 , 可以表示為 :
BXB+NXN=bBX_B + NX_N = bBXB?+NXN?=b
二、基矩陣 + 非基矩陣 線性規劃
將上述約束條件代入線性規劃標準形式中
maxZ=∑j=1ncjxj{∑j=1naijxj=bi(i=1,2?m)xj≥0(i=1,2?n)\begin{array}{lcl}max Z = \sum_{j=1}^{n}c_j x_j\\ \\ \begin{cases} \sum_{j=1}^{n} a_{ij}x_j = b_i & (i = 1 , 2 \cdots m) \\ \\x_j \geq 0 & (i = 1 , 2 \cdots n) \end{cases}\end{array}maxZ=∑j=1n?cj?xj???????∑j=1n?aij?xj?=bi?xj?≥0?(i=1,2?m)(i=1,2?n)??
得到如下形式 :
maxZ=CBTXB+CNTXN{BXB+NXN=bxj≥0(i=1,2?n)\begin{array}{lcl}max Z = C_B^TX_B + C_N^TX_N \\ \\ \begin{cases} BX_B + NX_N = b \\ \\x_j \geq 0 & (i = 1 , 2 \cdots n) \end{cases}\end{array}maxZ=CBT?XB?+CNT?XN???????BXB?+NXN?=bxj?≥0?(i=1,2?n)??
假設得到基解 {XB=B?1bXN=O\begin{cases} X_B = B^{-1}b \\ \\X_N = O \end{cases}??????XB?=B?1bXN?=O? , 其中 OOO 表示零矩陣 , 矩陣張紅每個元素的值都是 000 ;
判斷該基解 (XBXN)\begin{pmatrix} X_B \\ X_N \\ \end{pmatrix}(XB?XN??) 是否是最優解 , 需要從目標函數 maxZ=CBTXB+CNTXNmax Z = C_B^TX_B + C_N^TX_NmaxZ=CBT?XB?+CNT?XN? 開始分析 ;
三、線性規劃 可行解
從現在開始不再討論基解了 , 回到之前 , 討論可行解 , XNX_NXN? 可以取值任意合法值 , 而不是取 OOO 矩陣值 , 查看取值其它值的時候 , 目標函數是否有最大值 , 這里 重新進行解的推導 :
在 【運籌學】線性規劃數學模型 ( 線性規劃求解 | 根據非基變量的解得到基變量解 | 基解 | 基可行解 | 可行基 ) 二、根據非基變量的解得到可行解 博客章節 , 在 BXB+NXN=bBX_B + NX_N = bBXB?+NXN?=b 兩端都乘以 B?1B^{-1}B?1 , 然后移項得到了 :
XB=B?1b?B?1NXNX_B = B^{-1}b - B^{-1}NX_NXB?=B?1b?B?1NXN?
將上述可行解 , 列舉出來 :
{XB=B?1b?B?1NXNXN\begin{cases} X_B = B^{-1}b - B^{-1}NX_N \\ \\X_N \end{cases}??????XB?=B?1b?B?1NXN?XN??
四、目標函數 推導
此時進行判定線性規劃可行解 {XB=B?1b?B?1NXNXN\begin{cases} X_B = B^{-1}b - B^{-1}NX_N \\ \\X_N \end{cases}??????XB?=B?1b?B?1NXN?XN?? 中 , XNX_NXN? 取值 OOO 矩陣 , 是否是最好的情況 , 即目標函數達到最大值 , 目標函數如下 :
maxZ=CBTXB+CNTXNmax Z = C_B^TX_B + C_N^TX_NmaxZ=CBT?XB?+CNT?XN?
將 XB=B?1b?B?1NXNX_B = B^{-1}b - B^{-1}NX_NXB?=B?1b?B?1NXN? 代入上述目標函數 :
maxZ=CBT(B?1b?B?1NXN)+CNTXN=CBTB?1b?CBTB?1NXN+CNTXN\begin{array}{lcl} max Z &=& C_B^T ( B^{-1}b - B^{-1}NX_N ) + C_N^TX_N \\\\ &=& C_B^T B^{-1}b - C_B^T B^{-1}NX_N + C_N^TX_N \end{array}maxZ?==?CBT?(B?1b?B?1NXN?)+CNT?XN?CBT?B?1b?CBT?B?1NXN?+CNT?XN??
CBTB?1bC_B^T B^{-1}bCBT?B?1b 計算結果是一個數值常量 , 可以寫成 b0b_0b0? , 與 XXX ( nnn 個決策變量 ) 無關 ;
=b0+(CNT?CBTB?1N)XN\begin{array}{lcl} &=& b_0 + ( C_N^T - C_B^T B^{-1}N )X_N \\\\ \end{array}?=b0?+(CNT??CBT?B?1N)XN?
之前的基解的策略是 , 將 XNX_NXN? 取值為 OOO 零矩陣 , 現在討論 , 要使上述目標函數 maxZmaxZmaxZ 最大 , 分析 XN=OX_N = OXN?=O 是否是最好的選擇 , 即分析 XN=OX_N = OXN?=O 是否是使 maxZmaxZmaxZ 目標函數最大的值 ;
假設 XNX_NXN? 矩陣中的變量值為 (xm+1xm+2?xn)\begin{pmatrix} x_{m+1} \\ x_{m+2} \\ \vdots\\ x_n \end{pmatrix}??????xm+1?xm+2??xn???????? , (CNT?CBTB?1N)( C_N^T - C_B^T B^{-1}N )(CNT??CBT?B?1N) 的計算結果是 (σm+1,σm+2,?,σn)\begin{pmatrix} \sigma_{m+1} , \sigma_{m+2} , \cdots , \sigma_n \end{pmatrix}(σm+1?,σm+2?,?,σn??) , (CNT?CBTB?1N)XN( C_N^T - C_B^T B^{-1}N )X_N(CNT??CBT?B?1N)XN? 結果是 σm+1xm+1+σm+2xm+2+?+σnxn\sigma_{m+1} x_{m+1} + \sigma_{m+2} x_{m+2} + \cdots + \sigma_{n} x_{n}σm+1?xm+1?+σm+2?xm+2?+?+σn?xn?
=b0+(CNT?CBTB?1N)XN=b0+σm+1xm+1+σm+2xm+2+?+σnxn\begin{array}{lcl} &=& b_0 + ( C_N^T - C_B^T B^{-1}N )X_N \\\\ &=& b_0 + \sigma_{m+1} x_{m+1} + \sigma_{m+2} x_{m+2} + \cdots + \sigma_{n} x_{n} \\\\ \end{array}?==?b0?+(CNT??CBT?B?1N)XN?b0?+σm+1?xm+1?+σm+2?xm+2?+?+σn?xn??
五、XN=OX_N = OXN?=O 目標函數最大 分析
當上述 XNX_NXN? 矩陣中的變量值 (xm+1xm+2?xn)\begin{pmatrix} x_{m+1} \\ x_{m+2} \\ \vdots\\ x_n \end{pmatrix}??????xm+1?xm+2??xn???????? 都為 000 時 , 假如上述公式取值最大值 , 即
b0+σm+1xm+1+σm+2xm+2+?+σnxnb_0 + \sigma_{m+1} x_{m+1} + \sigma_{m+2} x_{m+2} + \cdots + \sigma_{n} x_{n}b0?+σm+1?xm+1?+σm+2?xm+2?+?+σn?xn?
取值最大值 ;
在線性規劃約束條件中 , 所有的變量都是大于等于 000 的 , 每個 xjx_jxj? 約束變量取值都可以大于等于 000 , 目前是查看當所有的 xjx_jxj? 變量都取值 000 時 , 目標函數達到最大值的情況 ;
當 XNX_NXN? 取值等于 OOO 零矩陣時 , 目標函數值等于 b0b_0b0? , 當 XNX_NXN? 中有元素取值大于 000 時 , 就會在 b0b_0b0? 基礎上加上一個值 , 如果這個值是 小于等于 000 的 , 那么對應的 xjx_jxj? 取值越大 , 目標函數值越小 ;
因此這里得到 , 在 XN=(xm+1xm+2?xn)X_N=\begin{pmatrix} x_{m+1} \\ x_{m+2} \\ \vdots\\ x_n \end{pmatrix}XN?=??????xm+1?xm+2??xn???????? 非基變量前的系數是小于等于 000 時 , 才能滿足當 XNX_NXN? 中的元素取值等于 000 時 , 目標函數是最大值 ;
因此
b0+σm+1xm+1+σm+2xm+2+?+σnxnb_0 + \sigma_{m+1} x_{m+1} + \sigma_{m+2} x_{m+2} + \cdots + \sigma_{n} x_{n}b0?+σm+1?xm+1?+σm+2?xm+2?+?+σn?xn?
中的 σm+1,σm+2,?,σn\sigma_{m+1} , \sigma_{m+2} , \cdots , \sigma_{n}σm+1?,σm+2?,?,σn? 系數值小于等于 000 , 其中每個系數對應的變量 xjx_{j}xj? 必定是大于等于 000 的值 , 那么系數 σm+1\sigma_{m+1}σm+1? 小于等于 000 時 , 每個變量取值 xj=0x_j = 0xj?=0 , 目標函數達到最小值 ;
六、總結
將線性規劃約束條件表示為 BXB+NXN=bBX_B + NX_N = bBXB?+NXN?=b
進行變換后得到 XB=B?1b?B?1NXNX_B = B^{-1}b - B^{-1}NX_NXB?=B?1b?B?1NXN?
這里可以寫出如下可行解 {XB=B?1b?B?1NXNXN\begin{cases} X_B = B^{-1}b - B^{-1}NX_N \\ \\X_N \end{cases}??????XB?=B?1b?B?1NXN?XN??
將上述可行解代入目標函數 maxZ=CBTXB+CNTXNmax Z = C_B^TX_B + C_N^TX_NmaxZ=CBT?XB?+CNT?XN? 中
得到 maxZ=b0+(CNT?CBTB?1N)XNmaxZ = b_0 + ( C_N^T - C_B^T B^{-1}N )X_NmaxZ=b0?+(CNT??CBT?B?1N)XN?
在該情況下 , 如果 (CNT?CBTB?1N)( C_N^T - C_B^T B^{-1}N )(CNT??CBT?B?1N) 系數小于等于 000 , 當 XNX_NXN? 取值為 000 時 , 目標函數得到最大值 ;
總結
以上是生活随笔為你收集整理的【运筹学】线性规划数学模型 ( 单纯形法 | 最优解判定原则 | 可行解表示 | 目标函数推导 | 目标函数最大值分析 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【运筹学】线性规划数学模型 ( 单纯形法
- 下一篇: 【运筹学】线性规划数学模型 ( 单纯形法