蚁群算法最短路径规划多出口情况及问题答疑

本文共860个字,预计阅读时间需要3分钟。

最近好多人问我蚁群算法最短路径规划如何设置多出口情况,原来2019年美赛D题“拯救卢浮宫”需要用到。本人没有看过美赛的题目,下面给出一些不成熟的代码。

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

单出口情况:

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

针对大家问过的问题下面给出解答:

问题1:如何修改目的地(出现minPL(i)=min(PLKPLK);错误)

出口只需要修改E,其他都不需要改,E是一维,下面的程序会自动解析为横纵坐标(即Ex和Ey不需要修改)

例如E = MM*MM说明是最后一个格子,MM*MM-j代表右下角的格子向左平移j个单位,MM*MM-i*MM,代表右下角的格子向上平移i个单位。

大家可以试试下面的这些出口

MM*MM, MM*MM-19*MM-5, MM*MM-7*MM, MM*MM-15*MM, MM*MM-17

问题2:如何处理非正方形矩阵

首先MM作为边长要修改,下面的出口横纵坐标Ex,Ey需要重新解析,相关的画图部分要改,信息素矩阵Tau要修改。

问题3:G2D函数无法运行的问题

这里可能是matlab版本问题,为了方便,我将G2D函数直接放在代码的最下面,如果不能运行建议将G2D函数重新新建一个文件,并把main函数中的G2D删去。

G2D.m

问题4:对于多出口的情况

此问题代码需要重构,或者来个简便方法,多线程每个线程一个出口最后一起画图。

设立一个archive矩阵,里面存储所有的目标点

来个大循环,每次重新运行蚁群算法,最终画图画到一个图上(使用matlab hold on语句)

声明:以上给出的程序与2019年美赛建模D题具体思路无关。

读者评分
[评分人数: 4 平均分: 4]

12 位极客在 “蚁群算法最短路径规划多出口情况及问题答疑” 留下足迹

  1. 请问循环多出口加上hold on之后仍无法显示在同一张图上怎么解决,能把这篇文章的第一张图的源码发一下吗?谢谢了

  2. 请问循环多出口加上hold on之后仍无法显示在同一张图上怎么解决,能把这篇文章的第一张图的源码发一下吗?谢谢了

  3. 想请问下,这个路径每次执行后可能都不同,我想把这个变为可控的,就是多次执行结果给出的路径都一样,该怎么办呢?

    • 这是演化计算的方法呀,都是随机策略,结果一般不会相同,除非你把迭代次数调大一点,这样可能会收敛到一个较好的值。

评论

OmegaXYZ