【路径规划】基于遗传算法求解灾情巡视路径问题附matlab代码

发布于:2023-02-02 ⋅ 阅读:(364) ⋅ 点赞:(0)

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));

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代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。