2015.2.8--记录我的机器学习之路--现代启发式算法之蚁群算法

蚁群算法


对于经典的模型算法,已有太多前人为我们写下各种攻略,我就先整理下我在学习过程中查阅的并觉得讲解得不错的文章吧,之后再慢慢补充我自己反思之后的体会~ —————————————————————————————————————————————————————————————————————————

基于蚁群算法求解求解TSP问题(JAVA)这篇文章以TSP为例讲解蚁群算法比较清晰易懂,加之,文中的代码和数据测试均是正确可用,代码也比较简单易读,对初学者是比较合适的,唯一不足的就是在介绍如何为蚂蚁选择下一步的城市,以及信息素的挥发,增益的公式解释上不够清楚,这个在
蚁群算法java实现以及TSP问题蚁群算法求解中有明确的公式及解释,配合这两者,再去看看代码,应该就能一目了然了。

———————————————-后续————————————————
蚁群算法的笔者理解
一、综述
蚁群算法的目的是在图中寻找较好的优化路径(即问题的一个较好的解),因为蚁群算法没有打算求得整个解空间中的全局最优解,而是用类似不断反复做模拟试验的方式,通过利用之前好的实验结果的试验的经验,而引导之后的模拟实验会更可能朝着有更好实验结果方向搜索,因而整个算法能在较短时间内得到“不错”的解;
二、使用范围
试想一下,如果一个问题能够在较短时间内求到精确解,我们怎么可能接受只求得一个“不错”的解,由此可见,蚁群算法应用的场景往往都是一些优化目标很难求得或者在有限时间内很难求得,所以才会退而求其次在较短时间内求得一个“不错”的解,比如NP完全问题TSP。
三、蚁群算法思想描述
算法的思想来源于模拟自然界蚂蚁群觅食找寻路径,假设你的蚁群有n只蚂蚁,你想知道从a地点到b地点最近的路径,现在通过让这些蚂蚁不断地去从a走到b,并且在它走过的路径的每一步中留下信息,使得之后的蚂蚁在选择路径提供信息,例如:这里你希望蚂蚁找到的路径是长度最短的,那么就可以设定,蚂蚁每次完成从a到b行走的路径长度越短,每一步中留下的信息量越多;而蚂蚁每一次选择下一步的路径时,留下信息量多的路径,就更可能被选中,那么这样不断地让蚂蚁选择从a到b的路径过程中,长度越短的下一步路径,就越来越容易被之后的蚂蚁选中;这样经过若干轮的蚂蚁重复试验,记录试验中最佳的目标,便得到一个不错的解。
四、
总的来说,蚁群算法与遗传算法有类似的地方,反复的实验,之前的实验根据优化目标的引导留下信息,为之后的实验在选择时提供方向,从而达到让实验更可能让优化目标更好的方向发展(遗传算法则是让前代的优良基因,得以保留,并与其它优良个体交叉组合,这样就可能让后代的基因更符合优化目标)。
当然这里略去了一些细节:比如蚁群算法中的之前实验留下的信息量会随着时间不断“挥发”掉;遗传算法中除了有基因交叉外,还有基因突变来产生新的性状)。
虽然蚁群和遗传的思想很简单,但是确是非常好的框架,我们可以不断对目标的抽象,变换,进而应用在各种场景之中。




笔者才疏学浅,有理解的不到位的地方,还希望高人批评指出,不甚感激。



    原文作者:启发式算法
    原文地址: https://blog.csdn.net/jaybeat/article/details/43635775
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞