蚁群算法基本知识

合集下载

蚁群算法及案例分析精选全文

蚁群算法及案例分析精选全文
问过的节点;另外,人工蚁
群在选择下一条路径的时
候并不是完全盲目的,而是
按一定的算法规律有意识
地寻找最短路径
自然界蚁群不具有记忆的
能力,它们的选路凭借外
激素,或者道路的残留信
息来选择,更多地体现正
反馈的过程
人工蚁群和自然界蚁群的相似之处在于,两者优先选择的都
是含“外激素”浓度较大的路径; 两者的工作单元(蚂蚁)都
正反馈、较强的鲁棒性、全
局性、普遍性
局部搜索能力较弱,易出现
停滞和局部收敛、收敛速度
慢等问题
优良的分布式并行计算机制
长时间花费在解的构造上,
导致搜索时间过长
Hale Waihona Puke 易于与其他方法相结合算法最先基于离散问题,不
能直接解决连续优化问题
蚁群算法的
特点
蚁群算法的特点及应用领域
由于蚁群算法对图的对称性以
及目标函数无特殊要求,因此
L_ave=zeros(NC_max,1);
%各代路线的平均长度
while NC<=NC_max
%停止条件之一:达到最大迭代次数
% 第二步:将m只蚂蚁放到n个城市上
Randpos=[];
for i=1:(ceil(m/n))
Randpos=[Randpos,randperm(n)];
end
Tabu(:,1)=(Randpos(1,1:m))';
scatter(C(:,1),C(:,2));
L(i)=L(i)+D(R(1),R(n));
hold on
end
plot([C(R(1),1),C(R(N),1)],[C(R(1),2),C(R(N),2)])

蚁群算法概述

蚁群算法概述

蚁群算法概述一、蚁群算法蚁群算法(ant colony optimization, ACO),又称蚂蚁算法,是一种用来寻找最优解决方案的机率型技术。

它由Marco Dorigo于1992年在他的博士论文中引入,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。

蚂蚁在路径上前进时会根据前边走过的蚂蚁所留下的分泌物选择其要走的路径。

其选择一条路径的概率与该路径上分泌物的强度成正比。

因此,由大量蚂蚁组成的群体的集体行为实际上构成一种学习信息的正反馈现象:某一条路径走过的蚂蚁越多,后面的蚂蚁选择该路径的可能性就越大。

蚂蚁的个体间通过这种信息的交流寻求通向食物的最短路径。

蚁群算法就是根据这一特点,通过模仿蚂蚁的行为,从而实现寻优。

这种算法有别于传统编程模式,其优势在于,避免了冗长的编程和筹划,程序本身是基于一定规则的随机运行来寻找最佳配置。

也就是说,当程序最开始找到目标的时候,路径几乎不可能是最优的,甚至可能是包含了无数错误的选择而极度冗长的。

但是,程序可以通过蚂蚁寻找食物的时候的信息素原理,不断地去修正原来的路线,使整个路线越来越短,也就是说,程序执行的时间越长,所获得的路径就越可能接近最优路径。

这看起来很类似与我们所见的由无数例子进行归纳概括形成最佳路径的过程。

实际上好似是程序的一个自我学习的过程。

3、人工蚂蚁和真实蚂蚁的异同ACO是一种基于群体的、用于求解复杂优化问题的通用搜索技术。

与真实蚂蚁通过外激素的留存/跟随行为进行间接通讯相似,ACO中一群简单的人工蚂蚁(主体)通过信息素(一种分布式的数字信息,与真实蚂蚁释放的外激素相对应)进行间接通讯,并利用该信息和与问题相关的启发式信息逐步构造问题的解。

人工蚂蚁具有双重特性:一方面,他们是真实蚂蚁的抽象,具有真实蚂蚁的特性,另一方面,他们还有一些在真实蚂蚁中找不到的特性,这些新的特性,使人工蚂蚁在解决实际优化问题时,具有更好地搜索较好解的能力。

人工蚂蚁与真实蚂蚁的相同点为:1.都是一群相互协作的个体。

蚁群算法的核心技术详解

蚁群算法的核心技术详解

蚁群算法的核心技术详解蚁群算法是一种基于模拟蚁群行为的启发式算法,常用于解决组合优化问题。

该算法的核心技术包括:蚂蚁的移动规则、信息素更新规则和最优解的选择策略。

1. 蚂蚁的移动规则:蚂蚁在解空间中移动时,遵循一定的规则。

每只蚂蚁随机选择一个起始位置,并根据一定的概率选择下一个移动位置。

蚂蚁在移动过程中会留下一种称为“信息素”的化学物质,用于与其他蚂蚁进行通信和信息交流。

蚂蚁的移动路径上可能会遇到一些障碍物,例如局部最优解或者解空间中的无效解。

当蚂蚁遇到这些障碍时,它会根据一定的规则调整自己的移动方向。

2. 信息素更新规则:在蚁群算法中,信息素扮演着非常重要的角色。

蚂蚁在移动过程中留下的信息素会影响其他蚂蚁的选择方向。

信息素的更新规则通常是基于蚁群中各个解的质量而定。

一般来说,当一个解的质量较好时,蚂蚁会在其移动路径上增加更多的信息素;反之,当一个解的质量较差时,蚂蚁会减少信息素的释放量。

这样,解质量较好的路径上的信息素浓度会逐渐增大,最终吸引更多的蚂蚁选择该路径。

3. 最优解的选择策略:蚁群算法的目标是寻找问题的全局最优解。

在每次迭代过程中,需要选择最优的解作为当前的最优解。

一种常用的选择策略是通过比较所有蚂蚁找到的解,选择质量最好的一个作为当前的最优解。

另一种策略是将每次迭代中找到的最优解与历史最优解进行比较,选择质量更好的作为当前的最优解。

通过以上核心技术,蚁群算法可以在解空间中搜索到较优的解,并逐渐收敛到全局最优解。

这是因为蚂蚁通过信息素的交流和更新,能够实现一种“众所周知”的路径选择策略,从而引导整个蚁群向着更好的解逐步演化。

蚁群算法也具有一定的并行性,可以通过并行计算加速算法的收敛过程。

蚁群算法在各种组合优化问题和在实际应用中都取得了显著的成果。

蚁群算法——精选推荐

蚁群算法——精选推荐

蚁群算法⼀、蚁群算法简介 蚁群算法(AG)是⼀种模拟蚂蚁觅⾷⾏为的模拟优化算法,它是由意⼤利学者Dorigo M等⼈于1991年⾸先提出,并⾸先使⽤在解决TSP(旅⾏商问题)上。

之后,⼜系统研究了蚁群算法的基本原理和数学模型.⼆、蚁群算法原理1、蚂蚁在路径上释放信息素。

2、碰到还没⾛过的路⼝,就随机挑选⼀条路⾛。

同时,释放与路径长度有关的信息素。

3、信息素浓度与路径长度成反⽐。

后来的蚂蚁再次碰到该路⼝时,就选择信息素浓度较⾼路径。

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

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

三、蚁群算法流程图四、实例应⽤基于TSP问题的基本蚁群算法原理讲解参考⽼师上课讲解的PPT不做过多粘贴1.源代码:%% 旅⾏商问题(TSP)优化%% 清空环境变量clear allclc%% 导⼊数据citys = ceil(rand(50,2)*50000)%load newcitys.mat%% 计算城市间相互距离fprintf('Computing Distance Matrix... \n');n = size(citys,1);D = zeros(n,n);for i = 1:nfor j = 1:nif i ~= jD(i,j) = sqrt(sum((citys(i,:) - citys(j,:)).^2));elseD(i,j) = 1e-4;endendend%% 初始化参数fprintf('Initializing Parameters... \n');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); % 各代路径的平均长度%% 迭代寻找最佳路径figure;while iter <= iter_maxfprintf('迭代第%d次\n',iter);% 随机产⽣各个蚂蚁的起点城市start = zeros(m,1);for i = 1:mtemp = randperm(n);start(i) = temp(1);endTable(:,1) = start;% 构建解空间citys_index = 1:n;% 逐个蚂蚁路径选择for i = 1:m% 逐个城市路径选择for j = 2:ntabu = Table(i,1:(j - 1)); % 已访问的城市集合(禁忌表)allow_index = ~ismember(citys_index,tabu);allow = citys_index(allow_index); % 待访问的城市集合P = allow;% 计算城市间转移概率for k = 1:length(allow)P(k) = Tau(tabu(end),allow(k))^alpha * Eta(tabu(end),allow(k))^beta; endP = P/sum(P);% 轮盘赌法选择下⼀个访问城市Pc = cumsum(P);target_index = find(Pc >= rand);target = allow(target_index(1));Table(i,j) = target;endend% 计算各个蚂蚁的路径距离Length = zeros(m,1);for i = 1:mRoute = Table(i,:);for j = 1:(n - 1)Length(i) = Length(i) + D(Route(j),Route(j + 1));endLength(i) = Length(i) + D(Route(n),Route(1));end% 计算最短路径距离及平均距离if iter == 1[min_Length,min_index] = min(Length);Length_best(iter) = min_Length;Length_ave(iter) = mean(Length);Route_best(iter,:) = Table(min_index,:);else[min_Length,min_index] = min(Length);Length_best(iter) = min(Length_best(iter - 1),min_Length);Length_ave(iter) = mean(Length);if Length_best(iter) == min_LengthRoute_best(iter,:) = Table(min_index,:);elseRoute_best(iter,:) = Route_best((iter-1),:);endend% 更新信息素Delta_Tau = zeros(n,n);% 逐个蚂蚁计算for i = 1:m% 逐个城市计算for j = 1:(n - 1)Delta_Tau(Table(i,j),Table(i,j+1)) = Delta_Tau(Table(i,j),Table(i,j+1)) + Q/Length(i); endDelta_Tau(Table(i,n),Table(i,1)) = Delta_Tau(Table(i,n),Table(i,1)) + Q/Length(i); endTau = (1-rho) * Tau + Delta_Tau;% 迭代次数加1,清空路径记录表% figure;%最佳路径的迭代变化过程[Shortest_Length,index] = min(Length_best(1:iter));Shortest_Route = Route_best(index,:);plot([citys(Shortest_Route,1);citys(Shortest_Route(1),1)],...[citys(Shortest_Route,2);citys(Shortest_Route(1),2)],'o-');pause(0.3);iter = iter + 1;Table = zeros(m,n);% endend%% 结果显⽰[Shortest_Length,index] = min(Length_best);Shortest_Route = Route_best(index,:);disp(['最短距离:' num2str(Shortest_Length)]);disp(['最短路径:' num2str([Shortest_Route Shortest_Route(1)])]);%% 绘图figure(1)plot([citys(Shortest_Route,1);citys(Shortest_Route(1),1)],...[citys(Shortest_Route,2);citys(Shortest_Route(1),2)],'o-');grid onfor i = 1:size(citys,1)text(citys(i,1),citys(i,2),[' ' num2str(i)]);endtext(citys(Shortest_Route(1),1),citys(Shortest_Route(1),2),' 起点');text(citys(Shortest_Route(end),1),citys(Shortest_Route(end),2),' 终点');xlabel('城市位置横坐标')ylabel('城市位置纵坐标')title(['蚁群算法优化路径(最短距离:' num2str(Shortest_Length) ')'])figure(2)plot(1:iter_max,Length_best,'b',1:iter_max,Length_ave,'r:')legend('最短距离','平均距离')xlabel('迭代次数')ylabel('距离')title('各代最短距离与平均距离对⽐')运⾏结果:利⽤函数citys = ceil(rand(50,2)*50000) 随机产⽣五⼗个城市坐标2.研究信息素重要程度因⼦alpha, 启发函数重要程度因⼦beta,信息素挥发因⼦rho对结果的影响为了保证变量唯⼀我重新设置五⼗个城市信息进⾏实验在原来设值运⾏结果:实验结果可知当迭代到120次趋于稳定2.1 alpha值对实验结果影响(1)当alpha=4时运⾏结果实验结果可知当迭代到48次左右趋于稳定(2)当alpha=8时运⾏结果:有图可知迭代40次左右趋于稳定,搜索性较⼩(3)当alpha= 0.5运⾏结果:有图可知迭代到140次左右趋于稳定(4)当alpha=0.2时运⾏结果:结果趋于110次左右稳定所以如果信息素因⼦值设置过⼤,则容易使随机搜索性减弱;其值过⼩容易过早陷⼊局部最优2.2 beta值对实验影响(1)当 beta=8时运⾏结果结果迭代75次左右趋于稳定(2)当 beta=1时运⾏结果:结果迭代130次左右趋于稳定所以beta如果值设置过⼤,虽然收敛速度加快,但是易陷⼊局部最优;其值过⼩,蚁群易陷⼊纯粹的随机搜索,很难找到最优解2.3 rho值对实验结果影响(1)当rho=3时运⾏结果:结果迭代75次左右趋于稳定(2)当rho=0.05运⾏结果:结果迭代125次左右趋于稳定所以如果rho取值过⼤时,容易影响随机性和全局最优性;反之,收敛速度降低总结:蚁群算法对于参数的敏感程度较⾼,参数设置的好,算法的结果也就好,参数设置的不好则运⾏结果也就不好,所以通常得到的只是局部最优解。

数据分析知识:数据挖掘中的蚁群算法

数据分析知识:数据挖掘中的蚁群算法

数据分析知识:数据挖掘中的蚁群算法蚁群算法是一种模拟蚂蚁觅食行为的启发式算法。

它是一种基于群体智能的方法,能够有效地用于数据挖掘和机器学习领域。

本文将介绍蚁群算法的基本原理和应用案例。

一、蚁群算法的基本原理蚁群算法受到了蚂蚁觅食行为的启发。

蚂蚁在觅食过程中会遵循一定的规则,例如在路径上释放信息素,吸引其他蚂蚁前往同一方向;在路径上的信息素浓度较高的路径更容易选择。

蚁群算法利用了这些规则,以一种群体智能的方式搜索解空间。

具体来说,蚁群算法由以下几个步骤组成:1.初始化:定义问题的解空间和初试信息素浓度。

解空间可以是任何基于排列、图形或其他对象的集合,例如TSP问题中的城市序列集合。

信息素浓度矩阵是一个与解空间大小相同的矩阵,用于反映每个解的吸引力。

2.移动规则:蚂蚁在解空间中移动的规则。

通常规则包括根据当前解和信息素浓度选择下一步解以及更新当前解的信息素浓度。

3.信息素更新:蚁群中的蚂蚁经过路径后,更新路径上的信息素浓度。

通常信息素浓度的更新涉及一个挥发系数和一个信息素增量。

4.终止条件:确定蚁群算法的运行时间,例如最大迭代次数或达到特定解的准确度。

蚁群算法是一种群体智能的方法,每只蚂蚁只能看到局部的解。

通过信息素的释放和更新,蚁群最终能够找到全局最优解。

二、蚁群算法的应用案例蚁群算法最常用于解决组合优化问题,例如TSP问题、车辆路径问题和任务分配问题。

下面将介绍蚁群算法在TSP问题和车辆路径问题中的应用。

1. TSP问题TSP问题是一个NP难问题,是指在旅行时,如何有效地走遍所有篮子,使得总的旅行距离最小。

蚁群算法是适用于TSP问题的一种有效的算法。

在每一代,蚂蚁会在城市之间移动,假设当前城市为i,则下一个选择的城市j是基于概率函数计算得到的。

概率函数考虑了当前城市的信息素浓度以及城市之间的距离。

每条路径释放的信息素浓度大小根据路径长度而定。

这样,蚂蚁可以在TSP问题上找到最优解。

2.车辆路径问题车辆路径问题是指在有限时间内如何合理地分配车辆到不同的客户,以最小化送货时间和车辆的旅行距离。

蚁群算法

蚁群算法

4.蚁群算法应用
信息素更新规则
1.蚁群算法简述 2.蚁群算法原理
最大最小蚂蚁系统
3.蚁群算法改进
4.蚁群算法应用
最大最小蚂蚁系统(MAX-MIN Ant System,MMAS)在基本AS算法的基础 上进行了四项改进: (1)只允许迭代最优蚂蚁(在本次迭代构建出最短路径的蚂蚁),或者至今 最优蚂蚁释放信息素。(迭代最优更新规则和至今最优更新规则在MMAS 中会被交替使用)
p( B) 0.033/(0.033 0.3 0.075) 0.081 p(C ) 0.3 /(0.033 0.3 0.075) 0.74 p( D) 0.075 /(0.033 0.3 0.075) 0.18
用轮盘赌法则选择下城市。假设产生的 随机数q=random(0,1)=0.05,则蚂蚁1将会 选择城市B。 用同样的方法为蚂蚁2和3选择下一访问 城市,假设蚂蚁2选择城市D,蚂蚁3选择城 市A。
蚁群算法
1.蚁群算法简述 2.蚁群算法原理 3.蚁群算法改进 4.蚁群算法应用
1.蚁群算法简述 2.蚁群算法原理
3.蚁群算法改进
4.蚁群算法应用


蚁群算法(ant colony optimization, ACO),又称蚂蚁 算法,是一种用来在图中寻找优 化路径的机率型算法。 由Marco Dorigo于1992年在他 的博士论文中提出,其灵感来源 于蚂蚁在寻找食物过程中发现路 径的行为
4.蚁群算法应用
例给出用蚁群算法求解一个四城市的TSP 3 1 2 3 5 4 W dij 1 5 2 2 4 2
假设蚂蚁种群的规模m=3,参数a=1,b=2,r=0.5。 解:
满足结束条件?

蚁群算法的基本原理

蚁群算法的基本原理

蚁群算法的基本原理蚁群算法 (Ant Colony Optimization, ACO) 是一种基于群体智能的优化算法,模拟了蚂蚁在寻找食物时候的行为,被广泛应用于求解组合优化问题、路径规划等领域。

蚁群算法的基本思路蚁群算法的基本思路是通过模拟蚂蚁在寻找食物的过程中释放信息素来获取全局最优解。

具体过程如下:1.初始化信息素: 首先,需要在所有可行解的路径上放置一些信息素。

在开始时,信息素值可以选择为等量的值或一些默认值。

2.蚁群搜索: 一开始,所有的蚂蚁都分别随机选择一个节点作为起点,并开始在网络中搜索。

蚂蚁行动的过程中,会根据路径上信息素浓度的大小来选择下一步的方向。

同时,每只蚂蚁都会记录其所经过的路径和信息素值。

3.信息素更新: 每只蚂蚁到达终点之后,计算其所经过路径的费用,然后根据一定的规则更新路径上的信息素。

较优的路径上将会添加更多的信息素,使下一次蚂蚁选择该路径的概率更大。

4.重复搜索: 重复上面的步骤,直到满足一个停止条件为止。

一种常见的停止条件是达到预定的迭代次数。

蚁群算法的优势蚁群算法在解决组合优化问题时,具有以下的优势:1.全局优化能力极强: 因为每只蚂蚁都只关注自己所经过的路径上的信息素值,所以可以同时搜索并更新多个路径,从而有可能找到全局最优解。

2.能够避免陷入局部最优: 蚁群算法可以通过信息素的挥发、说长存、信息素值的启发式更新等手段来避免陷入局部最优解。

3.易于扩展和并行化: 蚁群算法通常是一种并行的算法,可以很轻松地应用于分布式计算环境中。

蚁群算法的应用蚁群算法在解决组合优化问题、路径规划、调度等方面有着广泛的应用,如下所示:1.旅行商问题: 蚁群算法可以用于解决旅行商问题。

2.线性规划问题: 蚁群算法可以用于求解线性规划问题。

3.路径规划问题: 蚁群算法可以用于车辆路径规划问题。

4.调度问题: 蚁群算法可以用于作业车间调度问题。

蚁群算法是一种基于群体智能的优化算法,模拟了蚂蚁在寻找食物时候的行为。

蚁群算法基本原理

蚁群算法基本原理

蚁群算法基本原理
蚁群算法(Ant Colony Algorithm)是一种基于模拟蚁群行为的优化算法,用于解决复杂的优化问题。

其原理是模拟蚂蚁寻找食物的行为,在寻找过程中通过信息素来引导蚂蚁探索最优解。

基本流程:
1. 初始化:将蚂蚁随机分散在问题空间中,每只蚂蚁都随机选择一个起点。

2. 蚂蚁搜索:每只蚂蚁根据一定的概率选择下一个节点,概率与当前节点的信息素有关,如果信息素较高则该节点被选中的概率较大。

3. 信息素更新:每只蚂蚁在搜索过程中会留下一定的信息素,当搜索完成后,信息素会根据一定的规则进行更新,具体规则可以为:信息素浓度与路径长度成反比例关系,或者信息素挥发速度固定。

4. 最优解记录:当所有蚂蚁完成搜索后,从它们所走过的路径中选择获得最优解,并将该路径上的信息素浓度进行更新。

5. 重复搜索:重复上述所有步骤,直到达到设定的迭代次数或者满足终止条件。

蚁群算法基本原理就是通过模拟蚁群行为,通过信息素的引导来搜索最优解。


实际应用中,蚁群算法可以用于解决诸如旅行商问题、作业调度问题、路径规划问题、图像分割问题等优化问题。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TSP问题表示为一个N个城市的有向图G =(N,A), 其中
N = {1, 2,..., n} A = {(i , j ) | i, j ∈ N }
城市之间距离
(dij ) n×n
f (w) =
目标函数为
∑d
l =1
n
il −1 i, l
其中
w = (i1 , i2 , " , in )
= i1

为城市1,2,…n的
7.1 蚁群优化算法起源
20世纪50年代中期创立了仿生学,人们从生物进化的机理中 受到启发。提出了许多用以解决复杂优化问题的新方法,如进 化规划、进化策略、遗传算法等,这些算法成功地解决了一些 实际问题。




1991年 意大利米兰理学院 M. Dorigo 提出Ant System, 用于求解TSP等组合优化问题。 1995年 Gramdardella和Dorigo提出Ant-Q算法,建 立了AS和Q-learning的联系。 1996年 二人又提出Ant Colony System 1997年 有人提出Max-Min Ant System 1999年 Dorigo等人把先前各种算法归结为Ant Colony Optimization meta-heuristic的统一框架下, 给出抽象而规范的算法描述. 目前,被较广泛的应用
•随机比例规则
⎧ ⎡τ (t ) ⎤α × ⎡η (t ) ⎤ β ⎪ ⎣ ij ⎦ ⎣ ij ⎦ α β ⎪ Pijk (t ) = ⎨ ∑ [τ ik (t ) ] × [ηik (t ) ] ⎪ k∈allowedk ⎪ 0 ⎩ if others j ∈ allowed k
z i、j分别为起点和终点; z ηij = 1 / d ij 为能见度,是两点i、j路距离的倒数; z
一个排列, i n +1
7.2 蚁群优化算法的基本流程

TSP问题的人工蚁群算法中,假设m只蚂蚁在图的相邻节点间移 动,从而协作异步地得到问题的解。每只蚂蚁的一步转移概率由 图中的每条边上的两类参数决定:1 信息素值也称信息素痕迹。2 可见度,即先验值。 信息素的更新方式有2种,一是挥发,也就是所有路径上的信息素 以一定的比率进行减少,模拟自然蚁群的信息素随时间挥发的过 程;二是增强,给评价值“好”(有蚂蚁走过)的边增加信息素。 蚂蚁向下一个目标的运动是通过一个随机原则来实现的,也就是 运用当前所在节点存储的信息,计算出下一步可达节点的概率, 并按此概率实现一步移动,逐此往复,越来越接近最优解。 蚂蚁在寻找过程中,或者找到一个解后,会评估该解或解的一部 分的优化程度,并把评价信息保存在相关连接的信息素中。



7.2 蚁群优化算法的基本流程
AS算法对TSP的求解有两大步骤:路径构建和信息素更新 1. 路径构建 每个蚂蚁都随机选择一个城市作为其出发城市,并维护 一个路径记忆向量,用来存放该蚂蚁依次经过的城市。 蚂蚁在构建路径的每一步中,按照一个随机比例规则选 择下一个要到达的城市。
7.2 蚁群优化算法的基本流程
7.1 简化的蚂蚁寻食过程
假设蚂蚁每经过一处所留下的信息素为一个单位,则经过36个时间单 位后,所有开始一起出发的蚂蚁都经过不同路径从D点取得了食物,此时 ABD的路线往返了2趟,每一处的信息素为4个单位,而 ACD的路线往返 了一趟,每一处的信息素为2个单位,其比值为2:1。 寻找食物的过程继续进行,则按信息素的指导,蚁群在ABD路线上增 派一只蚂蚁(共2只),而ACD路线上仍然为一只蚂蚁。再经过36个时间 单位后,两条线路上的信息素单位积累为12和4,比值为3:1。 若按以上规则继续,蚁群在ABD路线上再增派一只蚂蚁(共3只), 而ACD路线上仍然为一只蚂蚁。再经过36个时间单位后,两条线路上的 信息素单位积累为24和6,比值为4:1。 若继续进行,则按信息素的指导,最终所有的蚂蚁会放弃ACD路线, 而都选择ABD路线。这也就是前面所提到的正反馈效应。



7.1 蚁群算法原理


蚁群是如何完成这些复杂的任务的呢? 人们经过 大量研究发现,蚂蚁个体之间是通过一种称之为外 激素(pheromone) 的物质进行信息传递. 从而能相 互协作,完成复杂的任务. 蚁群之所以表现出复杂有序的行为,个体之间的信 息交流与相互协作起着重要的作用.
7.1 蚁群算法原理

人工蚁群选择下一条路径的时候是按一定算法规律有 意识地寻找最短路径,而不是盲目的。例如在TSP问 题中,可以预先知道当前城市到下一个目的地的距离。
7.1 自然蚁群与人工蚁群算法
蚁群觅食 蚁群 觅食空间 信息素 蚁群优化算法 搜索空间的一组有效解(表现为种群规模N) 问题的搜索空间(表现为维数D) 信息素浓度变量
7.2 蚁群优化算法的基本流程
应用举例
四个城市的TSP问题,距离矩阵和城市图示如下:
⎛0 ⎜ 3 ⎜ D = (dij ) = ⎜1 ⎜ ⎝2 3 1 2⎞ ⎟ 0 5 4⎟ 5 0 2⎟ ⎟ 4 2 0⎠
A D
C
B
7.2 蚁群优化算法的基本流程
假设共m=3只蚂蚁,参数 α=1,β=2,ρ=0.5
7.1 简化的蚂蚁寻食过程
蚂蚁从A点出发,速度相同,食物在D点,可能随机选择路线ABD或 ACD。假设初始时每条分配路线一只蚂蚁,每个时间单位行走一步, 本图为经过9个时间单位时的情形:走ABD的蚂蚁到达终点,而走 ACD的蚂蚁刚好走到C点,为一半路程。
7.1 简化的蚂蚁寻食过程
本图为从开始算起,经过18个时间单位时的情形:走ABD的蚂蚁到 达终点后得到食物又返回了起点A,而走ACD的蚂蚁刚好走到D点。
Dorigo
7.1 蚁群优化算法应用领域

蚁群优化算法自1991年由Dorigo提出并应用于TSP问题 以来,已经发展了近20年。 具有鲁棒性强、全局搜索、并行分布式计算、易与其他 问题结合等优点 应用领域不断扩张,如车间调度问题、车辆路径问题、 分配问题、子集问题、网络路由的组合优化问题,用传统算法难 以求解或者无法求解,各种蚁群算法及其改进版本的出 现,为这些难题提供了有效而高效的手段。
k τ ij (t ) = (1 − ρ )τ ij + ∑ Δτ ij k =1 m
m为蚂蚁个数,0<ρ<=1为信息素的蒸发率,在AS中 k Δτ ij 通常设置为0.5, 为第k只蚂蚁在路径i到j所留下來 的信息素
7.2 蚁群优化算法的基本流程

k Δτ ij 的定义
−1 ⎧ ( C ) k Δτ ij =⎨ k ⎩ 0
7.1 蚁群优化算法起源

蚂蚁觅食


蚂蚁没有发育完全的视觉感知系统,甚至很多种类完全没有视 觉,他们在寻找食物的过程中是如何选择路径的呢? 蚂蚁往往像军队般有纪律、有秩序的搬运食物,他们是通过什么 方式进行群体间的交流协作呢? 大部分的蚂蚁都是按照途中的最近的路线走,小小的蚂蚁是如何 有这么高的智能的呢?
if the k th ant traverses (i, j ) others
Ck 是第k只蚂蚁走完整条路径后所得到的总路径长度
7.2 蚁群优化算法的基本流程
信息素更新的作用
1. 信息素挥发(evaporation) 信息素痕迹的挥发过程是每个连接上的 信息素痕迹的浓度自动逐渐减弱的过程,这个挥发过程主要用于避 免算法过快地向局部最优区域集中,有助于搜索区域的扩展。 2. 信息素增强(reinforcement)增强过程是蚁群优化算法中可选的部 分,称为离线更新方式(还有在线更新方式)。这种方式可以实现 由单个蚂蚁无法实现的集中行动。基本蚁群算法的离线更新方式是 在蚁群中的m只蚂蚁全部完成n城市的访问后,统一对残留信息进行 更新处理。


蚂蚁在运动过程中, 能够在它所经过的路径上留下外激素, 而且蚂蚁在运动过程中能够感知外激素的存在及其强度, 并以此指导自己的运动方向, 蚂蚁倾向于朝着外激素强度 高的方向移动. 由大量蚂蚁组成的蚁群的集体行为便表现出一种信息正反 馈现象: 某一路径上走过的蚂蚁越多,则后来者选择该路径 的概率就越大. 蚂蚁个体之间就是通过这种信息的交流达 到搜索食物的目的。
步骤1 初始化
首先使用贪婪算法得到路径的(ACDBA), 则 Cnn=1+2+4+3=10,求得τ0=m/Cnn=0.3
⎛ 0 0.3 0.3 0.3 ⎞ ⎜ ⎟ 0.3 0 0.3 0.3 ⎟ ⎜ τ (0) = (τ ij (0)) = ⎜ 0.3 0.3 0 0.3 ⎟ ⎜ ⎟ ⎝ 0.3 0.3 0.3 0 ⎠
7.1 简化的蚂蚁寻食过程
食物 食物 食物
巢穴
巢穴
巢穴
7.1 简化的蚂蚁寻食过程
7.1 自然蚁群与人工蚁群算法


基于以上蚁群寻找食物时的最优路径选择问题,可以构造 人工蚁群,来解决最优化问题,如TSP问题。 人工蚁群中把具有简单功能的工作单元看作蚂蚁。二者的 相似之处在于都是优先选择信息素浓度大的路径。较短路 径的信息素浓度高,所以能够最终被所有蚂蚁选择,也就 是最终的优化结果。 人工蚁群和自然蚁群的区别: 人工蚁群有一定的记忆能力,能够记忆已经访问过的 节点;
蚁巢到食物的一条路径 一个有效解 找到的最短路径 问题的最优解
7.2 蚁群优化算法的基本流程
蚂蚁系统(Ant System, AS)

蚂蚁系统是以TSP作为应用实例提出的,是最基本的 ACO算法,比较易于学习和掌握。 本节将以AS求解TSP问题的基本流程为例描述蚁群优 化算法的工作机制。

7.2 蚁群优化算法的基本流程
智能算法
第七章:蚁群算法 谷俊峰
工业装备结构分析国家重点实验室 工程力学系 运载工程与力学学部
提纲
7.1 蚁群优化算法概述 7.2 蚁群优化算法的实现 7.3 蚁群优化算法的研究现状 7.4 蚁群优化算法——技术问题 7.5 蚁群优化算法应用现状
相关文档
最新文档