蚁群算法——初步了解

1.前言

背景

蚁群系统(Ant System或Ant Colony
System)是由意大利学者Dorigo、Maniezzo等人于20世纪90年代首先提出来的。他们在研究蚂蚁觅食的过程中,发现单个蚂蚁的行为比较简单,但是蚁群整体却可以体现一些智能的行为。例如蚁群可以在不同的环境下,寻找最短到达食物源的路径。这是因为蚁群内的蚂蚁可以通过某种信息机制实现信息的传递。后又经进一步研究发现,蚂蚁会在其经过的路径上释放一种可以称之为“信息素”的物质,蚁群内的蚂蚁对“信息素”具有感知能力,它们会沿着“信息素”浓度较高路径行走,而每只路过的蚂蚁都会在路上留下“信息素”,这就形成一种类似正反馈的机制,这样经过一段时间后,整个蚁群就会沿着最短路径到达食物源了

蚁群

再讲蚁群算法之前,先讲一讲蚁群在寻找食物时是如何找到最短路径的
蚂蚁在行走过程中会释放一种称为“信息素”的物质,用来标识自己的行走路径。在寻找食物的过程中,根据信息素的浓度选择行走的方向,并最终到达食物所在的地方。

信息素会随着时间的推移而逐渐挥发。

在一开始的时候,由于地面上没有信息素,因此蚂蚁们的行走路径是随机的。蚂蚁们在行走的过程中会不断释放信息素,标识自己的行走路径。随着时间的推移,有若干只蚂蚁找到了食物,此时便存在若干条从洞穴到食物的路径。由于蚂蚁的行为轨迹是随机分布的,因此在单位时间内,短路径上的蚂蚁数量比长路径上的蚂蚁数量要多,从而蚂蚁留下的信息素浓度也就越高。这为后面的蚂蚁们提供了强有力的方向指引,越来越多的蚂蚁聚集到最短的路径上去。

主要用途
用于解决旅行商问题,即TSP问题(Traveling Salesman Problem)。假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值

结论
在求解最短路径是,因信息素是一定的,所以路径越短,信息素浓度越高,蚁群选择此路径的概率越高,经过多次迭代后,即可取得最优解或局部最优解

2.正文

基本原理
1、蚂蚁在路径上释放信息素。

2、碰到还没走过的路口,就随机挑选一条路走。同时,释放与路径长度有关的信息素。

3、信息素浓度与路径长度成反比。后来的蚂蚁再次碰到该路口时,就选择信息素浓度较高路径。

4、最优路径上的信息素浓度越来越大。

5、最终蚁群找到最优寻食路径。

基本流程
图片来源于网络
主要参数(此处用的是MATLAB代码)

m = 50; % 蚂蚁数量
alpha = 1; % 信息素重要程度因子
beta = 5; % 启发函数重要程度因子
rho = 0.05; % 信息素挥发因子
Q = 1; % 常系数
Eta = 1./D; % 启发函数
Tau = ones(n,n); % 信息素矩阵
Table = zeros(m,n); % 路径记录表
iter = 1; % 迭代次数初值
iter_max = 150; % 最大迭代次数
Route_best = zeros(iter_max,n); % 各代最佳路径
Length_best = zeros(iter_max,1); % 各代最佳路径的长度
Length_ave = zeros(iter_max,1); % 各代路径的平均长度

注意点
1.状态转移概率的计算
在这里插入图片描述
2.信息量的更新
在这里插入图片描述
3.代码

好尴尬,小乔还不会,下次更吧

3.目前的问题

1.不知道是用什么语言去实现蚁群算法
目前多数人使用的是MATLAB去实现,好多是用来做建模比赛,和科研的,因为小乔对MATLAB学的很少,如果用这个的话又需要牺牲玩游戏的时间去学一下他,感觉有点累,其次学习蚁群算法的最终目的是要设计一个解决商旅问题的系统不知能否实现。
2.其中涉及到了矩阵,这一点是知识盲区
3.女巫对我施了魔法,离不开手机,没时间学习,无解

下次见

发布了39 篇原创文章 · 获赞 13 · 访问量 2050

猜你喜欢

转载自blog.csdn.net/qq_44620773/article/details/104333979