運輸問題中產銷不平衡問題(表上作業法和LINGO方法)


對於產銷不平衡問題有兩種情況:

  供大於求(產大於銷)→增加虛擬銷地

  供不應求(產小於銷)→增加虛擬產地

例如以下例題:

 

 這個題中,總產量為55,總銷量為60,故而我們知道這個問題屬於供不應求

1.這個問題可以采用筆算的方式:

  表上作業法

    ↓

  得到初始方案

    ↓

  檢驗基變量個數是否為m+n-1個,若不是,則說明初始解退化,需要不足基變量個數(如填寫一個數字同時滿足了一廠一商,則需在同行或同列中填寫一個數字0,以保證恰好有m+n-1個數字)【注意:基可行解中不能有某個基變量獨占一行一列

    ↓計算位勢值(*)

  基於基變量的cij計算出vj和ui,根據公式:cij=vj+ui,可以令v1=0(隨意設置)

    ↓

  基於非基變量的表格,計算出非基變量檢驗數,σij=cij-(vj+ui)。

    ↓若σij全非負,則說明初始方案為最優方案,從而計算出運輸費用。

  若存在σij < 0 ,則說明初始方案不是最優方案,需要進行調整。首先在作業表上以xij為起始變量作出閉回路(其余頂點均為基變量,回路中每行每列只有兩個變量), 並求出調整量 ε: ε=min{該閉回路中偶數次頂點調運量xij}。

     ↓

  以xij為起始變量其余頂點為基變量的閉回路,1.閉回路之外的變量調運量不變,2.閉回路上:偶數號頂點的調運量減去ε, 奇數號頂點的調運量加上ε。(*)

     ↓

  重復計算(*)之間的步驟,直到非基變量檢驗數全部為非負時,方案為最優方案。

2.LINGO計算最優方案

 

 1 sets:
 2 supplys/1..3/: produce;
 3 demands/1..4/: sell;
 4 links(supplys, demands): c, x;
 5 endsets
 6 data:
 7 produce = 15,20,20;
 8 sell = 5,15,20,20;
 9 c = 5 5 9 10
10     11 8 13 12
11     5 8 6 11;
12 enddata
13 min = @sum(links(i,j): c(i,j) * x(i,j));
14 @for(supplys(i): @sum(demands(j): x(i,j)) = produce(i));
15 @for(demands(j): @sum(supplys(i): x(i,j)) <= sell(j));

 

運行結果如下:

  Global optimal solution found.
  Objective value:                              415.0000
  Infeasibilities:                              0.000000
  Total solver iterations:                             7

  Model Class:                                        LP

  Total variables:                     12
  Nonlinear variables:                  0
  Integer variables:                    0

  Total constraints:                    8
  Nonlinear constraints:                0

  Total nonzeros:                      36
  Nonlinear nonzeros:                   0

                                Variable           Value        Reduced Cost
                             PRODUCE( 1)        15.00000            0.000000
                             PRODUCE( 2)        20.00000            0.000000
                             PRODUCE( 3)        20.00000            0.000000
                                SELL( 1)        5.000000            0.000000
                                SELL( 2)        15.00000            0.000000
                                SELL( 3)        20.00000            0.000000
                                SELL( 4)        20.00000            0.000000
                                C( 1, 1)        5.000000            0.000000
                                C( 1, 2)        5.000000            0.000000
                                C( 1, 3)        9.000000            0.000000
                                C( 1, 4)        10.00000            0.000000
                                C( 2, 1)        11.00000            0.000000
                                C( 2, 2)        8.000000            0.000000
                                C( 2, 3)        13.00000            0.000000
                                C( 2, 4)        12.00000            0.000000
                                C( 3, 1)        5.000000            0.000000
                                C( 3, 2)        8.000000            0.000000
                                C( 3, 3)        6.000000            0.000000
                                C( 3, 4)        11.00000            0.000000
                                X( 1, 1)        5.000000            0.000000
                                X( 1, 2)        10.00000            0.000000
                                X( 1, 3)        0.000000            0.000000
                                X( 1, 4)        0.000000            1.000000
                                X( 2, 1)        0.000000            3.000000
                                X( 2, 2)        5.000000            0.000000
                                X( 2, 3)        0.000000            1.000000
                                X( 2, 4)        15.00000            0.000000
                                X( 3, 1)        0.000000            3.000000
                                X( 3, 2)        0.000000            6.000000
                                X( 3, 3)        20.00000            0.000000
                                X( 3, 4)        0.000000            5.000000

                                     Row    Slack or Surplus      Dual Price
                                       1        415.0000           -1.000000
                                       2        0.000000           -9.000000
                                       3        0.000000           -12.00000
                                       4        0.000000           -6.000000
                                       5        0.000000            4.000000
                                       6        0.000000            4.000000
                                       7        0.000000            0.000000
                                       8        5.000000            0.000000

由此可知:

最優方案為:

      

 

 運輸費用為 415 。

 

本篇文章為原創,轉載請說明出處。

 

 

 

 

 

   

 


免責聲明!

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



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