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.