你好,我是goldsunC
让我们一起进步吧!
蚁群算法
蚁群算法,由Marco Dorigo于1992年在他的博士论文中提出,是一种灵感来源于蚂蚁在寻找食物过程中发现路径的行为,用来在图中寻找优化路径的算法。
算法原理
蚂蚁在运动的过程中,会在它所经过的路径上留下一种称之为信息素的物质进行信息传递,而且蚂蚁在运动的过程中能够感知这种物质,并以此指导自己的运动方向,其中信息素浓度与路径长度成反比。 假如此路径已被前蚂蚁走过已经留下了信息素,当后来的蚂蚁经过此位置时,会更可能选择信息素较高的路径,注意是可能不是一定,只是概率更大,然后大量蚂蚁组成的群体行为便展现出一种信息正反馈的现象,某一路径上走的蚂蚁越多,后来者选择该路径概率越大,而信息素浓度与路径长度成反比,最终出现最优路径的概率也越大。
在这里各细节不逐一介绍,在后文的算法步骤种涉及的每一个对象都会详细介绍。
算法特点其原理是一种正反馈机制或者称为增强型学习系统;它通过最优路径上蚂蚁数量增加导致后来蚂蚁选择该路径概率增大达到最终收敛于最优路径。
它是一种通用型随机优化方法,它吸收了蚂蚁的行为特征,它使用人工蚂蚁进行仿真。
它是一种分布式的优化方法,多个体同时进行搜索,具有本质并行性,大大提高了算法的搜索效率。
它是一种启发式算法,不容易陷入局部最优而更容易搜索到全局最优。
它是一种全局优化的方法,不仅可以用于求解单目标优化问题,而且可用于求解多目标优化问题。
算法步骤
以TSP问题为例。即在有限个城市内找到路径最短的距离组合。初始化参数
在计算的开始需要对一些相关的参数进行初始化,如:
蚂蚁数量,既然是蚁群算法,我们肯定要拥有自己的蚁群,由它们对问题的解进行搜索,蚂蚁数量根据经验一般设定为目标数的1.5倍比较好,当蚂蚁数量较多时,所有蚂蚁不容易收敛于一个解,而数量较少时,解的效果可能不会让人满意。
信息素重要程度因子,这个参数是指在蚂蚁移动的过程种产生的信息素对蚂蚁的影响程度,比较好理解,参数越大,蚂蚁选择以前走过路径的可能性越大,会使蚁群更容易的收敛,导致搜索的随机性减弱不利于寻找全局最优解,过小的话就没有了信息素的意义,此参数一般为[0,5]之间比较好。
启发函数重要程度因子,它反映了启发式信息在指导蚁群在路径搜索中的相对重要程度,其大小反映的是蚁群寻优过程种先验性、确定性因素作用的强度。当它越大也是更容易导致收敛过快。一般设置为[0,5]。
信息素挥发因子,它是指信息素的消失水平,它的大小直接关系到算法的全局搜索能力和收敛速度,过大导致信息素挥发过快,一些较好的路径会被排除,过小导致路径残留信息素较多,影响算法效率。一般设置为[0.2,0.5]。
信息素常量,它是指