题目:某企业集团有 3个生产同类产品的工厂,生产的产品由 4个销售中心出售,各工厂的生产量、各销售中心的销售量(假定单位均为吨)、各工厂到各销售点的单位运价(元/吨)示于表1中。要求研究产品如何调运才能使总运费最小。

表1        产销平衡表和单位运价表

销地

运价

产地

B1     B2    B3     B4

产量

A1

A2

A3

  3     12     3       9

  1      9     2       8

  7      4    10       5

6

4

9

销量

2      8     5       5

 

解:

一、建立模型

这是一道运输问题。写出目标函数,求运输费用最小值。

在这之前,发现是产销不平衡问题,增加一个虚拟产地。

先设A1产地运往B1销地为:x11。以此类推,自变量设为:

A1产地:x11,x12,x13,x14。

A2产地:x21,x22,x23,x24。

A3产地:x31,x32,x33,x34。

A4产地:x41,x42,x43,x44。

所以,目标函数为:

max z = 3x11+12x12+3x13+9x14+x21+9x22+2x23+8x24+7x31+4x32+10x33+5x34+0x41+0x42+0x43+0x44

约束条件为:

       x11+x12+x13+x14=6

       x21+x22+x23+x24=4

       x31+x32+x33+x34=9

       x41+x42+x43+x44=1

       x11+x21+x31+x41≤2

       x12+x22+x32+x42≤8

       x13+x23+x33+x43≤5

       x14+x24+x34+x44≤5

       xij≥0,i,j=1,2,3,4

 

二、计算过程

1. Excel

写出单位运价表:

写出运输量表:

产量位置,输入公式:=SUM(D11:G11)

把产地A1运往销地B1,B2,B3,B4四个地方的运输量加起来,以此类推,其他三个产地也是如此输入公式。

销量位置,输入公式:=SUM(D11:D14)

把运往销地B1的四个产地的运输量加起来,以此类推,其他三个销地也是如此输入公式。

总费用位置,输入公式:=SUMPRODUCT(D4:G7,D11:G14)

把单位运价表数据和运输量数据都放进函数SUMPRODUCT中。

得出结果:

 

2. Lingo

model:
!4发点4收点运输问题,增加了一个虚拟产地;
sets:
warehouses/wh1..wh4/: capacity;
vendors/v1..v4/: demand;
links(warehouses,vendors): cost, volume;
endsets
!目标函数;
min=@sum(links: cost*volume);
!需求约束;
@for(vendors(J):
@sum(warehouses(I): volume(I,J))=demand(J));
!产量约束;
@for(warehouses(I):
@sum(vendors(J): volume(I,J))<=capacity(I));
!这里是数据;
data:
capacity=6 4 9 1;
demand=2 8 5 5;
cost=3 12 3 9
     1 9 2 8
     7 4 10 5
     0 0 0 0;
enddata
end

 

3. Matlab

F = [3 12 3 9 1 9 2 8 7 4 10 5 0 0 0 0];
m = [1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
      0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 
      0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0
      0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1
      1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0
      0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0
      0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0
      0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1];
n = [6 4 9 1 2 8 5 5];
M = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];
[v,e] = linprog(F,[],[],m,n,M)
x = reshape(v,4,4);
x = x'

F表示单位运价。

m表示八个约束条件方程。

N表示产量和销量。

M表示自变量都≥0。

reshape:先把v矩阵按列拆分,然后拼接成一个大小为4*4的向量。

版权声明:本文为博主原创文章,未经博主允许不得转载。