1 内容介绍
灾情巡视属于旅行商问题,具有广泛的应用价值.假定有若干巡视组,分工协作对所辖区域内的各灾民聚集地进行巡视,需要对各巡视组的巡视任务,巡视路线进行合理的分配和设计.在现实生活中,各被巡视地点之间的交通网络都存在着连通性差的缺陷,它们几乎都不是全连通图,至包含度为1的节点.将遗传算法和Dijkstra算法结合起来,这一问题得到了很好解决.利用Matlab语言,编写出分组巡视所有灾区的最优巡视路线的寻径程序,并利用数值实验验证了此算法和程序的正确性.
2 仿真代码
function matrix=floyed(G)
%存储无向图的邻接矩阵
%{
G=[ inf inf 10 inf 30 100;
inf inf 5 inf inf inf;
inf 5 inf 50 inf inf;
inf inf inf inf inf 10;
inf inf inf 20 inf 60;
inf inf inf inf inf inf;];
%}
d(1,:,:)=G;
%处理第一行与第一列 对应相加时,可以优化的距离
for i=1:size(G,1)
for j=1:size(G,2)
s(i,j).trace=i;
if d(1,i,j)<=d(1,i,1)+d(1,1,j)
d(1,i,j)=d(1,i,j);
else
d(1,i,j)=d(1,i,1)+d(1,1,j);
end
end
end
%处理从第二 到 顶点个数 个时的 路径优化
for k=2:size(G,1)
for i=1:size(G,1)
for j=1:size(G,1)
if d(k-1,i,j)<=d(k-1,i,k)+d(k-1,k,j)
d(k,i,j)=d(k-1,i,j);
else
d(k,i,j)=d(k-1,i,k)+d(k-1,k,j);
end
end
end
end
matrix=zeros(size(G,1),size(G,1));
matrix=d(size(G,1),:,:);
matrix=reshape(matrix,size(G,1),size(G,1));
%存储无向图的邻接矩阵
%{
G=[ inf inf 10 inf 30 100;
inf inf 5 inf inf inf;
inf 5 inf 50 inf inf;
inf inf inf inf inf 10;
inf inf inf 20 inf 60;
inf inf inf inf inf inf;];
%}
d(1,:,:)=G;
%处理第一行与第一列 对应相加时,可以优化的距离
for i=1:size(G,1)
for j=1:size(G,2)
s(i,j).trace=i;
if d(1,i,j)<=d(1,i,1)+d(1,1,j)
d(1,i,j)=d(1,i,j);
else
d(1,i,j)=d(1,i,1)+d(1,1,j);
end
end
end
%处理从第二 到 顶点个数 个时的 路径优化
for k=2:size(G,1)
for i=1:size(G,1)
for j=1:size(G,1)
if d(k-1,i,j)<=d(k-1,i,k)+d(k-1,k,j)
d(k,i,j)=d(k-1,i,j);
else
d(k,i,j)=d(k-1,i,k)+d(k-1,k,j);
end
end
end
end
matrix=zeros(size(G,1),size(G,1));
matrix=d(size(G,1),:,:);
matrix=reshape(matrix,size(G,1),size(G,1));
clear all;clc;close all;
load lujing; %其中存储图的邻接矩阵以县政府为起点
dmat=floyed(tu); %求图所对应的最短路径矩阵;
[x1,x2,x3,x4]=mtspf_ga(dmat,3,16,100); %返回求得最优解。
function len=myLength(D,p)
N=length(p);
len=D(p(1,N),1)+D(1,p(1,1));
for i=1:(N-1)
len=len+D(p(1,i),p(1,i+1));
end
3 运行结果
4 参考文献
[1]李凯, 党小鹏. 采用改进后遗传算法求解农村物流路径规划问题研究[J]. 经营管理者, 2016(16):2.
[2]宫英丽, 唐佩佩. 基于遗传算法的旅游路径规划问题研究[J]. 2018.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。