运输问题(模型建立、表上作业法、产销平衡、产销不平衡)
運輸問題
文章目錄
- 運輸問題
- 模型建立
- 表上作業(yè)法和對產(chǎn)銷平衡問題的處理
- 對產(chǎn)銷不平衡問題的處理
模型建立
-
已知有mmm個生產(chǎn)地點Ai(i=1,?,m)A_i(i=1,\cdots,m)Ai?(i=1,?,m),可供應(yīng)某種(單個)物資,供應(yīng)量(產(chǎn)量)分別為ai(i=1,?,m)a_i(i=1,\cdots,m)ai?(i=1,?,m)?,F(xiàn)有nnn個銷地Bj(j=1,?,n)B_j(j=1,\cdots,n)Bj?(j=1,?,n),其需求量分別為bj(j=1,?,n)b_j(j=1,\cdots,n)bj?(j=1,?,n)。用cijc_{ij}cij?表示從AiA_iAi?運到BjB_jBj?的單位物資的運價。設(shè)從AiA_iAi?運到BjB_jBj?的運輸量為xij(xij≥0)x_{ij}(x_{ij}\ge 0)xij?(xij?≥0)
- 目標(biāo)函數(shù)
- 約束條件
{∑i=1mxij=bj,j=1,?,n?銷量角度∑j=1nxij=ai,i=1,?,m?產(chǎn)量角度xij≥0\left\{\begin{array}{l} \sum\limits_{i=1}^mx_{ij}=b_j,~j=1,\cdots,n\Leftarrow\text{銷量角度}\\ \sum\limits_{j=1}^nx_{ij}=a_i,~i=1,\cdots,m\Leftarrow\text{產(chǎn)量角度}\\ x_{ij}\ge 0 \end{array}\right. ????????????i=1∑m?xij?=bj?,?j=1,?,n?銷量角度j=1∑n?xij?=ai?,?i=1,?,m?產(chǎn)量角度xij?≥0? -
對于產(chǎn)銷平衡的運輸問題,有以下關(guān)系式成立
∑j=1nbj=∑j=1n(∑i=1mxij)=∑i=1n(∑j=1mxij)=∑i=1mai\sum\limits_{j=1}^nb_j=\sum\limits_{j=1}^n(\sum\limits_{i=1}^mx_{ij})=\sum\limits_{i=1}^n(\sum\limits_{j=1}^mx_{ij})=\sum\limits_{i=1}^ma_i j=1∑n?bj?=j=1∑n?(i=1∑m?xij?)=i=1∑n?(j=1∑m?xij?)=i=1∑m?ai?
?\Rightarrow?模型最多只有m+n?1m+n-1m+n?1個獨立的約束方程?\Rightarrow?系數(shù)矩陣的秩≤m+n?1\le m+n-1≤m+n?1?\Rightarrow?一定存在可行解 -
系數(shù)矩陣的結(jié)構(gòu)松散特殊
x11x12?x1nx21x22?x2n?xm1xm2?xmnu1u2?umv1v2?vn[11?111?1?11?1111111???111]\begin{array}{l} &\left.\begin{array}{l} x_{11}~x_{12}~~\cdots ~x_{1n}~x_{21}~x_{22}~\cdots ~~x_{2n}~\cdots ~~x_{m1}~x_{m2}~\cdots ~x_{mn} \end{array}\right.\\ \left.\begin{array}{l} u_1\\u_2\\\vdots\\u_m\\v_1\\v_2\\\vdots\\v_n \end{array}\right. &\left[\begin{array}{ccccccccccccc} 1&1&\cdots&1&&&&&&&&&\\ &&&&1&1&\cdots&1&&&&&\\ &&&&&&&&\ddots&&&&\\ &&&&&&&&&1&1&\cdots&1\\ 1&&&&1&&&&&1&&&\\ &1&&&&1&&&&&1&&\\ &&\ddots&&&&\ddots&&&&&\ddots&\\ &&&1&&&&1&&&&&1 \end{array}\right] \end{array} u1?u2??um?v1?v2??vn???x11??x12?????x1n??x21??x22?????x2n?????xm1??xm2????xmn???????????????11?11????11?11?11????11???11?11????11???????????????
?\Rightarrow?系數(shù)矩陣的系數(shù)向量PijP_{ij}Pij?可以表示為Pij=(0?1?0?1?0)T=ei+em+jP_{ij}=(0\cdots1\cdots0\cdots1\cdots0)^T=e_i+e_{m+j}Pij?=(0?1?0?1?0)T=ei?+em+j? -
運輸問題與指派問題類似,區(qū)別在于運輸問題約束方程中的自由項ai,bja_i,b_jai?,bj?非負(fù)即可,但指派問題恒為1。不能用匈牙利法求解運輸問題
min?z=∑i=1m∑j=1ncijxij\min z=\sum\limits_{i=1}^m\sum\limits_{j=1}^n c_{ij}x_{ij} minz=i=1∑m?j=1∑n?cij?xij?
表上作業(yè)法和對產(chǎn)銷平衡問題的處理
- e.g. 三個產(chǎn)地A1,A2,A3A_1,A_2,A_3A1?,A2?,A3?,產(chǎn)量分別是7,4,9,四個銷地B1,B2,B3,B4B_1,B_2,B_3,B_4B1?,B2?,B3?,B4?,銷量分別是3,6,5,6.又已知單位運價,求min?z\min zminz
根據(jù)7+4+9=3+5+6+57+4+9=3+5+6+57+4+9=3+5+6+5容易得到產(chǎn)銷平衡
畫出產(chǎn)銷平衡表和單位運價表(合在一起)
| A1A_1A1? | x11∥3x_{11}\|3x11?∥3 | x12∥11x_{12}\|11x12?∥11 | x13∥3x_{13}\|3x13?∥3 | x14∥10x_{14}\|10x14?∥10 | 777 |
| A2A_2A2? | x21∥1x_{21}\|1x21?∥1 | x22∥9x_{22}\|9x22?∥9 | x23∥2x_{23}\|2x23?∥2 | x24∥8x_{24}\|8x24?∥8 | 444 |
| A3A_3A3? | x31∥7x_{31}\|7x31?∥7 | x32∥4x_{32}\|4x32?∥4 | x33∥10x_{33}\|10x33?∥10 | x34∥5x_{34}\|5x34?∥5 | 999 |
| 銷量 | 333 | 666 | 555 | 666 |
該表即可作為表上作業(yè)法的使用起點
確定初始基可行解,查看視頻
-
西北角法:從表的西北角開始,填出m+n?1m+n-1m+n?1個數(shù)作為初始解
注:西北角法純粹就是為了找到個解,但是局限性太大
注:當(dāng)出現(xiàn)退化(即按步驟計算出來的運輸量為0)時,在相應(yīng)的格中一定要填一個0,以表示此格為數(shù)字格
-
最小元素法:就近供應(yīng),從運輸單價最小的地方開始確定供銷關(guān)系
注:可能一開始很節(jié)省,但之后翻倍增長
-
伏格爾法:從運費差額的角度去考慮(更容易找到最優(yōu)解)
- 求各行各列最小運價與次小運價的差額(絕對值)
- 選出1中所有差額的最大值,找到這個最大值所對應(yīng)的行或列,再找這行或列中的最小運價,優(yōu)先供應(yīng)(若差額最大值有多個,任選一個即可)
- 如果某一行或某一列按照這種方法已被供應(yīng)了,則劃去該行或該列,在剩下的行列中重復(fù)這種方法,直到劃去所有的行列
判別最優(yōu)解
-
閉回路法:以某一空格(非基變量)為起點,用水平線或者豎直線向前劃線,對于其他空格,只能穿過,不能轉(zhuǎn)向,只有在碰到某一數(shù)字時才能轉(zhuǎn)彎。按照這一規(guī)矩繼續(xù)前進(jìn),直到回到起始空格位置。(回路是唯一的)。有幾個空格就必須找?guī)讉€回路
檢驗數(shù)=奇數(shù)頂點的單位運價之和?偶數(shù)頂點的單位運價之和\text{檢驗數(shù)}=\text{奇數(shù)頂點的單位運價之和}-\text{偶數(shù)頂點的單位運價之和} 檢驗數(shù)=奇數(shù)頂點的單位運價之和?偶數(shù)頂點的單位運價之和
檢驗數(shù)經(jīng)濟(jì)意義:當(dāng)由AiA_iAi?往BjB_jBj?增運一個單位的貨物時,所引起的總運輸成本的變化
局限:產(chǎn)銷點很多時,計算很繁,不好找回路
-
位勢法:另一種計算檢驗數(shù)的方法,但是只能計算不能調(diào)整
- 每一個格都對應(yīng)了唯一確定的行列的位置,那么我們就認(rèn)為每個格都對應(yīng)唯一的行勢(uiu_iui?)和唯一的列勢(vjv_jvj?),且σij=cij?(ui+vj)\sigma_{ij}=c_{ij}-(u_i+v_j)σij?=cij??(ui?+vj?)。對于所有的有數(shù)格σ=0\sigma=0σ=0,故可通過σ=0\sigma=0σ=0列出方程組,求出所有的ui,vju_i,v_jui?,vj?,那么,對于空格來說就可以直接計算σij\sigma_{ij}σij?并比較
解的調(diào)整:在負(fù)檢驗數(shù)中,選擇絕對值最大的空格作為調(diào)整的切入點,并在表格上以該點出發(fā),沿著其閉回路,在回路所經(jīng)過的每一個方格內(nèi)一次表上+q+q+q和?q-q?q,由于存在非負(fù)約束,故只需保證回路上所有的xij±q≥0x_{ij}\pm q\ge 0xij?±q≥0,由此便可得到qqq的具體值。然后根據(jù)計算出來的qqq值對相應(yīng)的頂點進(jìn)行調(diào)整,重復(fù)計算檢驗數(shù)和調(diào)整解的過程
- 當(dāng)某個非基變量(空格)的檢驗數(shù)為0時,該問題有無窮多最優(yōu)解
對產(chǎn)銷不平衡問題的處理
-
產(chǎn)大于銷:∑ai>∑bj\sum a_i>\sum b_j∑ai?>∑bj?;產(chǎn)小于銷:∑ai<∑bj\sum a_i<\sum b_j∑ai?<∑bj?
-
產(chǎn)大于銷
min?z=∑i=1m∑j=1ncijxijs.t.{∑i=1mxij=bj,j=1,?,n∑j=1nxij≤ai,i=1,?,mxij≥0\begin{array}{l} \min z=\sum\limits_{i=1}^m\sum\limits_{j=1}^n c_{ij}x_{ij}\\ s.t. \left\{\begin{array}{l} \sum\limits_{i=1}^mx_{ij}=b_j,~j=1,\cdots,n\\ \sum\limits_{j=1}^nx_{ij}\le a_i,~i=1,\cdots,m\\ x_{ij}\ge 0 \end{array}\right. \end{array} minz=i=1∑m?j=1∑n?cij?xij?s.t.????????????i=1∑m?xij?=bj?,?j=1,?,nj=1∑n?xij?≤ai?,?i=1,?,mxij?≥0??- 引入mmm個松弛變量:∑j=1n+1xij=ai,i=1,?,m\sum\limits_{j=1}^{n+1}x_{ij}=a_i,~i=1,\cdots,mj=1∑n+1?xij?=ai?,?i=1,?,m
- 對于bn+1b_{n+1}bn+1?可以令bn+1=∑ai?∑bjb_{n+1}=\sum a_i-\sum b_jbn+1?=∑ai??∑bj?
- 難點在于價值系數(shù),在實際解題過程中,必須具體問題具體分析。若要求將這個產(chǎn)地的所有多產(chǎn)的全部被用掉,可以令相應(yīng)的價值系數(shù)為大M
{x11=10x12+x22=15x13+x23+x33=25x14+x24+x34+x44=20\left\{\begin{array}{lcl} x_{11}&=&10\\ x_{12}+x_{22}&=&15\\ x_{13}+x_{23}+x_{33}&=&25\\ x_{14}+x_{24}+x_{34}+x_{44}&=&20 \end{array}\right. ????????x11?x12?+x22?x13?+x23?+x33?x14?+x24?+x34?+x44??====?10152520?
{x11+x12+x13+x14≤25x22+x23+x24≤35x33+x34≤30x44≤10\left\{\begin{array}{rcl} x_{11}+x_{12}+x_{13}+x_{14}\le 25\\ x_{22}+x_{23}+x_{24}\le 35\\ x_{33}+x_{34}\le 30\\ x_{44}\le 10 \end{array}\right. ????????x11?+x12?+x13?+x14?≤25x22?+x23?+x24?≤35x33?+x34?≤30x44?≤10?
- 對于D列,如果題目沒有特殊說明,默認(rèn)成本為0
總結(jié)
以上是生活随笔為你收集整理的运输问题(模型建立、表上作业法、产销平衡、产销不平衡)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转】java提高篇(二)-----理解
- 下一篇: 转 C#对多个集合和数组的操作(合并