【多式联运】基于帝企鹅AFO 粒子群PSO 遗传GA算法求解不确定多式联运路径优化问题附matlab代码

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 【多式联运】基于帝企鹅AFO 粒子群PSO 遗传GA算法求解不确定多式联运路径优化问题附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,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.227391667368465 0.879816756512174 0.758978072405287 0.510838515791228 0.192188536212261 0.651441269146713 0.418963422194475 0.552435663022093 0.692178644766480 0.525121273337296 0.901443303774014 0.870433999021102 0.727907836575027 0.635555150728710 0.377948489141470 0.0665747380900594 0.380375322185706 0.271295139005737 0.556390072117235 0.836324594294146 0.412650509862244 0.435408044462144 0.339160221282954 0.517673083186858 0.305139543163461 0.759153928221489 0.661651047625365 0.695663261206050 0.579862243307374 0.0203768757943083 0.567587976562174 0.417560315118765 0.194865572678659 0.0355023446924871 0.0656090882042756 0.283822647397696 0.409304642722500 0.797371466667136 0.139734109717042 0.943567670211017 0.736340144724420 0.899302180486718 0.0958418793238567 0.494947220485218 0.377043083335839 0.392090901825893 0.872224588221799 0.225018973369553 0.658496649609525 0.985772242893824 0.312242936944674 0.0176752228038184 0.151305501546866 0.117920480497746 0.137344184189911 0.929080746036836 0.737056036783124 0.264583371593473 0.935709972806256 0.930542122124921 0.458371373498295 0.0216966409045397 0.0615124906604629 0.569072523079761 0.912715979600965 0.684016483416011 0.0872976004423956 0.854123989826840 0.699891878132857 0.603233918882651 0.626266466189881 0.764357628595205 0.633979476955922 0.162893341780099 0.277411062836412 0.839224723775726 0.908550538167801 0.890586782754062 0.466391769502905 0.488448750263230 0.365236675941588 0.730292329677324 0.748971571306197 0.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=[

   0.610000000000000 1 1 1 1 0.610000000000000

0.610000000000000 1 1 0.810000000000000 0 0

0.830000000000000 0.920000000000000 1 1 0.900000000000000 0.830000000000000

1 1 1 0.930000000000000 1 0.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电子书和数学建模资料


相关文章
|
9月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
767 0
|
9月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
393 8
|
9月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
453 8
|
9月前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
485 2
|
10月前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
300 6
|
10月前
|
传感器 机器学习/深度学习 编解码
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
391 3
|
10月前
|
机器学习/深度学习 传感器 算法
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
413 14
|
9月前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
9月前
|
开发框架 算法 .NET
基于ADMM无穷范数检测算法的MIMO通信系统信号检测MATLAB仿真,对比ML,MMSE,ZF以及LAMA
简介:本文介绍基于ADMM的MIMO信号检测算法,结合无穷范数优化与交替方向乘子法,降低计算复杂度并提升检测性能。涵盖MATLAB 2024b实现效果图、核心代码及详细注释,并对比ML、MMSE、ZF、OCD_MMSE与LAMA等算法。重点分析LAMA基于消息传递的低复杂度优势,适用于大规模MIMO系统,为通信系统检测提供理论支持与实践方案。(238字)
|
10月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
624 2

热门文章

最新文章