2019 Summer 数学建模 DAY5&6&7 钢管订购和运输

B题 钢管订购和运输题干

B题 钢管订购和运输
要铺设一条 的输送天然气的主管道, 如图一所示(见下页)。经筛选后可以生产这种主管道钢管的钢厂有 。图中粗线表示铁路,单细线表示公路,双细线表示要铺设的管道(假设沿管道或者原来有公路,或者建有施工公路),圆圈表示火车站,每段铁路、公路和管道旁的阿拉伯数字表示里程(单位km)。
为方便计,1km主管道钢管称为1单位钢管。
一个钢厂如果承担制造这种钢管,至少需要生产500个单位。钢厂 在指定期限内能生产该钢管的最大数量为 个单位,钢管出厂销价1单位钢管为 万元,如下表:

1 2 3 4 5 6 7

800 800 1000 2000 2000 2000 3000

160 155 155 160 155 150 160

1单位钢管的铁路运价如下表:

里程(km) ≤300 301~350 351~400 401~450 451~500
运价(万元) 20 23 26 29 32

里程(km) 501~600 601~700 701~800 801~900 901~1000
运价(万元) 37 44 50 55 60

1000km以上每增加1至100km运价增加5万元。
公路运输费用为1单位钢管每公里0.1万元(不足整公里部分按整公里计算)。
钢管可由铁路、公路运往铺设地点(不只是运到点 ,而是管道全线)。
(1)请制定一个主管道钢管的订购和运输计划,使总费用最小(给出总费用)。
(2)请就(1)的模型分析:哪个钢厂钢管的销价的变化对购运计划和总费用影响最大,哪个钢厂钢管的产量的上限的变化对购运计划和总费用的影响最大,并给出相应的数字结果。
(3)如果要铺设的管道不是一条线,而是一个树形图,铁路、公路和管道构成网络,请就这种更一般的情形给出一种解决办法,并对图二按(1)的要求给出模型和结果。
图一
图二

分析及建模

第一问,选用MATLAB处理数据。用floyed算法分别求得铁路运输和公路运输任意两节点的最短路。再由里程数和费用的对应关系,求得最小花费图。

clear,clc;
n=39;
%输入铁路运输图T
T=zeros(n,n);
for i=1:n
    for j=1:n
        if i==j T(i,j)=0;
        else T(i,j)=inf;
        end
    end
end

T(23,25)=450;T(24,25)=80;T(25,26)=1150;T(26,27)=1100;T(27,17)=1200;
T(27,16)=202;T(16,30)=20;T(30,29)=195;T(29,28)=306;T(27,31)=720;
T(31,18)=690;T(31,32)=520;T(32,33)=170;T(33,19)=690;T(33,35)=160;
T(35,36)=70;T(33,34)=88;T(34,20)=462;T(35,37)=320;T(37,38)=160;
T(38,21)=70;T(39,38)=290;T(39,22)=30;

for i=1:n
    for j=1:n
        if (T(i,j)~=inf) T(j,i)=T(i,j);
        end
    end
end

%求铁路最短路
for k=1:n
    for i=1:n
        for j=1:n
            if T(i,j)>T(i,k)+T(k,j) T(i,j)=T(i,k)+T(k,j);
            end
        end
    end
end

%求铁路最少运费T2
T2=zeros(n,n);
for i=1:n
    for j=1:n
        T2(i,j)=inf;
    end
end

bound=[0 300 350 400 450 500 600 700 800 900 1000];
cost=[0 20 23 26 29 32 37 44 50 55 60];
N=11;
for i=1:39
    for j=1:39
        if (T(i,j)>0)&&(T(i,j)~=inf)
            for k=2:N
                if T(i,j)>bound(k-1)&&T(i,j)<=bound(k)
                    T2(i,j)=cost(k);
                end
                if T(i,j)>bound(N)
                    T2(i,j)=cost(N)+ceil((T(i,j)-bound(N))/100)*5;
                end
            end
        end
    end
end

%输入公路运输图B
B=zeros(n,n);
for i=1:n
    for j=1:n
        if i==j B(i,j)=0;
        else B(i,j)=inf;
        end
    end
end

B(2,23)=3;B(24,3)=2;B(4,26)=600;B(28,5)=10;B(6,29)=5;B(7,30)=10;B(7,16)=31;
B(8,27)=12;B(9,31)=42;B(10,32)=70;B(11,34)=10;B(12,36)=10;B(13,37)=62;
B(14,21)=110;B(14,38)=30;B(15,39)=20;B(15,22)=20;
B(1,2)=104;B(2,3)=301;B(3,4)=750;B(4,5)=606;B(5,6)=194;B(6,7)=205;B(7,8)=201;
B(8,9)=680;B(9,10)=480;B(10,11)=300;B(11,12)=220;B(12,13)=210;B(13,14)=420;
B(14,15)=500;

for i=1:n;
    for j=1:n;
        if (B(i,j)~=inf) B(j,i)=B(i,j);
        end
    end
end

%求公路最短路
for k=1:n
    for i=1:n
        for j=1:n
            if B(i,j)>B(i,k)+B(k,j) B(i,j)=B(i,k)+B(k,j);
            end
        end
    end
end

%求公路最小运费B2
B2=0.1*B;

%求总费用矩阵C
C=zeros(n,n);
for i&#
  • 12
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值