【多式联运】基于帝企鹅AFO 粒子群PSO 遗传GA算法

?作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

????个人主页:Matlab科研工作室

????个人信条:格物致知。?

? 内容介绍

随着”一带一路”国家战略的推进和建设,中新物流通道在衔接”丝绸之路经济带”和”海上丝绸之路”中的作用日益明显.集装箱多式联运是中新贸易的主要实现形式,目前,多式联运路径优化问题是多式联运相关研究领域的热点.然而多式联运路径优化过程即不同参与者的权衡过程,由于不同商品的特性差异,运输活动中不同参与者对集装箱多式联运的要求也不尽相同.随着”绿色物流”逐渐深入人们的生活,运输过程中的碳排放也受到政府部门越来越多的关注.

? 部分代码

clc;

clear all;

close all;

warning off

%%

noRng=1;

rng(‘default’)

rng(noRng)

%%

global data

data.numN=15; %节点数量

data.Cap_Ts=xlsread(“节点处的最大中转运输能力.xlsx”);

temp=round(rand(data.numN,3)*10+15)*10;

data.Cap_Ts(:,2:end)=temp;

data.Windows=xlsread(“节点的时间窗.xlsx”);

data.D=xlsread(“节点间距离.xlsx”);

data.Cap_Tp=xlsread(“节点间最大运输能力.xlsx”);

data.T=data.D;

data.v=[76,60,30];

for i=1:length(data.Cap_Tp(:,1))

no1=data.Cap_Tp(i,1);

no2=data.Cap_Tp(i,2);

for j=1:3

if isnan(data.Cap_Tp(i,2+j))

data.D(i,2+j)=nan;

end

end

data.T(i,[3,6,9])=round(data.D(i,3:5)./data.v/1.2);

data.T(i,[4,7,10])=round(data.D(i,3:5)./data.v);

data.T(i,[5,8,11])=round(data.D(i,3:5)./data.v/0.8);

end

data.Windows(:,3)=data.Windows(:,3).*(1-rand(size(data.Windows(:,3))));

data.Windows(:,4)=data.Windows(:,4).*(1+rand(size(data.Windows(:,3))))+10;

data.Windows(:,3:4)=max(0,round(data.Windows(:,3:4)+randn(size(data.Windows(:,3:4)))));

data.Windows(:,5)=max(data.Windows(:,4));

data.CT=[0,3.09,5.23; % 转换成本

3.09,0,26.62;

5.23,26.62,0];

data.TT=[0,1,1; %转换时间

1,0,2;

1,2,0];

data.ET=[0,1.56,6; % 转换碳排放

1.56,0,3.12;

6,3.12,0];

data.q=[120,150,180];

data.E0=[0.796,0.028,0.04];

data.CW=[30,50];

data.S=1;

data.E=15;

data.alpha=0.8;

data.beta1=0.8;

data.beta2=0.8;

data.beta3=0.8;

data.C0=[0.3,0.2,0.1]; %三种运输方式的运输成本

data.weight=[1,1];

data.maxB=100000;

data.maxE=21000;

%%

%%

data.numQ=100;

for i=1:data.numQ

if rand<0.5

data.q0(i)=rand*(data.q(2)-data.q(1))+data.q(1);

else

data.q0(i)=rand*(data.q(3)-data.q(2))+data.q(2);

end

end

%%

G=graph(data.D(:,1),data.D(:,2),data.D(:,1)*0+1);

figure

plot(G)

set(gca,’LooseInset’,get(gca,’TightInset’))

%%

lb=0;

ub=1;

dim=length(data.D(:,1))*3;

option.lb=lb;

option.ub=ub;

option.dim=dim;

if length(option.lb)==1

option.lb=ones(1,option.dim)*option.lb;

option.ub=ones(1,option.dim)*option.ub;

end

option.fobj=@aimFcn_1;

option.showIter=0;

%% 算法参数设置 Parameters

% 基本参数

option.numAgent=20; %种群个体数 size of population

option.maxIteration=100; %最大迭代次数 maximum number of interation

%% 遗传算法

option.p1_GA=0.7;

option.p2_GA=0.1;

%% 粒子群

option.w_pso=0.1;

option.c1_pso=1.2;

option.c2_pso=1.2;

%% AFO

option.v_lb=-(option.ub-option.lb)/4;

option.v_ub=(option.ub-option.lb)/4;

option.w2=0.5; %weight of Moving strategy III

option.w4=1;%weight of Moving strategy III

option.w5=1;%weight of Moving strategy III

option.pe=0.01; % rate to judge Premature convergence

option.gap0=ceil(sqrt(option.maxIteration*2))+1;

option.gapMin=5; % min gap

option.dec=2; % dec of gap

option.L=10; % Catastrophe

%% DE

option.F=0.5;

option.CR=0.5;

%%

str_legend=[{‘GA’},{‘PSO’},{‘AFO’}];

aimFcn=[{@GA},{@PSO},{@AFO3}];

%% 初始化

rng(noRng)

x=ones(option.numAgent,option.dim);

y=ones(option.numAgent,1);

for i=1:option.numAgent

x(i,:)=rand(size(option.lb)).*(option.ub-option.lb)+option.lb;

y(i)=option.fobj(x(i,:),option,data);

end

%% 使用算法求解

bestX=x;

for i=1:length(aimFcn)

rng(noRng)

tic

[bestY(i,:),bestX(i,:),recording(i)]=aimFcn{i}(x,y,option,data);

tt(i)=toc;

end

%% 绘制迭代曲线

figure

hold on

for i=1:length(aimFcn)

if i>1

plot((recording(i).bestFit),’LineWidth’,2)

else

plot((recording(i).bestFit),’–‘,’LineWidth’,2)

end

end

legend(str_legend)

xlabel(‘评价次数(*100)’)

ylabel(‘适应度函数值’)

set(gca,’LooseInset’,get(gca,’TightInset’))

%% 计算结果

for i=1:length(str_legend)

str=[str_legend{i},’优化后方案’];

[~,result(i)]=option.fobj(bestX(i,:),option,data);

% drawPC(result(i),data,str)

end

%%

rng(11)

x0=[0.2273916673684650.8798167565121740.7589780724052870.5108385157912280.1921885362122610.6514412691467130.4189634221944750.5524356630220930.6921786447664800.5251212733372960.9014433037740140.8704339990211020.7279078365750270.6355551507287100.3779484891414700.06657473809005940.3803753221857060.2712951390057370.5563900721172350.8363245942941460.4126505098622440.4354080444621440.3391602212829540.5176730831868580.3051395431634610.7591539282214890.6616510476253650.6956632612060500.5798622433073740.02037687579430830.5675879765621740.4175603151187650.1948655726786590.03550234469248710.06560908820427560.2838226473976960.4093046427225000.7973714666671360.1397341097170420.9435676702110170.7363401447244200.8993021804867180.09584187932385670.4949472204852180.3770430833358390.3920909018258930.8722245882217990.2250189733695530.6584966496095250.9857722428938240.3122429369446740.01767522280381840.1513055015468660.1179204804977460.1373441841899110.9290807460368360.7370560367831240.2645833715934730.9357099728062560.9305421221249210.4583713734982950.02169664090453970.06151249066046290.5690725230797610.9127159796009650.6840164834160110.08729760044239560.8541239898268400.6998918781328570.6032339188826510.6262664661898810.7643576285952050.6339794769559220.1628933417800990.2774110628364120.8392247237757260.9085505381678010.8905867827540620.4663917695029050.4884487502632300.3652366759415880.7302923296773240.7489715713061970.706903738180738];

gs = GlobalSearch;

problem = createOptimProblem(‘fmincon’,’x0′,x0,…

‘objective’,@(x)aimFcn_1(x,option,data),’lb’,x0*0,’ub’,x0*0+1);

x = run(gs,problem);

[fit1,result(i+1)]=aimFcn_1(x,option,data);

%%

P=[

11110.610000000000000

0.610000000000000110.81000000000000000

0.8300000000000000.920000000000000110.9000000000000000.830000000000000

1110.93000000000000010.930000000000000]; %注 P是从result里面复制出来的

str_legend=[str_legend,{‘GS’}];

figure

bar(0:5,P,’grouped’)

legend(str_legend)

xlabel(‘约束’)

ylabel(‘满足概率’)

set(gca,’LooseInset’,get(gca,’TightInset’))

? 运行结果

? 参考文献

[1]何文护. 基于混合遗传算法的多式联运优化的选择研究[D]. 大连海事大学, 2011.

[2]李干亮. 基于多维视角的中新集装箱多式联运路径优化研究[D]. 重庆交通大学, 2019.

? 完整代码??部分理论引用网络文献,若有侵权联系博主删除?? 关注我领取海量matlab电子书和数学建模资料

有了你,我不再作孤飞于蓝天的雄鹰,

【多式联运】基于帝企鹅AFO 粒子群PSO 遗传GA算法

相关文章:

你感兴趣的文章:

标签云: