單純形法


單純形法的來歷

  在求解LP問題時,有人給出了圖解法,但對多維變量時,卻無能為力。

  於是,美國數學家G.B. Dantzig (丹捷格)發明了一種“單純形法”的代數算法,尤其是方便於計算機運算。這是運籌學史上最輝煌的階段。

與單純形法有關的三條定理:

  

翻譯一下就是:

  • 若某個基本可行解對應的檢驗向量<0,那么這個基本可行解就是最優的。

  • 若某個基本可行解對應的檢驗向量=0,則有無窮多個最優解。

  • 若某個基本可行解對應的檢驗向量>0,並且系數(約束條件)小於0,無解。

${C_N}$——非基變量系數

${C_B}$——基變量系數

B——基,即線性無關向量組R(A)=R(B)

N——非基向量組

 

單純形法計算步驟: 

  1. 將線性規划問題化成標准型 (引入松弛變量)

  2. 找出或構造一個m階單位矩陣作為初始可行基,建立初始單純形表

  3. 計算各非基變量檢驗數${\sigma _j} = {c_j} - {z_j}$ 若所有檢驗數≤0,則問題已得到最優解,停止計算。否則,轉入下一步。(檢驗數)

  4. 在大於0的檢驗數中,若某個檢驗數對應的系數列向量≤ 0,則此問題是無界解,停止計算,否則轉入下步。

  5. 根據$max$(檢驗數$j$ | 檢驗數$j$>0)=檢驗數k的原則,確定為換入變量(進基變量) 再按最小比值法則($\frac{{{b_i}}}{{{a_{ik}}}}$,&${a_{ik}}$>0)確定換出變量,建立新的單純形表,此時的基變量中${x_k}$代替的換出變量的位置。

  6. 以${a_{ik}}$為主元素進行迭代,把${x_k}$所對應的列向量變為單位列向量,即${a_{ik}}$變為1 同列中其他元素變為0,繼續計算各非基變量的檢驗數,進行第三步。

&Lingo里面的方法就屬於單純形法。

  

 

 

例題:

  

  ①先引入三個松弛變量,構造單位矩陣

  

  ②得到單位矩陣,構造出初始可行基B

  

  從中我們可以get信息:基向量組B和非基向量組N

  還可以知道所有變量的系數所組成的向量C和基變量${X_B}$、非基變量${X_N}$:

  

   我們需要的檢驗數就是系數減去${Z_j}$(${\sigma _j} = {c_j} - {z_j}$,${Z_j} = {C_B}{N_j}$)    

  這是目標函數:$Z = {C_B}{B^{ - 1}}b + ({C_N} - {C_B}{B^{ - 1}}N){X_N}$      (b就是增廣矩陣多出來的那些)

  當基矩陣B化成單位矩陣時,令非基變量${X_N}$=0,得到 $Z = {C_B}{B^{ - 1}}b$ 

 

  ③進行步驟3--6

  

  填入信息

  

 

  剛開始,基變量的系數全為0,所以Z=0,${Z_j}$=0,可以寫出對應的檢驗數

x1

x2 s1 s2 s3
50 100 0 0 0

 

  可以看出,${x_2}$對應的檢驗數最大,成為換入變量,而且根據最小值法則,知道${s_3}$是換出變量。於是將${s_3}$的位置換上${x_2}$,對應的系數也變成了100。

  

 

  我們再進行初等行變換,使${x_2}$,${s_1}$,${s_2}$對應的基矩陣變成單位矩陣。在此基礎上進行計算${Z_j}$就可以利用其算出新一輪的檢驗數:

  

  我們可以發現,仍然存在檢驗數大於0的情況,唉,只能進入新一輪的迭代,${x_1}$作為換入變量,而經過最小比值規則,可以判定出${s_1}$是換出變量

  

  然后,我們再根據新的數據,寫出新一輪的${Z_j}$和 檢驗數 ,發現此時的檢驗數全部≤0,我們成功地找到了最優解!

  

  結束啦!

  表格中,檢驗數全部≤0,根據判斷規則,Z值為最優值(Z=27500),其解:

   ${X_1}$=50,${s_1}$=50,${X_2}$=250,${s_2}$=${s_3}$=0

  為模型的最優解。

 

 


免責聲明!

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



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