【路径规划】基于FLOYD算法实现邮政运输网络中的邮路规划和邮车调度matlab代码

1 简介

邮政运输网络是邮政企业运营的重要保障,而邮路规划和邮车调度设计是决定邮政运输网络效率的关键因素,问题1的邮路规划问题归结为带返程货的车辆路由问题,该问题是NP-难的,采用改进蚁群算法,通过对单环路旅行商问题进行断环分析,将运行线路的好坏反馈给蚁群算法的目标函数,求取最终的优化路径.第二问邮路规划扩展到了全区,采用有优先级的分县优化途径寻求最佳邮路.最后,给出模型的评价及改进方向.

2 部分代码

clc,clear
%问题2、问题3求解

A = xlsread('shuju1.xls','A2:C341');
distance=zeros(79);
for i=1:340
   for j=1:79
       for k=1:79
           if A(i,1)==j & A(i,2)==k
               distance(j,k)=A(i,3);
           end
       end
   end
end
distance=distance+distance';
distance(find(distance==0))=inf;
for i=1:79
   for j=1:79
       if i==j
           distance(i,j)=0;
       end
   end
end

% %以下是第2题市局到县局经过的点
% x1=[62 8 9 10 74 14 15 11 12 16];%注:此圈中暂时不包含D点,求出距离后再把X1到最近点Z62的距离加上
% x2=[79 66 63 18 75 27 64 65 67];
% x3=[79 28 29 30 31 32 33 68 69 70 76 34];
% x4=[79 72 73 41 42 43 44 35 36 71 77];
% x5=[79 61 60 59 53 78 52 58];
% %以下是第2题县局内部经过的支局点
% xx1_1=[1 13 74];
% xx1_2=[2:7 74];
% xx2_1=[17 19 75];
% xx2_2=[20:26 75];
% xx4=[37:40 77];
% xx5_1=[54:57 78];
% xx5_2=[45:51 78];

%以下是第3题调整后的市局到县局经过的点
x1=[62 8 9 10 74 14 15 11 12 16];%注:此圈中暂时不包含D点,求出距离后再把X1到最近点Z62的距离加上
x2=[79 66 63 18 75 64 65 67];
x3=[79 28 29 30 31 32 33 68 69 70 76 34];
x4=[79 72 73 41 42 43 44 35 36 71 77];
x5=[79 61 60 59 53 78 52 58];
%以下是第3题调整后的县局内部经过的支局点
xx1_1=[1 13 74];
xx1_2=[2:7 56 57 74];
xx2_1=[17 19 75];
xx2_2=[20:27 75];
xx4=[37:40 77];
xx5_1=[54 55 78];
xx5_2=[45:51 78];

% %以下是第3题调整后的市局到县局经过的点
% x1=[62 8 9 10 74 14 15 11 12 16];%注:此圈中暂时不包含D点,求出距离后再把X1到最近点Z62的距离加上
% x2=[79 66 63 18 75 64 65 67];
% x3=[79 28 29 30 31 32 33 68 69 70 76 34];
% x4=[79 72 73 41 42 43 44 35 36 71 77];
% x5=[79 61 60 59 53 78 52 58];
% %以下是第3题调整后的县局内部经过的支局点
% xx1_1=[1 13 74];
% xx1_2=[2:7 56 57 74];
% xx2_1=[17 19 75];
% xx2_2=[20:27 75];
% xx4=[37:40 77];
% xx5_1=[54 55 78];
% xx5_2=[45:51 78];


nz=[];% 途经支局个数
nx=[];% 途经县局个数

[long(1),circle1]=long_circle(x1,distance);nz(1)=size(find(x1<74),2);nx(1)=size(find(x1>=74&x1<=78),2);
[long(2),circle2]=long_circle(x2,distance);nz(2)=size(find(x2<74),2);nx(2)=size(find(x2>=74&x2<=78),2);
[long(3),circle3]=long_circle(x3,distance);nz(3)=size(find(x3<74),2);nx(3)=size(find(x3>=74&x3<=78),2);
[long(4),circle4]=long_circle(x4,distance);nz(4)=size(find(x4<74),2);nx(4)=size(find(x4>=74&x4<=78),2);
[long(5),circle5]=long_circle(x5,distance);nz(5)=size(find(x5<74),2);nx(5)=size(find(x5>=74&x5<=78),2);
[long(6),circle11]=long_circle(xx1_1,distance);nz(6)=size(find(xx1_1<74),2);nx(6)=size(find(xx1_1>=74&xx1_1<=78),2);
[long(7),circle12]=long_circle(xx1_2,distance);nz(7)=size(find(xx1_2<74),2);nx(7)=size(find(xx1_2>=74&xx1_2<=78),2);
[long(8),circle21]=long_circle(xx2_1,distance);nz(8)=size(find(xx2_1<74),2);nx(8)=size(find(xx2_1>=74&xx2_1<=78),2);
[long(9),circle22]=long_circle(xx2_2,distance);nz(9)=size(find(xx2_2<74),2);nx(9)=size(find(xx2_2>=74&xx2_2<=78),2);
[long(10),circle41]=long_circle(xx4,distance);nz(10)=size(find(xx4<74),2);nx(10)=size(find(xx4>=74&xx4<=78),2);
[long(11),circle51]=long_circle(xx5_1,distance);nz(11)=size(find(xx5_1<74),2);nx(11)=size(find(xx5_1>=74&xx5_1<=78),2);
[long(12),circle52]=long_circle(xx5_2,distance);nz(12)=size(find(xx5_2<74),2);nx(12)=size(find(xx5_2>=74&xx5_2<=78),2);

for i=1:5
   t1(i)=10*nx(i)+5*nz(i)+60*long(i)/65;%t1为邮车通过这条路所需要的时间
end
t1(5)=t1(5)-5;%去县X5的邮车经过支局Z61但不进行装卸邮件
for i=6:12
   t1(i)=10*nx(i)+5*nz(i)+60*long(i)/30;
end

long(1)=long(1)+82
t1
long
sum_long=sum(long)
sum_cost=3*sum_long

3 仿真结果

4 参考文献

[1]卢晓珊, 何伟, & 贺永金. (2009). 邮政运输网络中的邮路规划和邮车调度研究. 数学的实践与认识(17), 66-71.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab科研辅导帮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值