1 简介 编辑 编辑 编辑 编辑 编辑 2 部分代码 %算法的第一步是先初始化 clc clear close all data=[33580.60995 7556.450541 0 0 480 0 33517.94427 7550.258605 38.1 60 180 60 33289.92183 7490.746137 24.
1 简介
编辑
编辑
编辑
编辑
编辑
2 部分代码
%算法的第一步是先初始化clc
clear
close all
data=[33580.60995 7556.450541 0 0 480 0
33517.94427 7550.258605 38.1 60 180 60
33289.92183 7490.746137 24.2 30 150 54
33536.90179 7546.496191 15.2 30 300 30
33468.72568 7568.941866 23.1 30 330 42
33460.59935 7541.606391 17.8 60 330 42
33543.82804 7572.457439 16.5 120 240 30
33550.43798 7601.835535 16.5 60 120 36
33556.05244 7557.051973 17.3 150 180 42
33519.38135 7524.888891 12.6 60 90 30
33474.3799 7456.877774 20.2 60 120 48
];
m=50; %蚂蚁总数
alpha=1; %信息度启发因子
beta=2; %期望值启发式因子
Rho=0.6; %信息素挥发因子
NC_max=100; %最大循环次数
Q=80; %信息素增量
%% 本算例参数
C=data(:,1:2);%城市位置
W=data(:,3);%城市位置
T_serve=data(:,6);%城市位置
T_limit=data(:,4:5);%时间窗限制
Q_begin=C(1,:);%开始城市
C(1,:)=[];
W(1)=[];
T_serve(1)=[];
T_limit(1,:)=[];
Weight=60;%载重/限制
v=1; %速度
%%
% 初始化
n=size(C,1); %表示n个城市
D=zeros(n,n);
for i=1:n
for j=1:n
if i~=j %表示同一个城市之间的距离不存在
D(i,j)=((C(i,1)-C(j,1))^2+(C(i,2)-C(j,2))^2)^0.5;
else
D(i,j)=eps;
end
end
end
Eta=1./D; %城市与城市之间的能见度,在基于概率转移时用到这个参数
end
for j=1:size(path,2)
R_temp=path{j};
if ~isempty(R_temp)
plot([Q_begin(1),C(R_temp(1),1)],[Q_begin(2),C(R_temp(1),2)],'-b');
hold on
plot([Q_begin(1),C(R_temp(end),1)],[Q_begin(2),C(R_temp(end),2)],'-b');
hold on
for k=1:size(R_temp,2)-1
plot([C(R_temp(k),1),C(R_temp(k+1),1)],[C(R_temp(k),2),C(R_temp(k+1),2)],'-b');
end
end
end
title('最优配送方案路线图');
xlabel('x')
ylabel('y')
figure(2)
plot(1:size(Roadlength_best,1),Roadlength_best,'-k')
xlabel('迭代次数')
ylabel('目标函数值')
title('迭代过程')
for i=1:size(path,2)
temp=path{i};
WE(i)=sum(W(temp));
end
3 仿真结果
编辑
编辑
4 参考文献
[1]李建军. 基于蚁群算法的车辆路径规划问题的研究[D]. 西安电子科技大学, 2015.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。