找回密码
 注册
关于网站域名变更的通知
查看: 392|回复: 1
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-10-22 16:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
最近好多人问我蚁群算法最短路径规划如何设置多出口情况,原来2019年美赛D题“拯救卢浮宫”需要用到。本人没有看过美赛的题目,下面给出一些不成熟的代码。
蚁群算法简介:蚁群算法最早是由Marco Dorigo等人在1991年提出,他们在研究新型算法的过程中,发现蚁群在寻找食物时,通过分泌一种称为信息素的生物激素交流觅食信息从而能快速的找到目标,据此提出了基于信息正反馈原理的蚁群算法。
( y* A& L4 U, D( R4 m
# Y7 f; }9 j: ]" h9 H* F
针对大家问过的问题下面给出解答:! b0 ~2 d, R! ^; X

& [' S1 O2 o. K/ b0 p
8 {* \& {1 [4 C+ W' t) g- z- j0 D0 [
问题1:如何修改目的地(出现minPL(i)=min(PLKPLK);错误)
8 i6 E' ^9 u# e) k% Y2 _3 U出口只需要修改E,其他都不需要改,E是一维,下面的程序会自动解析为横纵坐标(即Ex和Ey不需要修改)
& q1 A* R! C' T: T/ E2 J- z% U9 q$ d0 ~" D" C
例如E = MM*MM说明是最后一个格子,MM*MM-j代表右下角的格子向左平移j个单位,MM*MM-i*MM,代表右下角的格子向上平移i个单位。( s. F' z5 ]# y7 E( B& F# G0 X

) C7 O! _* `, H& f大家可以试试下面的这些出口
6 H2 o5 G* e' J( A1 r% {" K
8 G; i+ _0 {) B( xMM*MM, MM*MM-19*MM-5, MM*MM-7*MM, MM*MM-15*MM, MM*MM-174 v9 _1 \* V2 G3 [& U0 y

3 o) b9 S1 j7 L; D& ^8 U1 z0 U问题2:如何处理非正方形矩阵
* [0 y- Z7 w" u4 H! e首先MM作为边长要修改,下面的出口横纵坐标Ex,Ey需要重新解析,相关的画图部分要改,信息素矩阵Tau要修改。
& a4 w% x; a4 P7 P' F( p+ K7 u+ ]( ]8 e" e0 T
问题3:G2D函数无法运行的问题
5 t# G! L) E( K7 R0 s这里可能是matlab版本问题,为了方便,我将G2D函数直接放在代码的最下面,如果不能运行建议将G2D函数重新新建一个文件,并把main函数中的G2D删去。7 n. q4 D. k/ P. f

  q" i  g$ p! |8 q' n; J- hG2D.m
9 P/ Z# l7 \) w8 J1 H6 y9 ]+ v3 f; f! \6 c! q- l8 ~
  • function D=G2D(G)
  •     l=size(G,1);
  •     D=zeros(l*l,l*l);
  •     for i=1:l
  •         for j=1:l
  •             if G(i,j)==0
  •                 for m=1:l
  •                     for n=1:l
  •                         if G(m,n)==0
  •                             im=abs(i-m);jn=abs(j-n);
  •                             if im+jn==1||(im==1&&jn==1)
  •                                 D((i-1)*l+j,(m-1)*l+n)=(im+jn)^0.5;
  •                             end
  •                         end
  •                     end
  •                 end
  •             end
  •         end
  •     end
  • end- d& F, N5 f1 K* I5 e0 N

8 {8 u* r/ E! f4 n, a问题4:对于多出口的情况& w( K( T, a- M, P! s! ^
此问题代码需要重构,或者来个简便方法,多线程每个线程一个出口最后一起画图。
8 P1 o; y8 N9 |* C& M. W6 i4 X& p) w( j- k
设立一个archive矩阵,里面存储所有的目标点
) s- G2 _! x" S& Y& y  Y& u8 j7 P6 Z5 z0 I
  • Earchive = [MM*MM, MM*MM-19*MM-5, MM*MM-7*MM, MM*MM-15*MM, MM*MM-17];+ o6 F- f8 G3 }* Z3 n

4 A* a+ q$ n( e# n8 M来个大循环,每次重新运行蚁群算法,最终画图画到一个图上(使用matlab hold on语句)

该用户从未签到

2#
发表于 2020-10-22 16:56 | 只看该作者
蚁群算法最短路径规划多出口情况及问题答疑
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-23 04:52 , Processed in 0.109375 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表