當前位置:編程學習大全網 - 編程語言 - MatLab運輸問題高手進

MatLab運輸問題高手進

簡單地寫了壹些(分析部分,妳好好看壹下,應當可以看得懂,多看壹兩遍,自己總結壹下,我可能描述得不準)

(1)問題分析:

運輸費=運輸單價*運輸量。這裏要求是總運輸費最低,也就是說規劃的目標函數是使得運輸費最小。

約束條件有:

a.ABC三個工廠生產能力存在上限,當然也存在下限(產量為0)

b.至少應甲乙丙丁四個市場的需求量。

(2)符號說明:

xij代表i工廠給j市場的箱數,當然這裏i=1,2,3分別代表ABC;j=1,2,3,4分別代表甲乙丙丁

costij代表i工廠運到j市場每箱的運輸費。由題意得cost=[2,1,3,2;1,3,2,1;3,4,1,1];

proi代表i工廠生產的總箱數,很明顯proi=sum(xij,j,1,4)-----註意這裏引入的東西是說對j從1到4求和。即xi1+xi2+xi3+xi4

needj代表j市場的實際進貨,很明顯needj=sum(xij,i,1,3)----同上

根據"問題分析"我們可以得到規劃

目標:min f=sum(sum(costij.*xij,i,1,3),j,1,4)

約束條件:

xij>=0 其中i=1,2,3;j=1,2,3,4

pro1=sum(x1j,j,1,4)<=60

pro2=sum(x2j,j,1,4)<=40

pro3=sum(x3j,j,1,4)<=50

need1=sum(xi1,i,1,3)>=20

need2=sum(x21,i,1,3)>=35

need3=sum(x31,i,1,3)>=33

need4=sum(x41,i,1,3)>=34

(3)程序編寫(基於Matlab,註意這裏要將Aij轉成列向量)

clear

cost=[2,1,3,2;1,3,2,1;3,4,1,1];

f=cost(:);%目標

A=[

1,0,0,1,0,0,1,0,0,1,0,0;

0,1,0,0,1,0,0,1,0,0,1,0;

0,0,1,0,0,1,0,0,1,0,0,1;

-1,-1,-1,0,0,0,0,0,0,0,0,0;

0,0,0,-1,-1,-1,0,0,0,0,0,0;

0,0,0,0,0,0,-1,-1,-1,0,0,0;

0,0,0,0,0,0,0,0,0,-1,-1,-1;

];%約束,註意大於號約束時,我們兩邊乘以-1,變成小於號約束

b=[60;40;50;-20;-35;-33;-34];

Aeq=[];

beq=[];

xmin=zeros(12,1);

xmax=inf*ones(12,1);

x0=xmin;

[x,fmin]=linprog(f,A,b,Aeq,beq,xmin,xmax,x0);

reshape(x,3,4),fmin

totalbox=sum(x)

(4)結果分析

上述程序的結果是:

ans =

0.0000 35.0000 0.0000 0.0000

20.0000 0.0000 0.0000 17.3777

0.0000 0.0000 33.0000 16.6223

fmin =

122.0000

totalbox =

122.0000

其中ans就是Aij,得到的總費用是122元,運輸的總箱數也為122箱。也就是說平均每箱的費用也是1元。

(5)啟示

我們註意觀察

cost與ans的關系

cost =

2 1 3 2

1 3 2 1

3 4 1 1

ans =

0.0000 35.0000 0.0000 0.0000

20.0000 0.0000 0.0000 17.3777

0.0000 0.0000 33.0000 16.6223

我們可以發現,ans中非元素與cost中的1元素是對應的。

也就是說對於j市場,它可以從ABC三個廠進貨。但是要使得費用最近,當然是希望從運費最低的那個廠進貨。

先觀察甲乙丙和ABC,對於甲乙丙來說,他們分別從BAC三個廠進貸是最合算的,當然BAC的產量都大於甲乙丙三個市場的需求量。這三個市場都從BAC那裏進貨。

對於丁市場來說,它的最低運費的有BC兩個工廠,而BC工廠分別給甲丁兩個市場20,33個箱。它們離最大的產量還剩20,17。只要丁市場從這裏取34箱就可以了。對於這兩個就沒有什麽優先性,因為它的運輸費是壹致的。

所以本例存在多解情況,先讓BAC三個工廠分別滿足甲乙丙三個市場,丁市場從BC兩個工廠進貨34箱即可(而這34箱從B廠的20箱和C廠的17箱裏面運出即可),考慮到箱數壹般為整數。BC廠給丁市場的箱數可有以下幾種組合

B廠 C廠

20 14

19 15

18 16

17 17

  • 上一篇:C語言關於單片機單鍵控制燈三種狀態問題
  • 下一篇:新手買筆記本電腦註意事項?
  • copyright 2024編程學習大全網