开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第三十天,点击查看活动详情
总结:此文为12月更文计划第三十天第四十五篇。
1 蚁群算法,旅行商问题
蚁群算法(Ant Colony Optimization,ACO)是一种基于种群寻优的启发式搜索算法,有意大利学者 M.Dorigo 等人于 1991 年首先提出。该算法受到自然界真实蚁群集体在觅食过程中行为的启发,利用真实蚁 群通过个体间的信息传递、搜索从蚁穴到食物间的最短路径等集体寻优特征,来解决一些离散系统优化中的 困难问题。
经过观察发现,蚂蚁在寻找食物的过程中,会在它所经过的路径上留下一种被称为信息素的化学物质,信 息素能够沉积在路径上,并且随着时间逐步挥发。在蚂蚁的觅食过程中,同一蚁群中的其他蚂蚁能够感知到这 种物质的存在及其强度,后续的蚂蚁会根据信息素浓度的高低来选择自己的行动方向,蚂蚁总会倾向于向信 息素浓度高的方向行进,而蚂蚁在行进过程中留下的信息素又会对原有的信息素浓度予以加强,因此,经过蚂 蚁越多的路径上的信息素浓度会越强,而后续的蚂蚁选择该路径的可能性就越大。通常在单位时间内,越短的 路径会被越多的蚂蚁所访问,该路径上的信息素强度也越来越强,因此,后续的蚂蚁选择该短路径的概率也就 越大。经过一段时间的搜索后,所有的蚂蚁都将选择这条最短的路径,也就是说,当蚁巢与食物之间存在多条 路径时,整个蚁群能够通过搜索蚂蚁个体留下的信息素痕迹,寻找到蚁巢和食物之间的最短路径。
旅行商问题(Travelling Salesman Problem, TSP)又称旅行推销员问题,是数学领域的著名问题之一。假 设有一个旅行商人要拜访 N 个城市,每个城市只能拜访一次,而最后要回到原来的城市。旅行商问题的内容 便是如何选择拜访城市的路线,使得总的路程最小。这里城市之间的位置坐标使用 Berlin52 数据集。
2 蚁群算法
2.1 蚁群算法编程设计
蚁群算法中,蚂蚁个体作为每一个优化问题的可行解。首先随机生成初始种群,包括确定解的个数、信息 素挥发系数、构造解的结构等。然后构造蚁群算法所特有的信息素矩阵每只妈蚁执行蚂蚊移动算子后,对整个 群体的蚂蚁做一评价,记录最优的蚂蚁。之后算法根据信息素更新算子更新信息素矩阵,至此种群的一次选代 过程完成。整个蚂蚁群体执行一定次数的选代后退出循环、输出最优解。
( 1)蚂蚁个体。每只蚂蚁称为一个单独的个体,在算法中作为一个问题的解。
( 2)蚂蚁群体。一定数量的蚂蚁个体组合在一起构成一个群体,蚂蚁是群体的基本单位。
( 3)群体规模。群体中个体数目的总和称为群体规模,又叫种群大小。
( 4)信息素。信息素是蚂蚁在所经过的路径上所释放的一种化学物质,后来的蚂蚁根据路径上的信息素的
强度选择路径。
( 5)蚂蚁移动算子。蚂蚁在寻优过程中通过蚂蚁移动算子来改善基因位,向最优解靠近。
( 6)信息素更新算子。蚂蚁算法中,种群在每次迭代过程中,通过信息素更新算子来改变信息素矩阵,为 蚂蚁移动算子提供基础。