基于搜索集中度和动态信息素更新的蚁群算法优化方法与流程

文档序号:16631504发布日期:2019-01-16 06:37阅读:319来源:国知局
基于搜索集中度和动态信息素更新的蚁群算法优化方法与流程

本发明涉及一种基于搜索集中度和动态信息素更新的蚁群算法优化方法,属于人工智能领域。



背景技术:

随着科学技术的飞速发展,传统的基于对象精确模型的控制理论与使用确定性的优化算法都遇到了极大的困难。于是人们就从模拟人的智能控制行为得到启示,将人工智能同自动控制理论相结合,创立了智能控制理论;人们从生物进化及仿生学中受到启发,提出许多启发式的智能优化方法。如禁忌算法、神经网络算法、遗传算法、免疫算法及蚁群算法等,它们为解决许多复杂优化问题提供了崭新的途径。

其中,蚁群算法是模拟真实蚁群觅食过程寻求最短路径的原理,蚁群算法吸收了蚂蚁群体行为的典型特征:一是能察觉小范围区域内状况,并判断出是否有食物或其他同类的信息素轨迹;二是能释放自己的信息素;三是所遗留的信息素数量会随时间而逐步减少。蚂蚁算法通过侯选解组织群体的进化过程来寻求最优解,这一过程包括适应阶段和协作阶段。在适应阶段,各侯选解根据积累的信息不断调整自身的结构;在协作阶段各侯选解间通过信息交流,以便产生性能更好的解。

蚁群算法具有分布式计算,无中心控制和分布式个体之间间接通信的特征,易于与其它优化算法相结合,蚁群算法通过简单个体之间的协作表现出了求解复杂问题的能力,已被广泛应用于求解优化问题。蚁群算法相对易于实现,且算法中并不涉及复杂的数学操作,其处理过程对计算机的软硬件要求也不高,因此对它的研究在理论和实践中都具有重要的意义。但同时,蚁群算法也存在着某些局限性,例如,初始阶段信息素的匮乏导致多数蚂蚁的搜索具有盲目性,较长时间内的信息素积累才会对选路具有指导性作用,导致系统运行周期过长,收敛速度慢。此外随着问题规模的扩大,蚂蚁搜索进行到一定程度后,个体发现的解多数集中在某条路径上,且在正反馈的作用下,这些路径上的信息素会进一步增多,阻止了对解空间的进一步搜索,最终陷入局部最优解和出现停滞现象。



技术实现要素:

本发明的目的是:针对现有算法存在的不足之处,本文在tsp问题的基础上,提出了一种基于搜索集中度和动态信息素更新的蚁群算法优化方法,该方法在蚂蚁选择路径阶段不是将全部或者确定数值的节点列入备选节点列表,而是根据蚂蚁走出解的均匀度自适应的扩大或缩小节点的选择范围,大大提高了搜索效率,同时采用动态信息素更新策略,可充分利用蚂蚁之前的寻路经验对信息素做动态调整,使整个蚁群向着最优解的方向靠拢,最终达到全局最优。

本发明采用的技术方案是:一种基于搜索集中度和动态信息素更新的蚁群算法优化方法,包括如下步骤:

step1、初始化tsp问题定义数据,初始化蚁群参数;

step2、随机选择每只蚂蚁的起始节点,每只蚂蚁从起始节点开始搜索遍历;

step3、判断当前迭代次数是否大于1,如果不大于1,则跳转至步骤4;否则,利用搜索集中度因子计算当前蚂蚁可选节点数,并将由当前节点到其他可选节点的距离按由小到大的顺序排列,依次选出v个节点作为本次迭代筛选后的可选节点,接着转向步骤4;

step4、蚂蚁k在可选节点范围内按转移概率公式选择转移概率最大的节点作为下一节点,并将蚂蚁走过的每个节点记录在搜索禁忌表中;

step5、如果可选节点表中还有未搜索到的节点,则继续执行步骤4,否则转向步骤6;

step6、按信息素更新公式更新各条路径上的信息素浓度;

step7、记录本次迭代的最优解,判断无效迭代次数是否超过限定值,如果是,采用信息素回滚机制;否则直接跳转步骤8;

step8、清空搜索禁忌表,迭代次数加1;

step9、判断当前迭代次数是否达到指定代数或者所求解在若干次迭代中无改进,如果是,则输出所得全局最优解,否则转向步骤2,进行新一轮搜索。

其中,步骤3的具体实现包括以下子步骤:

step3.1、如果当前迭代次数大于1,则设上一次迭代中,从节点i共有r个可到达的节点,我们设这个可到达的节点变量为j(j=1,2,…,r),所经过的这r条路径上的蚂蚁数分别为wi1,wi2,…,wir,节点i为起点,节点i到这r个节点的蚂蚁总数为wi(wi=wi1+wi2+…+wir),记

为节点i的搜索集中度;

step3.2、利用搜索集中度h(i)来确定蚂蚁在本次迭代中可选节点数v,取

step3.3、将由i节点到其他可选r个节点的距离按由小到大的顺序排列,依次选出v个节点作为本次迭代筛选后的节点,之后再利用转移概率选出最终要转移的节点。

步骤4的转移概率公式具体为:

初始时刻,各条路径上的信息素浓度相同,设其值τij(0)=c(c为常数),蚂蚁k(k=1,2,…,m)在运动过程中,根据各条路径上的信息量和长度来决定转移方向,pijk(t)表示在t时刻蚂蚁k从节点i转移到节点j的概率,其计算公式如(3)所示:

τij(t)表示在t时刻节点i和j之间的信息素浓度,τis(t)表示在t时刻节点i和s之间的信息素浓度;ηij(t)为启发函数,其值为节点i和j之间距离dij的倒数,ηis(t)为启发函数,其值为节点i和s之间距离dis的倒数;α为信息素的相对重要程度;β为期望值的相对重要程度;allowedk是所有可选的目标节点,即还没有被访问到的节点。

步骤6的信息素更新公式具体为:

蚂蚁完成一次周游后,其走过的路经就是一个解,之前留下的信息素会随着时间的推移逐渐挥发,此时各路径上的信息量要根据式(4)进行调整:

τij(t+n)=(1-ρ)τij(t)+δτij(t)(4)

其中ρ∈(0,1),表示信息量的挥发程度,τij(t)表示在t时刻节点i和j之间的信息素浓度,τij(t+n)表示在t+n时刻节点i和j之间的信息素浓度,信息增量δτij表示为式(5):

δτijk表示本次循环中蚂蚁k在节点i和节点j之间留下的信息量,其计算公式用式(6)表示:

其中,q为常数,nc为迭代次数,lk为蚂蚁k在本次循环中所走过的路径的总长度,lbest为上一次迭代过程中的最优解。

步骤7的信息素回滚机制具体为:

将无效迭代次数定义为:当前的迭代次数与最近一次改进了结果的迭代次数的差值,如果从本次迭代开始,连续迭代c次获得的最优解没有变化,即无效迭代次数大于等于c,则所有路径上的信息素变为最近一次改进结果时的信息素浓度。

本发明的有益效果是:(1)根据上一代蚁群寻找到的路径,在选择策略中引入“搜索集中度”因子,使其可以自适应的调节蚂蚁选择节点的范围;(2)在全局信息素更新阶段,采用动态改变信息素增量的方式缩短了搜索时间;(3)在该方法迭代多次后,最优解没有任何改进时,采用信息素回滚的机制,力图跳出局部极值。通过以上改进之处,本发明在全局搜索能力和运行效率上相比基本蚁群算法有明显提升。

附图说明

图1是本发明基于搜索集中度和动态信息素更新的蚁群算法优化方法的总体流程图;

图2是本发明中用到的tsp标准数据集oliver30中的城市坐标点集合;

图3是使用基本蚁群算法的得到的适应度进化曲线图,其中适应度用每次迭代中找到的最短路径长度衡量;

图4是使用本发明得到的适应度进化曲线图,其中适应度用每次迭代中找到的最短路径长度衡量;

图5是本发明最终找到的最短路径回路图(最优解)。

具体实施方式

为了便于理解,下面结合附图和具体实施方式对本发明作进一步的详细说明。

实施例1:如图1-5所示,图1示出了本发明的优化方法流程。在本发明中,我们使用matlab仿真软件进行模拟和运算,如图1所示,基于搜索集中度和动态信息素更新的蚁群算法优化方法首先进行环境建模和初始化,然后进行搜索迭代,在每一轮迭代完成后,统计最优路径信息,经过蚁群的不断优化,最终得到最优解。以下详细描述具体步骤:

step1、初始化tsp问题定义数据,实例采用tsp问题标准数据集oliver30,如图2所示,为各城市的坐标点位置,首先利用各坐标点计算出任意两城市之间的距离放入城市距离矩阵d中;初始化蚁群算法的基本参数,给这些参数一个常数值:蚂蚁数量m,城市数量n,启发因子α和β,挥发系数ρ,迭代次数nc;

step2、随机选择每只蚂蚁的起始城市,每只蚂蚁从起始城市开始搜索遍历;

step3、判断当前迭代次数nc是否大于1,如果不大于1,则跳转至步骤4;否则,利用搜索集中度因子计算当前蚂蚁可选城市数t(具体参照步骤3.1‐3.2),并将由当前城市到其他可选城市的距离按由小到大的顺序排列,依次选出v个城市作为本次迭代筛选后的可选城市,接着转向步骤4;

step3.1、如果当前迭代次数大于1,则设上一次迭代中,从节点i共有r个可到达的节点,我们设这个可到达的节点变量为j(j=1,2,…,r),所经过的这r条路径上的蚂蚁数分别为wi1,wi2,…,wir,节点i为起点,节点i到这r个节点的蚂蚁总数为wi(wi=wi1+wi2+…+wir),记

为城市i的搜索集中度;

step3.2、利用搜索集中度h(i)来确定蚂蚁在本次迭代中可选城市数v,取

step3.3、将由i城市到其他可选r个城市的距离按由小到大的顺序排列,依次选出v个城市作为本次迭代筛选后的城市;

step4、蚂蚁k在可选城市范围内按转移概率公式选择转移概率最大的城市作为下一城市,在t时刻第k只蚂蚁从城市i转移到城市j的转移概率为:

其中,τij(t)表示在t时刻路径(i,j)上的信息素浓度(τis(t)同理);ηij(t)表示路径(i,j)上的能见度启发函数,表征蚂蚁从城市i转移到城市j的启发程度,其值为城市i和j之间距离dij的倒数(ηis(t)同理);初始时刻,各条路径上的信息素浓度相同,设其值τij(0)=c(c为常数);α为信息素的相对重要程度,表征之前积累下的信息素强度对蚂蚁下一步所走城市的影响程度;β为期望值的相对重要程度,表征启发信息对蚂蚁下一步所走位置的相对重要程度;allowedk是表示第k只蚂蚁下一步所有可选择的位置,即还没有被访问到的城市,allowedk={1,2,…,n}-tabuk,其中tabuk为搜索禁忌表,存放蚂蚁已走过的城市,蚂蚁在下次选择时排除已选位置;

step5、如果可选城市表中还有未搜索到的城市,则继续执行步骤4,直到所有蚂蚁都完成城市周游回到初始节点,否则转向步骤6;

step6、对蚂蚁周游得到的各条路径上的信息素浓度进行更新,具体更新公式为:

τij(t+n)=(1-ρ)τij(t)+δτij(t)(4)

其中ρ∈(0,1),表示信息素的挥发程度,蚂蚁完成一次周游后,其走过的路经就是一个解,之前留下的信息素会随着时间的推移逐渐挥发;τij(t)表示在t时刻节点i和j之间的信息素浓度,τij(t+n)表示在t+n时刻节点i和j之间的信息素浓度,δτij表示从城市i到城市j的路径上的信息素浓度的增量,具体公式表示为式(5):

δτijk表示本次循环中蚂蚁k在城市i和城市j之间留下的信息量,其计算公式用式(6)表示:

其中,q为常数,nc为迭代次数,lk为蚂蚁k在本次循环中所走过的路径的总长度,lbest为上一次迭代过程中的最优解;

step7、记录本次迭代的最优解,判断无效迭代次数是否超过限定值,如果是,采用信息素回滚机制;否则直接跳转步骤8;

将无效迭代次数定义为:当前的迭代次数与最近一次改进了结果的迭代次数的差值。如果从本次迭代开始,连续迭代c次获得的最优解没有变化,即无效迭代次数大于等于c,则所有路径上的信息素变为最近一次改进结果时的信息素浓度,此称之为信息素回滚机制;

step8、清空搜索禁忌表tabuk,迭代次数加1;

step9、判断当前迭代次数是否达到最大迭代次数(在本实例中,最大迭代次数为100),如果是,则输出所得全局最优解,否则转向步骤2,进行新一轮最优解搜索。

通过仿真实验,对采用本发明的逸群算法优化方法和采用基本蚁群算法应用于tsp问题,从收敛时间和最优解精度上进行比较,仿真结果分别如图3-5所示。图3为本发明方法的适应度进化曲线;图4为基本蚁群算法的适应度进化曲线;图5为本发明最终找到的实例的最短路径图;从图3和图4对比可以看出本发明对比基本蚁群算法收敛速度明显要快,而且最终收敛精度也明显要好,经过多次实验对比,本发明多次达到已知最优解,而基本蚁群算法偶尔几次达到最优解,但大多陷入了局部最优解中难以跳出。本发明在每次迭代中利用集中度对较短路径集合进行划分,同时利用信息素增量有效调节较优解和较差解的信息素浓度,并且保证当前最优解路径上的信息素不会无限制增长,此外信息素回滚也可使算法具备较强的纠错性。仿真实验表明,改进的蚁群算法优化方法在收敛时间和最优解精度均优于基本蚁群算法。

以上结合附图对本发明的具体实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1