1 模型
基于集装箱多式联运在进行门到门的运输过程中可以选择多种运输方式和路径的组合进行优化运输这个特点,本文将多式联运的运输优化问题转化成为一个最短路径问题,以成本和时间为优化目标建立了选择最优路径的模型,并选择遗传算法作为求解算法对实例问题进行了求解验证.
2 部分代码
% main
clc,clear ,close all
[distance_road,distance_rail,distance_water]=data();
% 输入:公路、铁路、水路运输距离,和运输时间,起点和终点元胞数组
% 输出:最优路径和最优成本
feature jit off
% set madel parameters
Modd.Tmax=48;
% 单位运输距离成本及空间距离
Modd.unitcost.road=9.39; %公路
Modd.unitcost.rail=2.835; %铁路
Modd.unitcost.water=2.56; %水路
Modd.distan.road=distance_road; % 公路
Modd.distan.rail=distance_rail; %铁路
Modd.distan.water=distance_water; %水路
% 时间成本及时间距离
% Modd.distan.lambd=10; %时间成本权重
% Modd.delivery.road=dilivery_road; %% 公路
% Modd.delivery.rail=dilivery_rail; %铁路
% Modd.delivery.water=dilivery_water; %水路
% 中转费用
Modd.loadupcost=...
[0150826
1500976
8269760];
% 装卸时间
Modd.loaduptim=[0,0.800000000000000,0.800000000000000;0.800000000000000,0,0.800000000000000;0.800000000000000,0.800000000000000,0];
%% 最多中转的次数
Modd.maxTranfertime=4 ;
%% Set GA Control Parameters
GA.popsize= 200 ; % 种群规模(取偶数)
GA.MaxCycles=500; % 最大迭代次数
GA.Dim= 13; % 城市是否选中 选中为1 ,不选中为0;13= 总的站点数 -1
GA.Ub=3; % 表示前五维度的选择仅有公路、铁路、水路三种
GA.pc=0.7; % 交叉概率
GA.pm=0.3; % 变异概率
GA.pentcof=100 ; %惩罚系数
GlobalMins= zeros(GA.MaxCycles ,1); %最优值记录
GlobalOptpop= zeros(GA.MaxCycles,1+2*GA.Dim); %最优方案记录
%% 初始化操作
pop=zeros(GA.popsize ,1+2*GA.Dim);
obJvaL=zeros(GA.popsize , 1);
for i=1: GA.popsize
pop( i ,:)=popcreat(GA.Ub,GA.Dim);
end
• indv(kk)=unidrnd(2) -1 ;%0,1
• mupop(i,:)=indv;
• else
• mupop(i,:)=indv;
• end
• end
% if find( mupop(:,1: GA.Dim+1) ==0)
% disp('变异出毛病')
% end
%% 循环
pop= mupop;
end
%% curve convergence of Transportation cost
figure('NumberTitle', 'off', 'Name', 'Iteration of proposed GA metaheuristic', 'Color',[1 1 1]);
plot(GlobalMins,'LineWidth',2);
title(' Curve convergence of total transportation cost','fontsize',13)
set(gca, 'FontName','Times New Roman', 'Fontsize',12,'LineWidth',2 );
xlabel('Iteration','fontsize',15,'fontname','Times new roman');
ylabel('Total transportation cost','fontsize',15,'fontname','Times new roman')
grid off ;
box off
%% results display
indv=GlobalOptpop(end ,:);
[finalObjfit, finalObjcost , finalrouts,totalTime ]=Objfun( Modd , GA.Dim , indv ,GA.pentcof );
starpoint={'上海', '杭州' , '南京', '芜湖' , '合肥' , '九江' ,'南昌' ,'武昌' ,'汉口','荆州','长沙','宜昌','张家界','云阳'};
endpoint={ '杭州' , '南京', '芜湖' , '合肥' , '九江' ,'南昌' ,'武昌' ,'汉口','荆州','长沙','宜昌','张家界','云阳','重庆'};
transportway={'公路' ,'铁路' ,'水运' };
if size(finalrouts,1)==1
str=[ starpoint{finalrouts(1,1) } ' 经 ',transportway{finalrouts(1,3)} ' 到 ' endpoint{ finalrouts(1,2) } ];
% str=[ '运 输 方 式 为 :',transportway{finalrouts(end)} ];
disp(str);
else
for i=1:size( finalrouts,1)
str=[ starpoint{finalrouts(i,1) } ' 经 ',transportway{finalrouts(i,3)} ' 到 ' endpoint{ finalrouts(i,2) } ];
disp(str);
end
end
disp(sprintf('最低成本为 %8.3f ', finalObjcost));
disp(sprintf('总运输时间为 %8.3f ', totalTime));
3 仿真结果
4 参考文献
[1]杨秋秋,王辉. 基于遗传算法的多目标集装箱多式联运运输优化模型[J]. 物流科技(12):29-31.
部分理论引用网络文献,若有侵权联系博主删除。
5 MATLAB代码与数据下载地址
见博客主页