​【路径规划】基于蚁群算法求解多式联运路径规划问题matlab源码

1 简介

随着国际贸易的不断发展和国内外物品流通的速度不断加快,多式联运作为一种先进的运输组织形式不断发展。在运输过程中,合理的路径选择和运输模式选择对多式联运的经营者会带来卓有成效的经济效益,而其中经营者最关心的是路径上的成本,而托运人最关心的是时间。本文对多式联运环境中带时间窗和带库存节点的运输情形分别进行了讨论。在传统运输问题建模方法和求解算法的基础上,首先分析了多式联运环境下的运输问题与传统运输问题的不同点,之后针对问题的特殊性,再对多式联运环境下带时间窗和带库存节点的运输问题分别进行了建模和蚁群算法的求解,最后利用算例来说明模型和算法的有效性。本文综合考虑了多式联运环境下运输问题的路径要素,运输模式,时间窗要素,节点库存要素等,得出的模型和算法能够被应用于求解多式联运中的路径选择和运输模式选择问题,求出的解可以为多式联运托运人提供建议和参考,同时为多式联运的理论研究工作提供一些参考。

2 部分代码

clear all
close all
%% 基于蚁群算法求解多式联运问题
%%=========================================================================
%%第一步:变量初始化
%% 距离数据
distance_rail=xlsread('data.xlsx','铁路','B2:AB28');%铁路距离
distance_rail(isnan(distance_rail))=inf;
for i=1:size(distance_rail,1)
  for j=1:i
      distance_rail(i,j)=distance_rail(j,i);
  end
end
distance_road=xlsread('data.xlsx','公路','B2:AB28');%公路距离
distance_road(isnan(distance_road))=inf;
for i=1:size(distance_road,1)
  for j=1:i
      distance_road(i,j)=distance_road(j,i);
  end
end
distance_water=xlsread('data.xlsx','水路','B2:AB28');%水路距离
distance_water(isnan(distance_water))=inf;
for i=1:size(distance_water,1)
  for j=1:i
      distance_water(i,j)=distance_water(j,i);
  end
end
%% 风险数据
risk_rail=xlsread('data.xlsx','铁路风险','B2:AB28');%铁路距离
risk_rail(isnan(risk_rail))=inf;
for i=1:size(risk_rail,1)
  for j=1:i
      risk_rail(i,j)=risk_rail(j,i);
  end
end
risk_road=xlsread('data.xlsx','公路风险','B2:AB28');%公路距离
risk_road(isnan(risk_road))=inf;
for i=1:size(risk_road,1)
  for j=1:i
      risk_road(i,j)=risk_road(j,i);
  end
end
risk_water=xlsread('data.xlsx','水路风险','B2:AB28');%水路距离
risk_water(isnan(risk_water))=inf;
for i=1:size(risk_water,1)
  for j=1:i
      risk_water(i,j)=risk_water(j,i);
  end
end
%%
D=distance_rail;
startpoint=1;%起点
endpoint=27;%终点
C =[00
  100200
  200-200
  300-400
  200300
  300100
  400-200
  300-300
  400-500
  400500
  400400
  400200
  400100
  500100
  4000
  400-100
  400-300
  400-500
  500-250
  500-350
  500400
  600-500
  600400
  600200
  6000
  600-300
  8000
  ];%C n个城市的坐标,n×2的矩阵
QQ=1000;%货运量
n=size(C,1);%n表示问题的规模(城市个数)
risk=[0.968
  0.955
  0.968
  0.962
  0.966
  0.952
  0.937
  0.928
  0.971
  0.948
  0.973
  0.974
  0.883
  0.890
  0.905
  0.897
  0.913
  0.838
  0.874
  0.843
  0.976
  0.967
  0.959
  0.979
  0.980];%换装风险
t_cost=0.3;%时间权值
h_cost=0.3;%能耗权值
d_cost=0.2;%距离权值
f_cost=0.2;%风险权值
v_rail=35;%铁路速度
v_road=43;%公路速度
v_water=28;%水路速度
distance=inf;
%% 蚁群算法参数
m=10;%蚂蚁数量
NC_max=1;%%% NC_max 最大迭代次数
Alpha=3;%% Alpha 表征信息素重要程度的参数
Beta=2;%% Beta 表征启发式因子重要程度的参数
Rho=0.5;%% Rho 信息素蒸发系数
Q=1;%% Q 信息素增加强度系数
% Calculate objective function for each search agent
[Shortest_Route,Shortest_Route_fangshi,L_best_quanju,fit_t_best_quan,fit_h_best_quan,fit_d_best_quan,fit_f_best_quan]=aco_qiujie(startpoint,endpoint,distance_rail,distance_road,distance_water,n,m,QQ,NC_max, Alpha,Beta,...
  Rho,Q,v_rail,v_road,v_water,distance,risk_rail,risk_road,risk_water,risk,t_cost,h_cost,d_cost,f_cost);


city={'长沙','武汉','重庆','怀化','郑州','西安','成都','贵阳','南宁','满洲里','二连浩特','阿拉山口',...
  '喀什','瓜达尔','上海' ,'广州','昆明','北海','仰光','胡志明','曼谷','新加坡',...
  '华沙','杜伊斯堡','汉堡','鹿特丹','柏林'};
lujing={'铁路','公路','水路'};
for i=1:length(Shortest_Route)-1
  fprintf('%s 经 %s 到 %s\n',city{Shortest_Route(i)},lujing{Shortest_Route_fangshi(i)},city{Shortest_Route(i+1)})
end
disp('最佳成本=')
Shortest_Length=fitvalue(Shortest_Route,Shortest_Route_fangshi,distance_rail,distance_road,distance_water,v_rail,v_road,v_water,QQ,risk_rail,risk_road,risk_water,risk,t_cost,h_cost,d_cost,f_cost) %最大迭代次数后最短距离
jieguoplot(startpoint,endpoint,Shortest_Route_fangshi,C,n,Shortest_Route,Shortest_Length,distance_rail,distance_road,distance_water,city);
img =gcf; %获取当前画图的句柄
print(img, '-dpng', '-r600', './img1.png')         %即可得到对应格式和期望dpi的图像
disp(['最短时间=',num2str(fit_t_best_quan)])
disp(['最低能耗成本=',num2str(fit_h_best_quan)])
disp(['最短距离成本=',num2str(fit_d_best_quan)])
disp(['最低风险=',num2str(fit_f_best_quan)])
figure(2)
plot( L_best_quanju)
xlabel('迭代次数')
ylabel('适应度值')
title('蚁群适应度曲线')     %标题
img =gcf; %获取当前画图的句柄
print(img, '-dpng', '-r600', './img.png')         %即可得到对应格式和期望dpi的图像

3 仿真结果

4 参考文献

[1]叶浩然. 多式联运环境下运输问题的蚁群算法求解[D]. 合肥工业大学, 2013.

 

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Matlab科研辅导帮

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

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

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

打赏作者

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

抵扣说明:

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

余额充值