蚁群算法(ACO)最短路径规划(MATLAB)

蚁群算法最早是由Marco Dorigo等人在1991年提出,他们在研究新型算法的过程中,发现蚁群在寻找食物时,通过分泌一种称为信息素的生物激素交流觅食信息从而能快速的找到目标,据此提出了基于信息正反馈原理的蚁群算法。

蚁群算法根据模拟蚂蚁寻找食物的最短路径行为来设计的仿生算法,因此一般而言,蚁群算法用来解决最短路径问题,并真的在旅行商问题(TSP,一个寻找最短路径的问题)上取得了比较好的成效。目前,也已渐渐应用到其他领域中去,在图着色问题、车辆调度问题、集成电路设计、通讯网络、数据聚类分析等方面都有所应用。

具体概述及通用MATLAB代码请见: http://www.omegaxyz.com/2018/01/26/aco/

下面是蚁群算法机器人最短路径规划问题的MATLAB代码

(1代表障碍物)

效果:

最短路径长度稳定在38。

参考资料为:MATLAB自学一本通

2019美赛D参考:http://www.omegaxyz.com/2019/01/28/aco_routes2/

28 评论

  1. 哪位大佬知道,信息素矩阵为什么是Tau=ones(MM*MM,MM*MM)而不是Tau=ones(MM,MM)。

  2. 麻烦请问一下main函数的文件应该咋定义,具体包括哪些?谢谢了。

    • 这个不需要main()函数哦,你可以把function开头和最后的end去掉就好啦

  3. >> F3;
    无法执行赋值,因为左侧和右侧的元素数目不同。

    出错 F3 (line 153)
    minPL(i)=min(PLKPLK);

    请问楼主,我们只是改了G矩阵,然后就发生了以上错误,能问一下是因为什么吗?

  4. 您好Delta_Tau=zeros(N,N);%更新量初始化
    for m=1:M
    if PL(k,m)
    ROUT=ROUTES{k,m};
    TS=length(ROUT)-1;%跳数
    PL_km=PL(k,m);
    for s=1:TS
    x=ROUT(s);
    y=ROUT(s+1);
    Delta_Tau(x,y)=Delta_Tau(x,y)+Q/PL_km;
    Delta_Tau(y,x)=Delta_Tau(y,x)+Q/PL_km;
    end
    end
    end
    的数学公式能告诉我一下吗,才接触matlab,不是很懂

    • 这是信息素的更新公式啊,是蚁群算法里面的,与MATLAB没什么关系啊。

      • 这个更新公式能告诉我下吗,我查了有好几种公式,我不知道是哪种,谢谢

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注